本文主要是介绍记录Pgpool主库down的一次紧急修复过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于检测高可用,强制处理,导致Pgpool的主库二进制文件损坏,发现PG_XLOG和PG_LOG存在大I属性,无法读写,从备节点SCP一份库文件也是如此。
第一次修复,尝试新装PostgreSQL,然后再pg_dump从备节点把库数据导出下来,然后再灌到新库中,后续再加入到Pgpool集群
测试成功,但是客户反馈无法通过web登录,可以打开界面,故从DBA角度判断是数据不一致导致的,后续系统运维同学反馈说可以查看下当时的应用日志,确实是忽略了,发现缺少JIRAUSER用户,及时与客户承认错误(嘻嘻)
故第二次修复,采取Postgresql的基础复制功能
pg_basebackup -D /pgjira -Fp -Xs -v -P -h pgslave01 -p 5432 -U repuser
进行修复,并加入到Pgpool集群中,至此业务恢复,且可以正常登录。
初学者注意:
复制前需要停止应用服务,避免数据不一致,并重启下备库服务,确保当前事务全部持久化
需修改文件权限为postgres
需修改recovery.conf为recovery.done,修改其中的primary_conninfo
需修改pg_hba中的replication repuser 放行规则
启动服务,需使用postgres用户启动
sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_ctl -D /pgjira start
加入到Pgpool集群当中
pcp_attach_node -d -U postgres -h vip -p 9898 -n 0
执行pgpool启动命令后不要急,需要等待一会,才会出现pcp的监听9898,通过查看端口监听,出现9898端口再加入到集群中
本人初学PG,如排查思路有问题,请不吝赐教
这篇关于记录Pgpool主库down的一次紧急修复过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!