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

扩容openGauss

SmallDB 2024-08-06
139

前提条件

  • • 数据库主机上存在openGauss镜像包,解压镜像包后,在script目录下执行./gs_expansion命令进行扩容。

  • • 在新增的扩容备机上创建好与主机上相同的用户和用户组。

  • • 已存在的数据库节点和新增的扩容节点之间需要建立好root用户互信以及数据库管理用户(如omm)的互信。

  • • 正确配置xml文件,在已安装数据库配置文件的基础上,添加需要扩容的备机信息。

  • • 只能使用root用户执行gs_expansion命令。

  • • 不允许同时在主节点上执行gs_dropnode命令删除其他备机。

  • • 执行扩容命令前需要通过source命令导入主机数据库的环境变量。如果当前数据库是分离环境变量方式安装,则source导入分离的环境变量。如果未进行分离,则需要source导入子用户的.bashrc配置文件。一般该文件路径为:/home/[user]/.bashrc。

  • • 扩容备机的操作系统与主机保持一致。

  • • 操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。

  • • 不允许同时执行2次相同的gs_expansion命令。

  • • 扩容备节点的操作只能在主节点上执行。

原配置文件

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAMname="clusterName"value="dbCluster"/>
<!-- 数据库节点名称(hostname) -->
<PARAMname="nodeNames"value="replicate1,replicate2,replicate3,replicate4,replicate5"/>
<!-- 数据库安装目录-->
<PARAMname="gaussdbAppPath"value="/gauss/huawei/install/app"/>
<!-- 日志目录-->
<PARAMname="gaussdbLogPath"value="/gauss/var/log/omm"/>
<!-- 临时文件目录-->
<PARAMname="tmpMppdbPath"value="/gauss/huawei/tmp"/>
<!-- 数据库工具目录-->
<PARAMname="gaussdbToolPath"value="/gauss/huawei/install/om"/>
<!-- 数据库core文件目录-->
<PARAMname="corePath"value="/gauss/huawei/corefile"/>
<!-- 节点IP,与数据库节点名称列表一一对应 -->
<PARAMname="backIp1s"value="10.0.2.8,10.0.2.9,10.0.2.10,10.0.2.11,10.0.2.12"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICEsn="replicate1">
<!-- 节点1的主机名称 -->
<PARAMname="name"value="replicate1"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.8"/>
<PARAMname="sshIp1"value="10.0.2.8"/>
<!--dbnode-->
<PARAMname="dataNum"value="1"/>
<PARAMname="dataPortBase"value="8000"/>
<PARAMname="dataNode1"value="/opt/software/install/data/dn, replicate2,/opt/software/install/data/dn,replicate3,/opt/software/install/data/dn,replicate4,/opt/software/install/data/dn,replicate5,/opt/software/install/data/dn"/>
<PARAMname="dataNode1_syncNum"value="0"/>
<!--cm-->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
<PARAMname="cmsNum"value="1"/>
<PARAMname="cmServerlevel"value="1"/>
<PARAMname="cmServerListenIp1"value="10.0.2.8,10.0.2.9,10.0.2.10"/>
<PARAMname="cmServerRelation"value="replicate1,replicate2,replicate3"/>
</DEVICE>
<!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICEsn="replicate2">
<!-- 节点2的主机名称 -->
<PARAMname="name"value="replicate2"/>
<!-- 节点2所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点2的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.9"/>
<PARAMname="sshIp1"value="10.0.2.9"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
<!-- 节点3上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICEsn="replicate3">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate3"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.10"/>
<PARAMname="sshIp1"value="10.0.2.10"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
<DEVICEsn="replicate4">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate4"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.11"/>
<PARAMname="sshIp1"value="10.0.2.11"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
<DEVICEsn="replicate5">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate5"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.12"/>
<PARAMname="sshIp1"value="10.0.2.12"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
</DEVICELIST>
</ROOT>

删除节点1(相当于把主节点删除了)

        <!-- 节点1上的部署信息 -->
