在测试不同的场景时,我按照建议运行:
alter subscription mysub set (slot_name = NONE);
drop subscription mysub;
Run Code Online (Sandbox Code Playgroud)
我现在收到一个错误:
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
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
复制槽是在主节点上创建的,因此您尝试将其删除到备用节点上不会产生任何效果并会导致错误。
连接到主节点以删除复制槽。
由于您未能删除复制槽,因此创建具有相同名称(以及复制槽)的新订阅失败也就不足为奇了。
要查找复制槽,请在主节点上运行以下命令:
SELECT * FROM pg_replication_slots;
Run Code Online (Sandbox Code Playgroud)
这使您可以看到所有复制槽。然后删除相关的槽:
SELECT * FROM pg_drop_replication_slot('ENTER SLOT NAME HERE');
Run Code Online (Sandbox Code Playgroud)
小智 5
您必须首先按名称禁用您的订阅。
postgres=#\d reportcenter;
reportcenter=# ALTER SUBSCRIPTION mysub DISABLE;
reportcenter=# ALTER SUBSCRIPTION mysub SET (slot_name=NONE);
reportcenter=# DROP SUBSCRIPTION mysub;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4507 次 |
| 最近记录: |