我正在研究逻辑解码,我已经能够创建一个插槽,并使用流复制协议将数据库中的所有事务复制到另一个,并且它工作得非常好.
但我需要复制一个表而不是数据库中的所有表.
所以,我的问题是:是否logical decoding允许过滤单个表的流?
我目前的提示是创建一个自定义逻辑解码输出插件,我错了吗?
我已经构建了一个output plugin基于contrib/test decodingpostgresql的源代码,这是一个很好的解决方法.但是它对实际用例没用,所以我决定将其他一些项目作为fork和update的引用.
对我来说最好的是wal2json,所以我决定将它分叉并添加表过滤器作为选项而不是硬编码表名.
首先使用wal2json插件创建插槽:
pg_recvlogical -d postgres --slot test_slot --create-slot -P wal2json
然后开始接收流
pg_recvlogical -d postgres --slot test_slot --start -o limit-to = table_foo,table_bar -f -
现在我们准备在接收更新table_foo和table_bar唯一的.
这是一个非常好的挑战,我不是开发人员,我知道代码需要一些优化,但是现在它比预期更好.