环境介绍:4台虚拟机组件PG集群,并使用repmgr实现高可用
版本:PG12.2 repmgr:5.0.0
问题:安装完PG12.2之后,集成repmgr5.2,手动触发switchover之后,出现以下问题
尝试重建集群,梳理密码文件都未解决,最后怀疑和是repmgr5.2的版本bug。
解决:find / -name "repmgr*" 找到本机安装的所有repmgr,然后删除,重新下载repmgr5.0版本,编译安装,解决了上述问题
新的问题:使用repmgrd进行后台进程监控,从而实现自动failover时,发现repmgrd进程无法启动,报错如下:
分析可能是因为之前安装过repmgr5.2版本,有残余文件未删除干净,又重新全路径搜索了一边和repmgr5.2相关的文件,但是问题始终没有解决
解决:最后通过将上述报错信息百度之后,发现这么一条结果:
这个是repmgrd的源码,我在视图理解这个代码逻辑,结合上面log日志,逐渐理解到:repmgrd命令首先会去和pg数据库建立连接,然后从数据库中查询相关信息,于是我通过repmgr用户登录到pg数据库,查询了属于repmgr这个db的所有表,发现了一张和扩展相关的表
看出上面的不同了吗?在上面那张表里明确记录了extversion版本是5.2,所以这里我手动更新了版本为5.0,然后重启repmgrd进程解决了上述问题