如何将PostgreSQL WAL日志文件解析为SQL

5

PostgreSQL数据库服务器将"更改数据"存储在WAL日志文件中。我希望能够解析归档日志文件并将其转换为SQL,类似于 mysqlbinlog 能够将二进制日志文件解析为SQL,这样我可以查找应用程序执行的SQL语句。是否有类似的工具?

4个回答

2

您无法更改实际磁盘块的内容。

如果需要,您可以将服务器设置为将所有SQL语句记录到文件中。但是,如果不清楚事务边界,可能无法重放它们。


2

这个功能目前正在开发中。(请查找Andres Freund的“逻辑复制”补丁。)这是一个巨大的项目,所以不要抱有期望。简短的答案是:目前还不可能。


2
逻辑解码在9.4中已经被提交,因此现在已经准备就绪,并且有使用它的工具。但是一旦设置了,您只能将其用于解码,无法对过去某个时间点创建的WAL进行追溯解码。(我知道你知道这一点,为了其他发现这个问题的人的利益)。 - Craig Ringer
Wal记录中是否有关于其关系模式的任何信息?如果在解码之前对应于记录的关系发生更改会发生什么? - sanyam jain

1
如果你感到冒险,xlogdump 可能会帮你从 WAL 段中提取数据。如果你只需要集群中执行的 SQL,则设置 log_min_duration_statement = 0 记录所有语句即可。

1
这是现在在contrib中的一个内核模块pg_xlogdump。顺便说一下。 - Craig Ringer

0

现在你可以用SQL进行复制。看一下pglogical。然而,它不包含模式更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接