所以,我的问题是:逻辑解码是否允许过滤单个表的流?
我目前的提示是创建一个自定义logical decoding output plugin,我错了吗?
更新
我已经构建了一个基于postgresql源的contrib / test解码的输出插件,这是一个很好的解决方法.但是它对实际用例没用,所以我决定将其他一些项目作为fork和update的引用.
对我来说最好的是wal2json,所以我决定将它分叉并添加表过滤器作为选项而不是硬编码表名.
Here是叉子和this is the changeset.
如何使用
首先使用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上接收更新.
- CREATE_REPLICATION_SLOT slot_name LOGICAL options
- DROP_REPLICATION_SLOT slot_name
- START_REPLICATION SLOT slot_name LOGICAL options
除了上面的界面,你还需要实现Logical Decoding Output插件.在此插件界面中,您需要调整Change Callback
操作,该操作将侦听所有DML操作:
The required change_cb callback is called for every individual row
modification inside a transaction,may it be an INSERT,UPDATE,or
DELETE. Even if the original command modified several rows at once the
callback will be called individually for each row.
这是您要检查特定表以进行复制的功能.还要注意Change Callback不会处理UNLOGGED
和TEMP
表的事实,但我想这不是严重的限制.
原文地址:https://www.jb51.cc/postgresql/191918.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。