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

MogDB V3.1 使用OM工具实现MogDB数据库(集群管理工具为CM)扩容和缩容

原创 吴荣政 云和恩墨 2022-09-29
618

1 目标


本文档用于指导用户实现MogDB数据库集群(集群管理工具为CM)的扩容和缩容。目前,扩容功能支持两类场景:同时扩容CM集群和数据库集群,仅扩容数据库集群。而缩容功能仅支持同时缩容CM集群和数据库集群,不支持单独缩容数据库集群。

2 约束与限制


  • 集群的安装、卸载、扩容、缩容均需依赖OM工具
  • 缩容功能仅支持同时缩容CM集群和数据库集群,不支持单独缩容数据库集群
  • 扩容/缩容都需要重启整个集群

3 前置条件


集群扩容/缩容前务必确保当前集群状态正常。本文以3节点集群为例,如图1所示:

图 1 扩容前集群初始状态

如上图1所示,示例数据库集群拥有3个节点,集群状态正常,CMServer和Datanode均为一主两备。对应的集群配置文件clusterconfig_3nodes.xml(参考附件1)如下图2所示:

图 2 扩容前集群配置文件

其中当前集群的用户为omm,用户组为dbgrp。为了演示集群的扩容和缩容,我们将对当前集群增加一个节点wrz-cm-test-04完成集群扩容,然后剔除新增的节点wrz-cm-test-04完成集群的缩容。

4 集群扩容


集群扩容分为两类场景:同时扩容CM集群和数据库集群,仅扩容数据库集群。二者操作流程完全一样,唯一的区别在于配置文件。在集群配置文件clusterconfig.xml中可以通过两个参数控制:cmServerListenIP1和cmServerRelation来控制是否需要扩容CM集群。如下图3所示,192.168.122.234为新增节点,若想同时扩容CM集群则需要将节点的IP和HostName配置到前述两个参数:

图 3 新增节点支持CM集群扩容

4.1 扩容CM集群和数据库集群

4.1.1 创建新增节点并安装操作系统

新节点的操作系统及内核版本必须与集群其他节点保持一致,否则可能导致扩容流程中gs_preinstall步骤失败,原因主要是依赖库的版本会有差异。可用如下指令查询内核信息(示例为华为欧拉系统):

[omm@wrz-cm-test-01 ~]$ cat /etc/openEuler-release
openEuler release 20.03 (LTS)

同时,新的节点上需要确保expect软件(扩容时gs_preinstall的依赖之一)已经安装,且防火墙处于关闭状态(扩容成功后CM集群间通信):

[root@wrz-cm-test-04 ~]# rpm -q expect
expect-5.45.4-3.oe1.aarch64

4.1.2 新增节点上创建用户和用户组

[omm@wrz-cm-test-04 ~]$ groupadd dbgrp
[omm@wrz-cm-test-04 ~]$ useradd -g dbgrp omm
[omm@wrz-cm-test-04 ~]$ passwd omm //密码与其他节点相同

4.1.3 新增节点环境变量检查

检查新节点环境变量,清理和MogDB相关的环境变量配置。主要检查/etc/profile和/home/omm/.bashrc两个文件。如果清理不干净,会导致扩容不成功,或者提示待扩容备机节点已经安装。

4.1.4 新增节点上放置软件包

在集群安装的主节点,一般为集群第一个节点(本示例为wrz-cm-test-01)上准备安装包并拷贝至新增节点同样目录下。如下图4所示,主节点目录/opt/software中即为集群安装包,待拷贝至新增节点的安装包文件为/opt/software.tar.gz。

图 4 主节点安装包路径及文件

安装包拷贝完成后,新增节点wrz-cm-test-04的文件如下图5所示:

图 5 新增节点安装包及文件

在新增节点上解压缩上述文件到目录software即可。

4.1.5 在主节点上创建与其他节点的互信

(1)创建hostfile文件

该文件中包含当前集群所有节点的IP地址信息,包含新增节点

[root@wrz-cm-test-01 opt]# cat /home/omm/hostfile
192.168.122.231 // wrz-cm-test-01
192.168.122.232 // wrz-cm-test-02
192.168.122.233 // wrz-cm-test-03
192.168.122.234 // wrz-cm-test-04

(2)用户root下创建互信

切换到/opt/software/MogDB/script目录,执行如下图6所示的指令:

图 6 主节点创建与其他节点的互信

(3)用户omm下创建互信

具体操作步骤(2)。

备注:

1. 如果是同一台机器恢复后再加入集群,需要清理root用户和omm用户的/.ssh/know_host和/.ssh/authorized_keys里的相关信息,否则创建互信会失败。

2. 全新的机器需要安装python3.6或python3.7。

4.1.6 创建新的集群配置文件

新的集群配置文件clusterconfig_3to4.xml与原始配置文件差异如下图7所示:

