postgresql Postgres复制失败“新时间线y在当前恢复点之前从当前数据库系统时间线x分叉”

x33g5p2x  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(219)

我们有一个PostgreSQL设置,在每个可用性区域中有3个节点,每个可用性区域都在可用性区域中复制。所有复制都是热备用的异步复制。我们为每个从AZ集群利用复制插槽。
我们经常对数据库容器进行自动滚动升级。一段时间后,从集群停止从主集群复制,并显示如下消息:

2019-08-06 16:57:11.061 UTC [2987482] LOG:  replication terminated by primary 
server
2019-08-06 16:57:11.061 UTC [2987482] DETAIL:  End of WAL reached on timeline 3 
at 0/293D7AE0.
2019-08-06 16:57:11.136 UTC [2987477] LOG:  new timeline 4 forked off current 
database system timeline 3 before current recovery point 0/293D7D28

我正在寻找一些指针来解决这个问题。
我们尝试将每个群集缩减为每个AZ中的单个节点,但我们在那里没有看到这个问题。我的理解是,由于AZ中的复制是在前面使用代理进行的,因此在滚动升级期间,一旦主节点发生更改,从属节点不确定如何继续复制。
我想了解在复制过程中是否有协议可以处理类似的事情。
从服务器上recovery.conf如下所示:

standby_mode = 'on'
primary_conninfo = 'host=foo-bar.com port=5432 user=repluser password= 
sslmode=verify-ca sslcert=/etc/db_repl_secrets/tls.crt 
sslkey=/etc/db_repl_secrets/tls.key sslrootcert=/etc/db_repl_secrets/ca.crt'
primary_slot_name = 'stolon_us_east_1'
recovery_target_timeline = 'latest'
krugob8w

krugob8w1#

该消息可能表示备用服务器在赶上主服务器之前已被提升,现在主服务器无法充当备用服务器的角色。
在将服务器用作备用服务器之前,是否在服务器上运行了pg_rewind
如果我的解释有误,请更详细地描述您的程序。

相关问题