postgresql逻辑复制 - 无法删除订阅

时间:2018-06-08 03:24:02

标签: postgresql

在测试不同的场景时,我按照建议运行:

alter subscription mysub set (slot_name = NONE);

drop subscription mysub;

我现在收到错误:

postgres=# select pg_drop_replication_slot('mysub');
ERROR:  replication slot "mysub" does not exist

postgres=# create subscription mysub connection 'host=192.168.1.140 port=5432 user=postgres dbname=postgres' publication mypub, insert_only;
ERROR:  could not create replication slot "mysub": ERROR:  replication slot "mysub" already exists

postgres=# drop subscription mysub;
ERROR:  subscription "mysub" does not exist

我该如何解决?

2 个答案:

答案 0 :(得分:3)

您必须先按姓名禁用订阅。

postgres=#\d reportcenter;
reportcenter=# ALTER SUBSCRIPTION mysub DISABLE;
reportcenter=# ALTER SUBSCRIPTION mysub SET (slot_name=NONE);
reportcenter=# DROP SUBSCRIPTION mysub;

https://dba.stackexchange.com/questions/207653/cannot-drop-database-with-logical-replication?answertab=votes#tab-top

答案 1 :(得分:0)

复制插槽是在主节点上创建的,因此您尝试将其放在备用节点上无效并导致错误。

连接到主服务器以删除复制插槽。

由于您未能删除复制槽,因此创建具有相同名称(因此复制槽)的新订​​阅失败也就不足为奇了。