XlogMiner 是一个用于解析 PostgreSQL WAL 中已执行 SQL 语句的工具,可以生成相应的撤销 SQL 语句。开源项目地址为 https://github.com/HighgoSoftware/XLogMiner。此版本存在较大的使用限制,需要将 wal level 设置为 logical,并需要将表设置为 IDENTITY FULL 模式。这可能会加剧 wal 的膨胀并降低数据库性能。
为了适应 PG 日志名称的更改,XlogMiner 已重命名为 WalMiner。新的开源地址暂时位于 https://gitee.com/movead/XLogMiner。
旧版工具 xlogminer 的解析源是当前 wal 记录中的“更改数据”。它不从 FPW 中的页面获取数据来解析 wal 记录。
新版 walminer 不仅可以解析当前 wal 记录的 FPW,还可以记录和重放解析过程中出现的所有 FPW。因此,walminer 可以解析低级别的 wal,并且您无需将表设置为 IDENTITY FULL 模式。
此外
1. WalMiner 支持解析最小级别之上的任何 wal 日志级别。
2. 无需将表设置为 IDENTITY FULL 模式。
3. 增强了对系统表修改的 wal 记录的解析能力。
4. 修复了在发生 relfilenode 更改后,在其他数据库中解析失败的 bug。
Walminer 可以完全解析给定 wal 中第一个检查点之后的所有 wal 记录。第一个检查点之前的 delete 和 update 记录可能无法解析,如下所示:
UPDATE "public"."t1" SET VALUES(NULL) (NOTICE:wal is not enought.);
如果您需要解析此记录,只需添加一些更早的 wal 段即可。
具体用法请参见开源代码中的 README.EN.MD。
如果您发现 bug 或有好的建议,可以通过电子邮件 (lchch1990@sina.cn) 与我联系。