<DEVICEsn="replicate1">
<!-- 节点1的主机名称 -->
<PARAMname="name"value="replicate1"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.8"/>
<PARAMname="sshIp1"value="10.0.2.8"/>
<!--dbnode-->
<PARAMname="dataNum"value="1"/>
<PARAMname="dataPortBase"value="8000"/>
<PARAMname="dataNode1"value="/opt/software/install/data/dn, replicate2,/opt/software/install/data/dn,replicate3,/opt/software/install/data/dn,replicate4,/opt/software/install/data/dn,replicate5,/opt/software/install/data/dn"/>
<PARAMname="dataNode1_syncNum"value="0"/>
<!--cm-->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
<PARAMname="cmsNum"value="1"/>
<PARAMname="cmServerlevel"value="1"/>
<PARAMname="cmServerListenIp1"value="10.0.2.8,10.0.2.9,10.0.2.10"/>
<PARAMname="cmServerRelation"value="replicate1,replicate2,replicate3"/>
</DEVICE>

重新生成配置文件(需要把主节点回填回去)(顺序很重要太重要了)

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAMname="clusterName"value="dbCluster"/>
<!-- 数据库节点名称(hostname) -->
<PARAMname="nodeNames"value="replicate2,replicate3,replicate4,replicate5"/>
<!-- 数据库安装目录-->
<PARAMname="gaussdbAppPath"value="/gauss/huawei/install/app"/>
<!-- 日志目录-->
<PARAMname="gaussdbLogPath"value="/gauss/var/log/omm"/>
<!-- 临时文件目录-->
<PARAMname="tmpMppdbPath"value="/gauss/huawei/tmp"/>
<!-- 数据库工具目录-->
<PARAMname="gaussdbToolPath"value="/gauss/huawei/install/om"/>
<!-- 数据库core文件目录-->
<PARAMname="corePath"value="/gauss/huawei/corefile"/>
<!-- 节点IP,与数据库节点名称列表一一对应 -->
<PARAMname="backIp1s"value="10.0.2.9,10.0.2.10,10.0.2.11,10.0.2.12"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICEsn="replicate2">
<!-- 节点1的主机名称 -->
<PARAMname="name"value="replicate2"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.8"/>
<PARAMname="sshIp1"value="10.0.2.8"/>
<!--dbnode-->
<PARAMname="dataNum"value="1"/>
<PARAMname="dataPortBase"value="8000"/>
<PARAMname="dataNode1"value="/opt/software/install/data/dn,replicate3,/opt/software/install/data/dn,replicate4,/opt/software/install/data/dn,replicate5,/opt/software/install/data/dn"/>
<PARAMname="dataNode1_syncNum"value="0"/>
<!--cm-->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
<PARAMname="cmsNum"value="1"/>
<PARAMname="cmServerlevel"value="1"/>
<PARAMname="cmServerListenIp1"value="10.0.2.8,10.0.2.9,10.0.2.10"/>
<PARAMname="cmServerRelation"value="replicate1,replicate2,replicate3"/>
</DEVICE>
<!-- 节点3上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICEsn="replicate3">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate3"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.10"/>
<PARAMname="sshIp1"value="10.0.2.10"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
<DEVICEsn="replicate4">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate4"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.11"/>
<PARAMname="sshIp1"value="10.0.2.11"/>
<!-- cm配置 -->
</DEVICE>
<DEVICEsn="replicate5">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate5"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.12"/>
<PARAMname="sshIp1"value="10.0.2.12"/>
</DEVICE>
</DEVICELIST>
</ROOT>

在主节点操作,生成配置文件

gs_om -t generateconf -/home/omm/manual.xml --distribute
gs_om -t refreshconf

