pg_resetwal使用
pg_resetwal(9.6及之前版本叫pg_resetxlog)是用于清理不需要的WAL文件,还可以用于篡改当前事务ID,可以恢复未被vacuum回收的元组。
语法:
pg_resetwal [OPTION]… DATADIR
参数:
-c, --commit-timestamp-ids=XID,XID
[-D, --pgdata=]DATADIR:数据目录路径
-e, --epoch=XIDEPOCH:epoch xid
-l, --next-wal-file=WALFILE:下一个WAL文件名称
-m, --multixact-ids=MXID,MXID:设置下一个和最老的多事务ID
-n, --dry-run:预执行
-o, --next-oid=OID:设置下一个oid
-O, --multixact-offset=OFFSET:设置下一个多事务偏移量
-V, --version:版本信息
-x, --next-transaction-id=XID:设置下一个事务XID
–wal-segsize=SIZE:WAL segments大小,单位MB
-?, --help:帮助信息
测试:
-- 查看记录的事务号
select xmin,* from aa;xmin | id | province | city
------+----+----------+--------600 | 1 | 广东 | 广州601 | 2 | 广东 | 深圳603 | 4 | 湖南 | 长沙606 | 5 | 四川 | 成都607 | 6 | 湖南 | 怀化627 | 7 | 陕西 | 西安628 | 8 | 河南 | 洛阳629 | 9 | 河南 | 开封637 | 10 | 黑龙江 | 哈尔滨638 | 11 | 黑龙江 | 佳木斯639 | 12 | 甘肃 | 宁夏
(11 rows)select xmin,* from bb;xmin | id
------+----627 | 1627 | 3640 | 7
(3 rows)-- 删除aa表的某条数据
delete from aa where id=7;
DELETE 1-- 停止pg服务
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /data/pg_data/data -l /data/pg_data/log/pg.log stop
waiting for server to shut down.... done
server stopped-- 执行pg_resetwal
./pg_resetwal -D /data/pg_data/data -x 627
Write-ahead log reset-- 查看当前的事务xid
txid_current
--------------627
(1 row)-- 重新启动并查看,可以发现回退到之前xmin之前,影响的整个实例中的所有事务
postgres=# select xmin,* from aa;
-----+----+----------+------600 | 1 | 广东 | 广州601 | 2 | 广东 | 深圳602 | 3 | 广东 | 佛山603 | 4 | 湖南 | 长沙606 | 5 | 四川 | 成都607 | 6 | 湖南 | 怀化624 | | 河南 | 开封627 | 7 | 陕西 | 西安628 | 8 | 河南 | 洛阳
(9 rows)select * from bb;id
----
(0 rows)
预执行信息查看:
./pg_resetwal -D /data/pg_data/data -x 640 -n
Current pg_control values:pg_control version number: 1100
Catalog version number: 201809051
Database system identifier: 7018374463638270579
Latest checkpoint's TimeLineID: 3
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0:629
Latest checkpoint's NextOID: 41209
Latest checkpoint's NextMultiXactId: 1
Latest checkpoint's NextMultiOffset: 0
Latest checkpoint's oldestXID: 561
Latest checkpoint's oldestXID's DB: 13287
Latest checkpoint's oldestActiveXID: 0
Latest checkpoint's oldestMultiXid: 1
Latest checkpoint's oldestMulti's DB: 13287
Latest checkpoint's oldestCommitTsXid:0
Latest checkpoint's newestCommitTsXid:0
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 8192
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1996
Size of a large-object chunk: 2048
Date/time type storage: 64-bit integers
Float4 argument passing: by value
Float8 argument passing: by value
Data page checksum version: 0Values to be changed:First log segment after reset: 00000003000000000000000C
NextXID: 640
OldestXID: 2294967936
OldestXID's DB: 0
pg_resetwal使用相关推荐
- 使用pg_resetwal时空穿梭找回“幽灵”元组
pg_resetwal工具是个很有用的工具,我们使用它来修改控制文件的一些信息,可能用的最多的地方是应急清理wal日志并更新lsn信息.但是pg_resetwal这个功能你可能没听说过,可以使用pg_ ...
- PostgreSQL最后的救命稻草 — pg_resetwal
pg_resetwal- 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本:PostgreSQL 12/13/14/15 语法 pg_resetwal [ -f | --for ...
- 利用pg_resetwal回到过去
利用pg_resetwal回到过去 PostgreSQL中提供了一个pg_resetwal(9.6及以前版本叫pg_resetxlog)工具命令,它的本职工作是清理不需要的WAL文件, 但除此以外还能 ...
- PostgreSQL pg_resetwal处理机制
pg_resetwal的参数 ControlFile结构及pg_resetwal参数影响的字段 static struct option long_options[] = {{"commit ...
- Postgres使用pg_resetwal命令修改wal日志文件大小的方法
pg_wal日志文件默认大小是16MB,参见参数wal_segment_size PostgreSQL 11 版本的一个重要调整是支持 initdb 和 pg_resetwal 修改 WAL 文件大小 ...
- oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件
原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...
- 基于PostgreSQL流复制的容灾库架构设想及实现
点击上方"蓝字" 关注我们,享更多干货! 一.前言 这几天在对PostgreSQL流复制的架构进行深入研究,其中一个关键的参数:recovery_min_apply_delay引起 ...
- 从Oracle到PostgreSQL:最全控制文件
墨墨导读:本文介绍了Oracle和PostgreSQL控制文件基本内容,对如何重建PostgreSQL控制文件进行了详细描述并进行了恢复测试. 控制文件内容 Oracle控制文件内容 从官方文档上可以 ...
- PostgreSQL 怎么通过命令来恢复删除的数据
最近一段工作较忙,更新的速度可能会减慢,敬请见谅,后期采用隔天更新的方式 误删除数据的情况,一般都是通过备份,或日志来进行恢复,当然ORACLE FLASHBACK的模式实际上也是对一定期限的数据进行 ...
最新文章
- android 代码获取图片信息吗,Android 通过网络获取图片的代码
- 科研|Science回应中国燃料电池研究“造假”:发函重点关注,之前撤稿率100%
- Git学习系列之Git基本操作克隆项目(图文详解)
- docker源码_使用docker、Jenkins、gitlee、springboot、搭建个人博客网站 并实现CI/CD 外加机器人提醒...
- BZOJ 1012 单调队列+二分
- Android开发时的多点触控是如何实现的?
- 在windows中用 netsh 命令修改ip地址网关和DNS等
- Android开发之——统计代码行数
- 神舟t6ti-x5刷蓝天新版BIOS教程 可提升0.5G睿频 模具N85xHKx/HJx
- ubuntu防火墙安装和设置-ufw
- 004--python--华氏温度和摄氏温度的转换
- JavaScript 【js】回车键替换成逗号,逗号替换成回车键
- 11张网络安全思维导图,快收藏!
- 2020陕西初中学业水平计算机,2020年陕西省初中学业水平考试·模拟卷(一)...
- 【程序】STM32F407VE单片机通过FSMC驱动Ilitek ILI9325液晶屏以及XPT2046触控芯片
- python外星人入侵游戏图片_[Python]简单的外星人入侵游戏
- 2015年恢复性运动
- 深度学习(Deep Ritz,Galerkin,PINN)求解偏微分方程(PDE)解读
- 【三、网络配置与系统管理】
- 涿州零基础哪里学计算机,涿州高碑店定兴附近零基础学电脑制图,CAD,3D等