出现错误“复制槽 "pgl_testdb_pgnode_pdaaa79d_sub1" 不存在”

Getting error `replication slot "pgl_testdb_pgnode_pdaaa79d_sub1" does not exist`

我有一个启用了逻辑复制的 3 节点集群,订阅者连接到指向集群设置下当前 leader/master 的虚拟 IP。订阅者正在收到数据 streaming/replicated。

每当主节点出现故障并且其中一个副本将自己提升为主节点时,在这种情况下,逻辑复制将停止并显示以下错误

2021-04-13T09:32:12.912262+00:00 host2 postgres_2[13527]: [7-1] pid=13527,session=6075651c.34d7,line=1,sqlstate=42704,user_app=sub1,user=bpuser,db=testdb,client=10.186.34.182,txId=0 ERROR: replication slot "pgl_testdb_pgnode_pdaaa79d_sub1" does not exist

这个错误发生在新的Master上,我使用的是postgres 12

复制槽仅存在于主服务器上,因此当主服务器出现故障(并且不再出现)时它们将丢失。

我能想到的唯一安全的恢复方法是在故障转移后从头开始构建逻辑复制备用数据库。我认为逻辑复制不能用于良好的高可用性解决方案。