图 7 扩容前后集群配置文件差异

新增配置文件clusterconfig_3to4.xml请参见附件2。

4.1.7 在主节点上执行扩容

切换到root用户,导入omm用户的环境变量/home/omm/.bashrc,然后执行扩容指令,如下图8所示。

[root@wrz-cm-test-01 MogDB]# source /home/omm/.bashrc
[root@wrz-cm-test-01 MogDB]# ./gs_expansion -U omm -G dbgrp -h 192.168.122.234 -X /opt/software/MogDB/clusterconfig/clusterconfig_3to4.xml

图 8 扩容指令执行过程

4.1.8 查询集群状态

切换到omm用户,执行集群状态查询,如下图9所示:

图 9 扩容成功后集群状态查询

至此集群扩容完成。

4.2 扩容数据库集群

4.2.1 创建新的集群配置文件

本章节于章节3.1的唯一区别在于集群配置文件,二者的差异如下图10所示:

图 10 是否扩容CMS实例配置文件差异

参考图10可以看出,CMS实例在节点上的配置依赖两个参数:cmServerListenIP1和cmServerRelation。仅扩容数据库实例的集群配置文件请参考附件3。

4.2.2 在主节点上执行扩容

仅仅扩容数据库实例的过程及执行成功的效果如图11所示:

图 11 仅扩容数据库实例成功

5 集群缩容


5.1 同时缩容CM集群和数据库集群

[omm@wrz-cm-test-01 MogDB]# .gs_dropnode -U omm -G dbgrp -h 192.168.122.234

图 12 集群缩容

图示中缩容的最后流程会抛出一个switchover相关的错误可忽略,不影响最终结果!

6 附件


6.1 附件1

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
    <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
    <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03" />
    <!-- 节点IP,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="192.168.122.231, 192.168.122.232, 192.168.122.233"/>
    <!-- 数据库安装目录-->
    <PARAM name="gaussdbAppPath" value="/opt/mogdb/install/app" />
    <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
    <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/mogdb/tmp"/>
    <!--数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/mogdb/install/om" />
    <!--数据库core文件目录-->
        <PARAM name="corePath" value="/opt/mogdb/corefile"/>
    <!-- openGauss类型,此处示例为单机类型,“single-inst”表示单机一主多备部署形态-->
        <PARAM name="clusterType" value="single-inst"/>
        <PARAM name="enable_dcf" value="off"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- node1上的节点部署信息 -->
        <DEVICE sn="1000001">
        <!-- node1的hostname -->
            <PARAM name="name" value="wrz-cm-test-01"/>
        <!-- node1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
        <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.231"/>
            <PARAM name="sshIp1" value="192.168.122.231"/>
        <!--CM-->
            <!--CM数据目录-->
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
            <PARAM name="cmsNum" value="1" />
            <!--CM监听端口-->
            <PARAM name="cmServerPortBase" value="5000" />
            <PARAM name="cmServerlevel" value="1" />
            <!--CM所有实例所在节点名及监听ip-->
            <PARAM name="cmServerListenIp1" value="192.168.122.231,192.168.122.232,192.168.122.233" />
            <PARAM name="cmServerRelation" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03"/>
        <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
        <!--DBnode端口号-->
            <PARAM name="dataPortBase" value="27000"/>
        <!--DBnode主节点上数据目录,及备机数据目录-->
        <PARAM name="dataNode1" value="/opt/mogdb/install/data/db1,wrz-cm-test-02,/opt/mogdb/install/data/db1,wrz-cm-test-03,/opt/mogdb/install/data/db1"/>
        <!--DBnode节点上设定同步模式的节点数-->
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000002">
            <PARAM name="name" value="wrz-cm-test-02"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.232"/>
            <PARAM name="sshIp1" value="192.168.122.232"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000003">
            <PARAM name="name" value="wrz-cm-test-03"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.233"/>
            <PARAM name="sshIp1" value="192.168.122.233"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
    </DEVICELIST>
</ROOT>

6.2 附件2

