postgresql WAL文件内部

postgresql WAL文件内部,postgresql,postgresql-9.1,Postgresql,Postgresql 9.1,实际上,我正在使用WAL文件设计一个复制工具,我需要知道是否有任何方法可以获得在特定事务id(xid)中执行的sql语句 这是我在pg_xlog目录中处理WAL文件时得到的一块信息 INSERT INTO "16425" ([cur:0/192E8EAC, xid:1111, rmid:10(Heap), len:39/67, prev:0/112E8E68] insert: s/d/r:1663/16384/16425 blk/off:527/44 header: t_infomask2 3

实际上,我正在使用WAL文件设计一个复制工具,我需要知道是否有任何方法可以获得在特定事务id(xid)中执行的sql语句

这是我在pg_xlog目录中处理WAL文件时得到的一块信息

INSERT INTO "16425" ([cur:0/192E8EAC, xid:1111, rmid:10(Heap), len:39/67, prev:0/112E8E68] insert: s/d/r:1663/16384/16425 blk/off:527/44 header: t_infomask2 3 t_infomask 2048 t_hoff 24
INSERT INTO "16425" ([cur:0/192E8EF0, xid:1111, rmid:10(Heap), len:39/67, prev:0/112E8EAC] insert: s/d/r:1663/16384/16425 blk/off:527/45 header: t_infomask2 3 t_infomask 2048 t_hoff 24 

不,这不容易做到。墙的水平要低得多


有一些工作正在进行,就像您在PostgreSQL 9.3中描述的那样,但这是一个非常大的项目。在pgsql黑客列表中搜索“逻辑复制”和“BDR”以了解更多信息。

好的,您可以告诉我postgresql中是否有用于语句和事务id的元数据,以便我也可以从中提取数据,我知道这是一项乏味的工作,通过读取WAL文件来重建sql语句的方法您可以尝试从文本服务器日志中提取一些信息,但这不会让您走得很远。@user1802481目前还没有可靠的方法来做您想做的事情。正在开发一些新功能—事件触发器、逻辑复制、BDR等—来处理它。同时,看看Londiste、Bucardo和Slony-I。