XlogMiner 增强功能发布并更名为 WalMiner

发布于 2019-02-22 由 Highgo Software
相关开源项目

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 更改后无法在其他数据库中解析的错误。

WalMiner 带来的新限制

Walminer 可以完全解析给定 wal 中第一个检查点之后的所有 wal 记录。第一个检查点之前的删除和更新记录可能无法解析,如下所示

UPDATE "public"."t1" SET VALUES(NULL) (NOTICE:wal 不够.);

如果您需要解析此记录,只需添加一些较早的 wal 段即可。

具体用法请查看开源代码中的 README.EN.MD。

限制

  1. 此版本仅解析 DML 语句,不处理 DDL 语句。未来的更改:DDL 语句的解析已添加到待办事项列表中,可能会逐步支持各种 DDL 语句。
  2. 当执行以下 DDL 相关操作时,将不会解析出 DML 语句:删除/截断表、表空间修改和列类型修改等。回复:建议保存数据字典,以确保在执行表结构更改之前可以解析历史 wal 日志。未来的更改:现在我已经添加了在 walminer 中保存数据字典的功能。
  3. 解析结果取决于最新的数据库字典。例如,在 user1 创建表 t1 后,表所有者被修改为 user2,那么所有与表 t1 相关的解析结果都将标记为 user2。回复:建议保存数据字典,以确保在执行表结构更改之前可以解析历史 wal 日志。未来的更改:现在我已经添加了在 walminer 中保存数据字典的功能。
  4. "ctid" 属性是“当时”更改的值。如果由于 vacuum 或其他操作导致 "ctid" 发生更改,则此值将不准确。我们需要使用此值来确定数据行重复时对应的撤销元组,但这并不意味着您可以直接执行此类撤销语句。
  5. 如果执行了 DDL 语句 "drop",则在此 DDL 执行之前,所有相关的列值都将被解码为 "encode('AD976BC56F',hex)"。
  6. 只能解析与数据字典时间线一致的 wal 文件
  7. WalMiner 是一个独立的产品,尚未经过全面测试。

联系我

如果您发现错误或有好的建议,可以通过电子邮件(lchch1990@sina.cn)联系我。