磐维数据库,简称"PanWeiDB"。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华为openGauss开源软件,并进一步提升了系统稳定性。
本文将指导磐维数据库中CM高可用组件的独立安装和卸载,解耦即与数据库安装分离。
1. 概述
CM(Cluster Manager)是一款数据库高可用管理软件(组件),由cm_server和cm_agent组成。
- cm_agent是部署在数据库每个主机上,用来启停和监控各个数据库实例进程的数据库管理组件。
- cm_server是用来进行数据库实例管理和实例仲裁的组件
2. CM特性
CM管理和监控数据库系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。提供了丰富的数据库管理能力,如节点、实例级的启停,数据库实例状态查询、主备切换、日志管理等。
CM支持两节点部署模式
通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,CM集群最小节点数限制由3节点减少为2节点,带来显著的成本优势
支持CM部署与数据库部署解耦
已经部署了openGauss数据库集群,但是尚未部署CM的集群直接部署CM,而不需要通过升级的方式将CM带入
支持一键式暂停/恢复CM服务
支持一键暂停CM自动故障处理服务,避免运维人员在运维过程中的操作受到CM影响,运维完成之后可以一键恢复CM服务
支持按事件触发调用用户自定义脚本
在特定事件发生后,由CM自动触发用户自定义的脚本,执行相应的操作
CM支持容器化部署
支持将CM和数据库打包到docker镜像中,并启动两个以上的容器实例组成CM集群。
CM支持对外状态查询和推送能力
- 通过http/https服务远程查询到集群的状态,便于管理人员、运维平台等监控集群状态。
- 在数据库集群发生切主事件时,通过http/https服务及时地将集群最新的主备信息推送到应用端注册的接收地址,便于应用端及时的感知到集群的主备变化,从而能够快速的连接到新的主机和备机。
3. 两节点(一主一备)解耦部署与卸载
1.首先安装好两节点的主备集群(带cm)

2.编写卸载cm的xml文件
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<!-- 整体信息 -->
<CLUSTER>
<!-- 数据库集群名称 -->
<PARAM name="clusterName" value="panweidb" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="el1,el2"/>
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<!--数据库 core 文件目录-->
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<!-- 节点 IP,与数据库节点名称列表一一对应 -->
<PARAM name="backIp1s" value="192.168.206.138,192.168.206.139"/>
</CLUSTER>
<DEVICELIST>
<!-- 节点 1 上的部署信息 -->
<DEVICE sn="el1">
<PARAM name="name" value="el1"/>
<!-- 节点 1 所在的 AZ 及 AZ 优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点 1 的 IP,如果服务器只有一个网卡可用,将 backIP1 和 sshIP1 配置成同一个IP -->
<PARAM name="backIp1" value="192.168.206.138"/>
<PARAM name="sshIp1" value="192.168.206.138"/>
<!-- dn 数据节点 -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,el2,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<DEVICE sn="el2">
<PARAM name="name" value="el2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.139"/>
<PARAM name="sshIp1" value="192.168.206.139"/>
</DEVICE>
</DEVICELIST>
</ROOT>
3.执行cm卸载命令cm_uninstall

4.集群状态

5.编写安装cm的xml文件
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<!-- 整体信息 -->
<CLUSTER>
<!-- 数据库集群名称 -->
<PARAM name="clusterName" value="panweidb" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="el1,el2"/>
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<!--数据库 core 文件目录-->
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<!-- 节点 IP,与数据库节点名称列表一一对应 -->
<PARAM name="backIp1s" value="192.168.206.138,192.168.206.139"/>
</CLUSTER>
<DEVICELIST>
<!-- 节点 1 上的部署信息 -->
<DEVICE sn="el1">
<PARAM name="name" value="el1"/>
<!-- 节点 1 所在的 AZ 及 AZ 优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点 1 的 IP,如果服务器只有一个网卡可用,将 backIP1 和 sshIP1 配置成同一个IP -->
<PARAM name="backIp1" value="192.168.206.138"/>
<PARAM name="sshIp1" value="192.168.206.138"/>
<!-- cm 管理节点部署信息 -->
<PARAM name="cmsNum" value="1"/>
<!-- 主 CM Server 端口号,默认值 5000 -->
<PARAM name="cmServerPortBase" value="18800"/>
<!-- cmServerListenIp1。CM Server 用于侦听 CM Agent 连接请求或 DBA 管理请求的 IP地址 -->
<PARAM name="cmServerListenIp1" value="192.168.206.138,192.168.206.139"/>
<!-- cmServerHaIp1。主、备 CM Server 间通信的 IP 地址。Value 中左边为主 CM Server 的主机 IP 地址,右边为备 CM Server 的主机 IP 地址。未设置时,默认根据主、备 CM Server 所在主机的 backIp1 生成。-->
<PARAM name="cmServerHaIp1" value="192.168.206.138,192.168.206.139"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="el1,el2"/>
<!-- cmDir。CM 数据文件路径。保存 CM Server 和 CM Agent 用到的数据文件,参数文件等。各集群主机上均需配置该参数。-->
<PARAM name="cmDir" value="/database/panweidb/cm"/>
<!-- dn 数据节点 -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,el2,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<DEVICE sn="el2">
<PARAM name="name" value="el2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.139"/>
<PARAM name="sshIp1" value="192.168.206.139"/>
<!-- cm 管理节点 -->
<!-- cmServerPortStandby。备 CM Server 端口号,默认值 5500 -->
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
</DEVICELIST>
</ROOT>
6.安装expect
yum install -y expect
7.执行cm安装命令cm_install

