暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

磐维数据库高可用CM组件的安装卸载解耦实践

原创 陆凯 2024-05-17
882

磐维数据库,简称"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)

image.png

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

image.png

4.集群状态

image.png

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

image.png

8.查看集群状态

image.png

9.高可用能力说明

两节点的cm初始情况下不具备故障自动切换能力

image.png

需要额外设置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)

image.png

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

image.png

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

image.png

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

image.png

8.查看集群状态

image.png

5. CM安装卸载过程解读(深入源码)

参阅:https://www.modb.pro/db/1694585133722587136

最后修改时间:2024-06-03 09:28:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论