繁体   English   中英

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

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

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

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

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

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

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

请参考https://www.postgresql.org/docs/current/sql-createsubscription.html的注释部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM