postgresql运维问题解决:PG集群主节点发生脑裂处理办法

68 阅读2分钟

小亦平台会持续给大家科普一些运维过程中常见的问题解决案例,运维朋友们可以在常见问题及解决方案专栏查看更多案例

问题概述:

  • 原主节点异常,切换失败。
  • 原主节点vip资源未完全释放。
  • 在原主节点和切换后的主节点都可以检查到vip挂载信息。

以下为数据库12主节点脑裂场景:

主库12b corosync进程异常,pgerror告警,登录集群查看集群状态发现原主库12b状态能看到三个节点。登录其他两节点12a和12c数据库,其他俩节点数据库在一个集群内,12a是主库,12c是。原主节点12b和切换后的主节点12a都挂载vip。12b的corosync,有大量totem协议的进程。

image.png

image.png

image.png

image.png

image.png 问题分析:

corosync进程异常,导致集群切换12b集群不释放。库切换成功,集群状态异常。

解决方案: 登录故障数据库

通过crm_mon -Afr1命令,查看当前数据库状态。

image.png

image.png

  1. 查看/var/log/cluster/corosync.log日志,确认切库之前主库是哪个节点。
  2. 确认切换情况,和数据写入情况
  3. 通过12c节点ssh vip看登录的是哪台服务器,测试发现登录的是12a服务器,确定12a上的vip是生效的。
  4. 分别登录12a、12b、查询流复制情况

select * from pg_stat_replication;

select * from pg_stat_wal_replication;

image.png

image.png

可知12a是主库,往12c发wal日志。12b无返回结果。

5. 登录12c节点,查询日志恢复情况

image.png 6. 登录12a查询数据库连接情况,12a应该有业务的连接。

select * from pg_stat_activity;

处理步骤:

  1. 将原主节点虚拟机强制重启

  2. 通过各系统的云平台管理页面强制重启虚机

  3. 通过云管页面重启虚机

  4. 虚机恢复后,启动集群服务
    pcs cluster start

  5. 检查集群状态
    cls_status

  6. 启动集群后可能会出现数据库stop或alone状态,时间线变化或日志文件被移除引起,需要手动重拉全备
    rm -rf /pgdb/pgdata/
    cls_rebulid_slave

立即查看更多postgresql的相关内容:www.ces-xiaoyi.com.cn/?wework_cfm…

运维工作中遇到难题?立即提交工单:www.ces-xiaoyi.com.cn/#/workOrder… 小亦平台工程师火速响应,助您快速修复故障!