PostgreSQL 13.3 逻辑复制不会在主服务器中创建复制槽

PostgreSQL 13.3 Logical Replication doesn't create the replication slot in the master

我是 PostgreSQL 新手。我正在尝试为同一本地主机和端口中的 2 个数据库创建 逻辑复制 (我不知道这是否是我遇到的问题的一部分)。关键是,我创建发布没有问题,但是,在我创建订阅的那一刻,必须在主服务器中创建的复制槽不会创建。我有 wal_level = logical,但我不知道 postgres.confpg_hba

是否需要其他配置

另一个细节是我无法通过代码创建订阅,Postgres 只是简单地不响应,就像它卡在那里一样,不显示任何错误消息或确认。我可以创建订阅的唯一方法是在 pgAdmin 4 中,但是这里出现了它没有创建复制槽的错误。

接受任何帮助建议。顺便说一句,对不起,如果我的英语有点不好,我希望我已经解释清楚了。

您无法从代码创建订阅,因为当您使用 CREATE SUBSCRIPTION 创建复制槽(默认行为)时,无法在事务块内执行。

现在创建连接到同一数据库集群的订阅(例如,在同一集群中的数据库之间复制或在同一数据库内复制)只有在复制槽不是作为同样的命令。否则,CREATE SUBSCRIPTION 调用将挂起。为使其工作,单独创建复制槽(使用函数 pg_create_logical_replication_slot 和插件名称 pgoutput)并使用参数 create_slot = false 创建订阅。这是一个实施限制,可能会在未来的版本中取消。

请参阅 https://www.postgresql.org/docs/current/sql-createsubscription.html

的注释部分