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

10

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

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

我该如何解决这个问题?

阅读有关如何处理复制插槽的内容:https://paquier.xyz/postgresql-2/postgres-9-4-feature-highlight-replication-phydical-slots/。 - MontyPython
2个回答

26

6

复制槽是在主节点上创建的,因此您在备用节点上尝试删除它没有任何效果并会导致错误。

连接到主节点以删除复制槽。

由于您未能删除复制槽,因此使用相同名称(因此也是复制槽)创建新订阅失败并不奇怪。

要查找复制槽,请在主节点上运行以下命令:

SELECT * FROM pg_replication_slots;

这将允许你查看所有复制插槽。然后删除相应的插槽:

SELECT * FROM pg_drop_replication_slot('ENTER SLOT NAME HERE');

谢谢,我现在对它有更多的理解了。问题是,如果我删除复制槽并尝试订阅相同的主要发布物,它不会进行复制,那么处理从站频繁IP更改的默认方式是什么? - bios
我正在寻找一种在没有静态IP的主服务器上恢复复制的解决方案,这是否容易实现? - bios
简单易懂。请指定主机名而非 IP 地址。如果连接失败,备用方案将尝试重新连接。 - Laurenz Albe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接