Ond*_*žka 5 postgresql database-replication wal postgresql-9.5
我正在尝试为 PostgreSQL 9.5 数据库实现定期增量更改转储。
我选择了 WAL、wal2json插件和pg_recvlogical. 一切都以某种方式工作,除了一件事:
当所有数据被读取后,pg_recvlogical就变得安静。没有办法让它在一段时间没有改变的情况下退出,对吧?所以我用kill -2(SIGINT) 终止它,这给了我
pg_recvlogical: unexpected termination of replication stream:
Run Code Online (Sandbox Code Playgroud)
当我想要下一批更改时,复制槽会从与之前相同的位置开始,即再次发送条目。
我如何告诉 PostgreSQL 对于某些槽,我想将复制位置设置为客户端的当前位置?
有两个函数似乎可以做到这一点,
SELECT * FROM pg_replication_origin_advance(node_name text, pos pg_lsn)SELECT * FROM pg_replication_origin_progress(node_name text, flush bool)但是,我不确定要传递什么作为参数。说明书上没说。节点名称是什么?对于这个职位,wal2json我所能得到的只是xid。
更新:我可以使用pg_replication_origin_advance("sas2json", "28/160E2250"),请参阅我的答案。但是,当我尝试时:
错误:只有超级用户可以查询或操作复制源
这是在 Amazon RDS 中。而且我不能拥有超级用户 - 这是 AWS 政策。
还有其他方法可以设置LSN位置吗?
我发现我可以启用-o include-lsn=truefor wal2json. 这样,它开始给我
{"xid":48311,"nextlsn":"28/160E2250", ...
Run Code Online (Sandbox Code Playgroud)
所以我可以用来nextlsn打电话
SELECT * FROM pg_replication_origin_advance("sas2json", "28/160E2250")
Run Code Online (Sandbox Code Playgroud)
其中第一个参数是复制槽。
虽然这回答了我原来的问题,但我需要一个不需要超级用户的解决方案 - 如果有的话。
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |