简介
本文档介绍当MGMTPOSTGRES_SLAVE未与MGMTPOSTGRESS_MASTER形成集群时如何恢复。
先决条件
要求
Cisco 建议您了解以下主题:
- Linux界面
- 虚拟机环境
- postgresql
- 起搏器/Corosync配置系统(PCS)
使用的组件
本文档中的信息基于以下软件版本:
- CloudCenter版本4.8.1.1
- MGMTPOSTGRES_SLAVE组件
- MGMTPOSTGRES_MASTER组件
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
如果两个MGMTPOSTGRES组件都发生故障,则MGMTPOSTGRES_SLAVE不再与MGMTPOSTGRES_MASTER形成集群。
问题
MGMTPOSTGRES_SLAVE不与MGMTPOSTGRES_MASTER形成集群。要使两个MGMTPOSTGRES形成集群,需要删除MGMTPOSTGRES_SLAVE数据库。然后,数据库将从MGMTPOSTGRES_MASTER中恢复。
错误日志
[root@mgmtpostgres_master etc]# pcs status
Cluster name: cliqrdbcluster
Stack: corosync
Current DC: dbmaster (version 1.1.15-11.e174ec8) – partition with quorum
Last updated: Mon Nov 13 19:15:30 2017 Last changed: Mon Nov 13 16:59:51 2017 by root via crm_attribute on db master
2 nodes and 3 resources configured
Online: [ dbmaster dbslave ]
Full list of resrouces:
Resrouce Group: VIPGroup
PGMasterVIP (ocf::heartbeat:IPaddr2): Started dbmaster
Master/Slave Set: mspostgresql [pgsql]
Masters: [ dbmaster ]
Stopped: [ dbslave ]
Failed Actions:
* pgsql_start_0 on dbslave ‘unknown error’ (1): call=11, status=Timed Out, exitreason=’none’,
last-rc-change=’Mon Nov 13 18:15:25 2017’, queued-0ms, exec=60003ms
Daemon Status:
corosyn: active/disabled
pacemaker: active/enabled
pcsd: inactive/disabled
解决方案
继续恢复MGMTPOSTGRES_SLAVE数据库,以便MGMTPOSTGRES形成集群。
步骤1.在MGMTPOSTGRES_MASTER中,确保集群已停止。
pcs cluster stop
pcs status
步骤2.在MGMTPOSTGRES_SLAVE中,删除现有数据库。
rm -rf /var/lib/pgsql/9.5/data/*
步骤3.在MGMTPOSTGRES_MASTER中,再次启动群集。
pcs cluster start
pcs status
步骤4.在MGMTPOSTGRES_SLAVE中,从MGMTPOSTGRES_MASTER恢复数据库。
/usr/pgsql-9.5/bin/pg_basebackup -h <MGMTPOSTGRES_MASTER-IP> -D /var/lib/pgsql/9.5/data/ -U replication -v -P --xlog-method=stream
步骤5.在MGMTPOSTGRES_SLAVE中,更改恢复的数据库的所有权。
chown postgres:postgres -R /var/lib/pgsql/9.5/data/*
步骤6.在MGMTPOSTGRES_SLAVE中,启动群集。
pcs cluster start
pcs cluster status
步骤7.在MGMTPOSTGRES_MASTER中,清理资源并检查集群状态。
pcs resource cleanup
pcs cluster status
步骤8.在MGMTPOSTGRES_MASTER中,验证是否存在复制(在MGMTPOSTGRES_SLAVE IP中查找IP)。
ps –ef | grep postgr