如何检查 Postgres 10 集群是否正在进行复制?

3

我正在编写一段bash脚本,用于将我们组织中的Postgres服务器从9.6升级到10.4版本,在Ubuntu Trusty系统下运行。我已经完成了主升级,但我们在开发、测试和生产环境中可能有带有或不带有备用服务器的实例。我知道如何升级备用服务器,但我苦于找不到一个通用的方法来确定主服务器是否有备用服务器,如果有的话,它们的主机名是什么。有没有人已经做过这个,并能分享一些想法?

1个回答

5

在主服务器上,您可以在pg_stat_replication中看到待机服务器的监听情况:

select client_addr, client_hostname from pg_stat_replication 

在备机上,您可以在 pg_stat_wal_receiver中看到主服务器的情况:

select conninfo from pg_stat_wal_receiver

1
主服务器上的 pg_stat_replication 问题,已将备用方案添加到答案中。 - Andomar
太棒了,这就是我需要的。现在我可以使用它来获取我想要的Salt minions IP列表,这些minions作为数据库副本运行。现在我可以自动化升级 :) sudo -u postgres psql -t -c "select to_json(client_addr) from pg_stat_replication;" - Juan Jimenez
2
pg_stat_replication显示活动的监听器。您是否使用了一个指示它作为热备而启动的 recovery.conf 启动服务器? - Andomar
由于这是一个主要版本更改,副本必须再次使用rsync或pg_basebackup进行基线设置。我发现的是,使用就地升级的pg_upgradecluster无法正常工作。当它完成时,我无法执行pg_basebackup,它只会获取部分数据。 - Juan Jimenez
我最终使用了pg_upgrade和--j 4。在我的环境中,它每分钟处理约1GB的数据(51分钟内处理了45GB),不包括重新优化数据。不同之处在于pg_upgrade需要详细说明选项。但是现在我已经完成了。谢谢! - Juan Jimenez
显示剩余5条评论

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