回填配置文件操作一定要写在最上面

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAMname="clusterName"value="dbCluster"/>
<!-- 数据库节点名称(hostname) -->
<PARAMname="nodeNames"value="replicate2,replicate3,replicate4,replicate5,replicate1"/>
<!-- 数据库安装目录-->
<PARAMname="gaussdbAppPath"value="/gauss/huawei/install/app"/>
<!-- 日志目录-->
<PARAMname="gaussdbLogPath"value="/gauss/var/log/omm"/>
<!-- 临时文件目录-->
<PARAMname="tmpMppdbPath"value="/gauss/huawei/tmp"/>
<!-- 数据库工具目录-->
<PARAMname="gaussdbToolPath"value="/gauss/huawei/install/om"/>
<!-- 数据库core文件目录-->
<PARAMname="corePath"value="/gauss/huawei/corefile"/>
<!-- 节点IP,与数据库节点名称列表一一对应 -->
<PARAMname="backIp1s"value="10.0.2.9,10.0.2.10,10.0.2.11,10.0.2.12,10.0.2.8"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICEsn="replicate2">
<!-- 节点1的主机名称 -->
<PARAMname="name"value="replicate2"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.8"/>
<PARAMname="sshIp1"value="10.0.2.8"/>
<!--dbnode-->
<PARAMname="dataNum"value="1"/>
<PARAMname="dataPortBase"value="8000"/>
<PARAMname="dataNode1"value="/opt/software/install/data/dn,replicate3,/opt/software/install/data/dn,replicate4,/opt/software/install/data/dn,replicate5,/opt/software/install/data/dn,replicate1,/opt/software/install/data/dn"/>
<PARAMname="dataNode1_syncNum"value="0"/>
<!--cm-->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
<PARAMname="cmsNum"value="1"/>
<PARAMname="cmServerlevel"value="1"/>
<PARAMname="cmServerListenIp1"value="10.0.2.8,10.0.2.9,10.0.2.10"/>
<PARAMname="cmServerRelation"value="replicate1,replicate2,replicate3"/>
</DEVICE>
<!-- 节点3上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICEsn="replicate3">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate3"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.10"/>
<PARAMname="sshIp1"value="10.0.2.10"/>
<!-- cm配置 -->
<PARAMname="cmDir"value="/opt/software/data/cmserver"/>
<PARAMname="cmServerPortBase"value="15000"/>
</DEVICE>
<DEVICEsn="replicate4">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate4"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.11"/>
<PARAMname="sshIp1"value="10.0.2.11"/>
<!-- cm配置 -->
</DEVICE>
<DEVICEsn="replicate5">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate5"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.12"/>
<PARAMname="sshIp1"value="10.0.2.12"/>
</DEVICE>
<DEVICEsn="replicate1">
<!-- 节点3的主机名称 -->
<PARAMname="name"value="replicate1"/>
<!-- 节点3所在的AZ及AZ优先级 -->
<PARAMname="azName"value="AZ1"/>
<PARAMname="azPriority"value="1"/>
<!-- 节点3的IP,如果服务器只有一个网卡可用,将backIp1和sshIp1配置成同一个IP -->
<PARAMname="backIp1"value="10.0.2.8"/>
<PARAMname="sshIp1"value="10.0.2.8"/>
</DEVICE>
</DEVICELIST>
</ROOT>

root/omm已互信完成,这点很重要

plat1:/opt/software/openGauss/script # ./gs_expansion -U omm -G dbgrp -X /home/omm/dd.xml -h 10.0.12.8
Start to preinstall database on new nodes.
Start to send soft to each standby nodes.
End to send soft to each standby nodes.
Start to preinstall database step.
Preinstall192.168.0.1 success
End to preinstall database step.
End to preinstall database on new nodes.

Start to install database on new nodes.
Installing database on node 10.0.12.8:
Please enter the password of user [omm] on node [10.0.12.8]:
Parsing the configuration file.
Check preinstall on every node.
Successfullychecked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare InstallCluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
begin to create CA cert files
The sslcert will be generated in/opt/gaussdb/cluster/app/share/sslcert/om
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configurationis completed.
Successfully started cluster.
Successfully installed application.
end deploy..
192.168.0.1 install success.
Finish to install database on all nodes.
Database on standby nodes installed finished.

Checking gaussdb and gs_om version.
End to check gaussdb and gs_om version.

Start to establish the relationship.
Start to build standby 10.0.12.8.
Build standby 10.0.12.8 success.
Start to generate and send cluster static file.
End to generate and send cluster static file.

Expansion results:
10.0.12.8:Success
ExpansionFinish.


文章转载自SmallDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论