gpt4 book ai didi

PostgreSQL 逻辑复制 - 创建订阅挂起

转载 作者:行者123 更新时间:2023-12-04 13:20:09 25 4
gpt4 key购买 nike

我正在尝试使用 Debian 9 和 PG 11.1 在 2 个云实例之间设置逻辑复制。命令 CREATE PUBLICATION在 master 上成功了,但是当我启动命令时 CREATE SUBSCRIPTION在预期的逻辑副本上,命令无限期挂起。

在主机上,我可以看到复制槽已创建并处于事件状态,我可以看到一个新的 walsender 进程已创建并“等待”,在主机上的日志中,我看到这些行:

2019-01-14 14:20:39.924 UTC [8349] repl_user@db LOG:  logical decoding found initial starting point at 7B0/6C777D10
2019-01-14 14:20:39.924 UTC [8349] repl_user@db DETAIL: Waiting for transactions (approximately 2) older than 827339177 to end.

但仅此而已。命令 CREATE SUBSCRIPTION永不结束。

Master 是一个有大量插入的数据库,比如每分钟 100 次,但它们总是被提交。所以不应该有任何长时间未提交的事务。

我试图用谷歌搜索这个问题,但没有找到任何东西。我错过了什么?

最佳答案

由于数据库“在云中”,您不知道它们的真实位置。
很可能它们实际上在同一个数据库集群中,这可以解释您看到的死锁:CREATE SUBSCRIPTION等到包含复制源数据库的集群上的所有并发事务完成后,它才能创建其复制槽,但由于两个数据库都在同一个集群中,它会等待自己完成,这显然不会发生。
解决方案是在源数据库中显式创建一个逻辑复制槽,并在创建订阅时使用该现有槽。

关于PostgreSQL 逻辑复制 - 创建订阅挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com