同时扩容CMS和MogDB实例的集群配置文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
    <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
    <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03,wrz-cm-test-04" />
    <!-- 节点IP,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="192.168.122.231, 192.168.122.232, 192.168.122.233, 192.168.122.234"/>
    <!-- 数据库安装目录-->
    <PARAM name="gaussdbAppPath" value="/opt/mogdb/install/app" />
    <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
    <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/mogdb/tmp"/>
    <!--数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/mogdb/install/om" />
    <!--数据库core文件目录-->
        <PARAM name="corePath" value="/opt/mogdb/corefile"/>
    <!-- openGauss类型,此处示例为单机类型,“single-inst”表示单机一主多备部署形态-->
        <PARAM name="clusterType" value="single-inst"/>
        <PARAM name="enable_dcf" value="off"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- node1上的节点部署信息 -->
        <DEVICE sn="1000001">
        <!-- node1的hostname -->
            <PARAM name="name" value="wrz-cm-test-01"/>
        <!-- node1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
        <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.231"/>
            <PARAM name="sshIp1" value="192.168.122.231"/>
        <!--CM-->
            <!--CM数据目录-->
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
            <PARAM name="cmsNum" value="1" />
            <!--CM监听端口-->
            <PARAM name="cmServerPortBase" value="5000" />
            <PARAM name="cmServerlevel" value="1" />
            <!--CM所有实例所在节点名及监听ip-->
            <PARAM name="cmServerListenIp1" value="192.168.122.231,192.168.122.232,192.168.122.233,192.168.122.234" />
            <PARAM name="cmServerRelation" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03,wrz-cm-test-04"/>
        <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
        <!--DBnode端口号-->
            <PARAM name="dataPortBase" value="27000"/>
        <!--DBnode主节点上数据目录,及备机数据目录-->
        <PARAM name="dataNode1" value="/opt/mogdb/install/data/db1,wrz-cm-test-02,/opt/mogdb/install/data/db1,wrz-cm-test-03,/opt/mogdb/install/data/db1,wrz-cm-test-04,/opt/mogdb/install/data/db1"/>
        <!--DBnode节点上设定同步模式的节点数-->
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000002">
            <PARAM name="name" value="wrz-cm-test-02"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.232"/>
            <PARAM name="sshIp1" value="192.168.122.232"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000003">
            <PARAM name="name" value="wrz-cm-test-03"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.233"/>
            <PARAM name="sshIp1" value="192.168.122.233"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
        <DEVICE sn="1000004">
            <PARAM name="name" value="wrz-cm-test-04"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.234"/>
            <PARAM name="sshIp1" value="192.168.122.234"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
    </DEVICELIST>
</ROOT>

6.3 附件3

仅扩容MogDB实例的集群配置文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
    <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
    <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03,wrz-cm-test-04" />
    <!-- 节点IP,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="192.168.122.231, 192.168.122.232, 192.168.122.233, 192.168.122.234"/>
    <!-- 数据库安装目录-->
    <PARAM name="gaussdbAppPath" value="/opt/mogdb/install/app" />
    <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
    <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/mogdb/tmp"/>
    <!--数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/mogdb/install/om" />
    <!--数据库core文件目录-->
        <PARAM name="corePath" value="/opt/mogdb/corefile"/>
    <!-- openGauss类型,此处示例为单机类型,“single-inst”表示单机一主多备部署形态-->
        <PARAM name="clusterType" value="single-inst"/>
        <PARAM name="enable_dcf" value="off"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- node1上的节点部署信息 -->
        <DEVICE sn="1000001">
        <!-- node1的hostname -->
            <PARAM name="name" value="wrz-cm-test-01"/>
        <!-- node1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
        <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.231"/>
            <PARAM name="sshIp1" value="192.168.122.231"/>
        <!--CM-->
            <!--CM数据目录-->
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
            <PARAM name="cmsNum" value="1" />
            <!--CM监听端口-->
            <PARAM name="cmServerPortBase" value="5000" />
            <PARAM name="cmServerlevel" value="1" />
            <!--CM所有实例所在节点名及监听ip-->
            <PARAM name="cmServerListenIp1" value="192.168.122.231,192.168.122.232,192.168.122.233" />
            <PARAM name="cmServerRelation" value="wrz-cm-test-01,wrz-cm-test-02,wrz-cm-test-03"/>
        <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
        <!--DBnode端口号-->
            <PARAM name="dataPortBase" value="27000"/>
        <!--DBnode主节点上数据目录,及备机数据目录-->
        <PARAM name="dataNode1" value="/opt/mogdb/install/data/db1,wrz-cm-test-02,/opt/mogdb/install/data/db1,wrz-cm-test-03,/opt/mogdb/install/data/db1,wrz-cm-test-04,/opt/mogdb/install/data/db1"/>
        <!--DBnode节点上设定同步模式的节点数-->
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000002">
            <PARAM name="name" value="wrz-cm-test-02"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.232"/>
            <PARAM name="sshIp1" value="192.168.122.232"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
        <DEVICE sn="1000003">
            <PARAM name="name" value="wrz-cm-test-03"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.233"/>
            <PARAM name="sshIp1" value="192.168.122.233"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
        <DEVICE sn="1000004">
            <PARAM name="name" value="wrz-cm-test-04"/>
            <PARAM name="azName" value="AZ2"/>
            <PARAM name="azPriority" value="2"/>
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.122.234"/>
            <PARAM name="sshIp1" value="192.168.122.234"/>
            <PARAM name="cmDir" value="/opt/mogdb/install/data/cm" />
        </DEVICE>
    </DEVICELIST>
</ROOT
最后修改时间:2023-08-04 15:51:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论