gs_expansion增加集群备节点
新增备机的约束
数据库主机上存在openGauss镜像包。
在新增的扩容备机上创建好与主机上相同的用户和用户组。
已存在的数据库节点和新增的扩容节点之间需要建立好root用户互信以及数据库管理用户的互信。
正确配置xml文件,在已安装数据库配置文件的基础上,添加需要扩容的备机信息。
只能使用root用户执行扩容命令。
不允许同时在主节点上执行gs_dropnode命令删除其他备机。
执行扩容命令前需要导入主机数据库的环境变量。
扩容备机的操作系统与主机保持一致。
操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。
openGauss 主备节点信息
操作系统版本信息
[root@og-node1 ~]# cat /etc/os-release
PRETTY_NAME="UOS Server 20"
NAME="UOS Server 20"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="https://bbs.chinauos.com/"
VERSION_CODENAME=fuyu
PLATFORM_ID="platform:uel20"
一、单节点数据库环境介绍
1,单节点xml文件
/home/omm/cluster_config.xml
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="openGauss" />
<PARAM name="nodeNames" value="og-node1"/>
<PARAM name="gaussdbAppPath" value="/opt/openGauss/app" />
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<PARAM name="tmpMppdbPath" value="/opt/openGauss/tmp"/>
<PARAM name="gaussdbToolPath" value="/opt/openGauss/install/om" />
<PARAM name="corePath" value="/opt/openGauss/corefile"/>
<PARAM name="backIp1s" value="192.168.188.185"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="og-node1">
<PARAM name="name" value="og-node1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.188.185"/>
<PARAM name="sshIp1" value="192.168.188.185"/>
<!-- dn -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/data/openGauss"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
2,查看数据库集群状态
gs_om -t status --detail
3,查看数据库状态
gs_ctl query -Cv -D /data/openGauss/
二、操作系统基础环境配置(备节点操作)
1. 设置字符集参数
localectl set-locale en_US.UTF-8
localectl status
设置英文字符集(openGauss安装要求英文字符集)
export LANG=en_US.UTF-8
echo $LANG
设置中文字符集
localectl set-locale zh_CN.utf8
export LANG=zh_CN.utf8
2. 设置时区和时间
设置时区亚洲上海
timedatectl set-timezone Asia/Shanghai
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置日期时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"
手动设置时间需要关闭ntp时钟(true开启 、false关闭)
timedatectl set-ntp false
验证时区和时间
timedatectl status
3. 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
4. 关闭selinux
编辑配置文件关闭selinux重启系统生效
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
临时关闭selinux立即生效
setenforce 0
查看selinux状态
getenforce
5. 修改系统主机名
修改主机名
备节点
hostnamectl set-hostname og-node2
6. 配置hosts文件
cat >> /etc/hosts<<EOF
192.168.188.186 og-node2
EOF
查看hosts文件
cat /etc/hosts
7. 关闭透明大页面transparent_hugepage
临时关闭透明大页面
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
添加/etc/rc.d/rc.local开机启动
/etc/rc.local是/etc/rc.d/rc.local的软连接
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' /etc/rc.d/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
/usr/bin/bash /etc/rc.d/rc.local
8. 设置会话超时时间
vim /etc/profile
export TMOUT=300
或
sed -i "s/TMOUT.*/TMOUT=300/g" /etc/profile
使用source命令生效配置
source /etc/profile
9. 设置history记录
vim /etc/profile
HISTSIZE默认值为1000 更改为 HISTSIZE=100
sed -i "s/HISTSIZE=100.*/HISTSIZE=100/g" /etc/profile
使用source命令生效配置
source /etc/profile
10. 关闭RemoveIPC
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
重新加载服务配置文件
systemctl daemon-reload
重启systemd-logind服务
systemctl restart systemd-logind
验证生效参数
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
11. core dump日志格式修改
core_pattern 设置
echo "/data/core_pattern/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
12. 安装依赖包
dnf install -y zlib-devel libaio libuuid readline-devel krb5-libs expect
dnf install -y libicu libxslt tcl perl openldap pam openssl-devel libxml2 python3
13. 创建依赖库软连接
ln -s /usr/lib64/libreadline.so.8 /usr/lib64/libreadline.so.7
14. 系统资源限制修改
cat << EOF >> /etc/security/limits.conf
root soft as unlimited
omm soft as unlimited
root hard as unlimited
omm hard as unlimited
root soft nproc unlimited
omm soft nproc unlimited
root hard nproc unlimited
omm hard nproc unlimited
EOF
15. 系统内核优化
cat << EOF >> /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries2 = 12
net.ipv4.ip_local_reserved_ports = 15000-15007,15400-15407,20050-20057
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
kernel.sem = 250 6400000 1000 25600
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
vm.min_free_kbytes = 184992
EOF
生效配置
sysctl -p
16. 创建用户组&用户
创建用户组dbgroup
groupadd -g 1000 dbgrp
创建用户组dbgroup下的普通用户omm
useradd -u 1000 omm -g dbgrp
设置 omm 用户密码(可自定义密码)
echo "omm@P@ssw0rd" | passwd omm --stdin
17. 创建安装目录、授权目录
创建数据库安装所需目录并授权
mkdir -p /data/{openGauss,backup,archive_wals,core_pattern}
chmod 700 /data/{openGauss,backup,archive_wals,core_pattern}
chown -R omm:dbgrp /data/{openGauss,backup,archive_wals,core_pattern}
mkdir -p /opt/openGauss
chown omm:dbgrp -R /opt/openGauss/
chmod 755 /opt/openGauss/
18. 操作系统重启
操作系统基础环境参数配置优化完成后重启操作系统
systemctl reboot
三、主节点扩容操作
1. 主节点创建主、备节点ssh互信
创建节点互信文件
vim /home/omm/hostfile
192.168.188.185
192.168.188.186
root用户ssh互信
/opt/openGauss/script/gs_sshexkey -f /home/omm/hostfile
omm用户ssh互信
/opt/openGauss/script/gs_sshexkey -f /home/omm/hostfile
2. 备节点扩容xml文件(增加集群og-node2节点信息)
/home/omm/cluster_config.xml
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<PARAM name="clusterName" value="openGauss" />
<PARAM name="nodeNames" value="og-node1,og-node2" />
<PARAM name="gaussdbAppPath" value="/opt/openGauss/app" />
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<PARAM name="tmpMppdbPath" value="/opt/openGauss/tmp"/>
<PARAM name="gaussdbToolPath" value="/opt/openGauss/install/om" />
<PARAM name="corePath" value="/opt/openGauss/corefile"/>
<PARAM name="backIp1s" value="192.168.188.185,192.168.188.186"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1上的节点部署信息 -->
<DEVICE sn="og-node1">
<PARAM name="name" value="og-node1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.188.185"/>
<PARAM name="sshIp1" value="192.168.188.185"/>
<!--dn-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/data/openGauss,og-node2,/data/openGauss"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<!-- node2上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICE sn="og-node2">
<PARAM name="name" value="og-node2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.188.186"/>
<PARAM name="sshIp1" value="192.168.188.186"/>
</DEVICE>
</DEVICELIST>
</ROOT>
3. 主节点root用户使用gs_expansion工具扩容备节点
检测操作系统安装环境
/opt/openGauss/script/gs_checkos -i A -h og-node2 --detail
执行扩容命令
cd /opt/openGauss/script/
./gs_expansion -U omm -G dbgrp -X /home/omm/cluster_config.xml -h 192.168.188.186
扩容报错处理
[root@og-node1 script]# ./gs_expansion -U omm -G dbgrp -X /home/omm/cluster_config.xml -h 192.168.188.186
[GAUSS-51802] : Failed to obtain the environment variable "GPHOME", please import environment variable.
[root@og-node1 script]# source /home/omm/.bashrc
4. 检查集群状态
gs_om查询集群状态
gs_om -t status --detail
gs_ctl查询集群状态
gs_ctl query -Cv -D /data/openGauss
5. 访问数据库
gsql -d postgres -p 15400 -r
查询pg_stat_replication视图来检查主备复制状态
开启HTML输出模式
\x
SELECT * FROM pg_stat_replication;
SELECT application_name, state FROM pg_stat_replication;
switchover 切换
su - omm
gs_om -t status --detail
使用omm用户登录到想要切换为主节点的备节点,执行以下命令完成切换
gs_ctl switchover -D /data/openGauss
switchover或failover成功后,记录当前主备机器信息
gs_om -t refreshconf
gs_dropnode删除集群备节点
删除备机的约束
删除备节点的操作只能在主节点上执行。
操作过程中不允许同时在其他备节点上执行主备倒换或者故障倒换的操作。
不允许同时在主节点上执行gs_expansion命令进行扩容。
不允许同时执行2次相同的gs_dropnode命令。
执行删除操作前,需要确保主节点和备节点之间建立好数据库管理用户的互信。
需要使用数据库管理用户执行该命令。
执行命令前需要通过source命令导入主机数据库的环境变量。
1. 剔除备节点单机运行(主节点操作)
gs_dropnode -U omm -G dbgrp -h 192.168.188.186
-U 指定集群的安装的用户
-G 指定集群的安装用户的用户组
-h 需要摘除的节点的IP
2. 在已删除节点关闭与原集群的SSH链接,避免后续操作(备节点操作)
mv /root/.ssh /root/.ssh_bak
mv /home/omm/.ssh /home/omm/.ssh_bak
3. 数据清理
清理删除的备机系统环境数据(备节点操作)
gs_uninstall --delete-data -L
清理删除后的备机系统环境软件及目录(备节点操作)
./gs_postuninstall -U omm -X /opt/openGauss/cluster_config.xml --delete-user --delete-group -L