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使用相关推荐

  1. 使用pg_resetwal时空穿梭找回“幽灵”元组

    pg_resetwal工具是个很有用的工具,我们使用它来修改控制文件的一些信息,可能用的最多的地方是应急清理wal日志并更新lsn信息.但是pg_resetwal这个功能你可能没听说过,可以使用pg_ ...

  2. PostgreSQL最后的救命稻草 — pg_resetwal

    pg_resetwal- 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本:PostgreSQL 12/13/14/15 语法 pg_resetwal [ -f | --for ...

  3. 利用pg_resetwal回到过去

    利用pg_resetwal回到过去 PostgreSQL中提供了一个pg_resetwal(9.6及以前版本叫pg_resetxlog)工具命令,它的本职工作是清理不需要的WAL文件, 但除此以外还能 ...

  4. PostgreSQL pg_resetwal处理机制

    pg_resetwal的参数 ControlFile结构及pg_resetwal参数影响的字段 static struct option long_options[] = {{"commit ...

  5. Postgres使用pg_resetwal命令修改wal日志文件大小的方法

    pg_wal日志文件默认大小是16MB,参见参数wal_segment_size PostgreSQL 11 版本的一个重要调整是支持 initdb 和 pg_resetwal 修改 WAL 文件大小 ...

  6. oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件

    原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...

  7. 基于PostgreSQL流复制的容灾库架构设想及实现

    点击上方"蓝字" 关注我们,享更多干货! 一.前言 这几天在对PostgreSQL流复制的架构进行深入研究,其中一个关键的参数:recovery_min_apply_delay引起 ...

  8. 从Oracle到PostgreSQL:最全控制文件

    墨墨导读:本文介绍了Oracle和PostgreSQL控制文件基本内容,对如何重建PostgreSQL控制文件进行了详细描述并进行了恢复测试. 控制文件内容 Oracle控制文件内容 从官方文档上可以 ...

  9. PostgreSQL 怎么通过命令来恢复删除的数据

    最近一段工作较忙,更新的速度可能会减慢,敬请见谅,后期采用隔天更新的方式 误删除数据的情况,一般都是通过备份,或日志来进行恢复,当然ORACLE FLASHBACK的模式实际上也是对一定期限的数据进行 ...

最新文章

  1. android 代码获取图片信息吗,Android 通过网络获取图片的代码
  2. 科研|Science回应中国燃料电池研究“造假”:发函重点关注,之前撤稿率100%
  3. Git学习系列之Git基本操作克隆项目(图文详解)
  4. docker源码_使用docker、Jenkins、gitlee、springboot、搭建个人博客网站 并实现CI/CD 外加机器人提醒...
  5. BZOJ 1012 单调队列+二分
  6. Android开发时的多点触控是如何实现的?
  7. 在windows中用 netsh 命令修改ip地址网关和DNS等
  8. Android开发之——统计代码行数
  9. 神舟t6ti-x5刷蓝天新版BIOS教程 可提升0.5G睿频 模具N85xHKx/HJx
  10. ubuntu防火墙安装和设置-ufw
  11. 004--python--华氏温度和摄氏温度的转换
  12. JavaScript 【js】回车键替换成逗号,逗号替换成回车键
  13. 11张网络安全思维导图,快收藏!
  14. 2020陕西初中学业水平计算机,2020年陕西省初中学业水平考试·模拟卷(一)...
  15. 【程序】STM32F407VE单片机通过FSMC驱动Ilitek ILI9325液晶屏以及XPT2046触控芯片
  16. python外星人入侵游戏图片_[Python]简单的外星人入侵游戏
  17. 2015年恢复性运动
  18. 深度学习(Deep Ritz,Galerkin,PINN)求解偏微分方程(PDE)解读
  19. 【三、网络配置与系统管理】
  20. 涿州零基础哪里学计算机,涿州高碑店定兴附近零基础学电脑制图,CAD,3D等

热门文章

  1. oracle9i升11g,手工将oracle9i升到11g
  2. Java工程师工资高吗
  3. html+css+js实现飞机大战小游戏
  4. 13.Redis系列之布隆过滤器
  5. [iOS]UIButton+Badge
  6. 8051单片机外扩ROM
  7. 微信支付 APP端 后端 第一弹 微信下单
  8. 操作系统 --死锁(十)
  9. 解读Unity2018中 ShaderGraph 示例: Procedural
  10. 【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(已经更新完毕)