8.查看集群状态

9.高可用能力说明
两节点的cm初始情况下不具备故障自动切换能力

需要额外设置third_party_gateway_ip等参数(cms的配置文件cm_server.conf)
third_party_gateway_ip = 192.168.206.140
cms_enable_failover_on2nodes = true
cms_enable_db_crash_recovery = on
修改完成后通过“cm_ctl reload --param --server”加载配置
4. 三节点(一主两备)解耦部署与卸载
1.首先安装好三节点的主备集群(带cm)

2.编写卸载cm的xml文件
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<!-- 整体信息 -->
<CLUSTER>
<!-- 数据库集群名称 -->
<PARAM name="clusterName" value="panweidb" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="el1,el2,el3"/>
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<!--数据库 core 文件目录-->
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<!-- 节点 IP,与数据库节点名称列表一一对应 -->
<PARAM name="backIp1s" value="192.168.206.138,192.168.206.139,192.168.206.140"/>
</CLUSTER>
<DEVICELIST>
<!-- 节点 1 上的部署信息 -->
<DEVICE sn="el1">
<PARAM name="name" value="el1"/>
<!-- 节点 1 所在的 AZ 及 AZ 优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点 1 的 IP,如果服务器只有一个网卡可用,将 backIP1 和 sshIP1 配置成同一个IP -->
<PARAM name="backIp1" value="192.168.206.138"/>
<PARAM name="sshIp1" value="192.168.206.138"/>
<!-- dn 数据节点 -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,el2,/database/panweidb/data,el3,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="1"/>
</DEVICE>
<DEVICE sn="el2">
<PARAM name="name" value="el2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.139"/>
<PARAM name="sshIp1" value="192.168.206.139"/>
</DEVICE>
<DEVICE sn="el3">
<PARAM name="name" value="el3"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.140"/>
<PARAM name="sshIp1" value="192.168.206.140"/>
</DEVICE>
</DEVICELIST>
</ROOT>
3.执行cm卸载命令cm_uninstall

4.查询集群状态(cm已经没了)

5.编写安装cm的xml文件
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<!-- 整体信息 -->
<CLUSTER>
<!-- 数据库集群名称 -->
<PARAM name="clusterName" value="panweidb" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="el1,el2,el3"/>
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
<PARAM name="tmpMppdbPath" value="/database/panweidb/tmp"/>
<PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
<!--数据库 core 文件目录-->
<PARAM name="corePath" value="/database/panweidb/corefile"/>
<!-- 节点 IP,与数据库节点名称列表一一对应 -->
<PARAM name="backIp1s" value="192.168.206.138,192.168.206.139,192.168.206.140"/>
</CLUSTER>
<DEVICELIST>
<!-- 节点 1 上的部署信息 -->
<DEVICE sn="el1">
<PARAM name="name" value="el1"/>
<!-- 节点 1 所在的 AZ 及 AZ 优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点 1 的 IP,如果服务器只有一个网卡可用,将 backIP1 和 sshIP1 配置成同一个IP -->
<PARAM name="backIp1" value="192.168.206.138"/>
<PARAM name="sshIp1" value="192.168.206.138"/>
<!-- cm 管理节点部署信息 -->
<PARAM name="cmsNum" value="1"/>
<!-- 主 CM Server 端口号,默认值 5000 -->
<PARAM name="cmServerPortBase" value="18800"/>
<!-- cmServerListenIp1。CM Server 用于侦听 CM Agent 连接请求或 DBA 管理请求的 IP地址 -->
<PARAM name="cmServerListenIp1" value="192.168.206.138,192.168.206.139,192.168.206.140"/>
<!-- cmServerHaIp1。主、备 CM Server 间通信的 IP 地址。Value 中左边为主 CM Server 的主机 IP 地址,右边为备 CM Server 的主机 IP 地址。未设置时,默认根据主、备 CM Server 所在主机的 backIp1 生成。-->
<PARAM name="cmServerHaIp1" value="192.168.206.138,192.168.206.139,192.168.206.140"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="el1,el2,el3"/>
<!-- cmDir。CM 数据文件路径。保存 CM Server 和 CM Agent 用到的数据文件,参数文件等。各集群主机上均需配置该参数。-->
<PARAM name="cmDir" value="/database/panweidb/cm"/>
<!-- dn 数据节点 -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="17700"/>
<PARAM name="dataNode1" value="/database/panweidb/data,el2,/database/panweidb/data,el3,/database/panweidb/data"/>
<PARAM name="dataNode1_syncNum" value="1"/>
</DEVICE>
<DEVICE sn="el2">
<PARAM name="name" value="el2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.139"/>
<PARAM name="sshIp1" value="192.168.206.139"/>
<!-- cm 管理节点 -->
<!-- cmServerPortStandby。备 CM Server 端口号,默认值 5500 -->
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
<DEVICE sn="el3">
<PARAM name="name" value="el3"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.206.140"/>
<PARAM name="sshIp1" value="192.168.206.140"/>
<!-- cm 管理节点 -->
<!-- cmServerPortStandby。备 CM Server 端口号,默认值 5500 -->
<PARAM name="cmServerPortStandby" value="18800"/>
<PARAM name="cmDir" value="/database/panweidb/cm"/>
</DEVICE>
</DEVICELIST>
</ROOT>
6.安装expect
yum install -y expect
7.执行cm安装命令cm_install

8.查看集群状态





