gs_expansion增加集群备节点
openGauss提供了gs_expansion工具对数据库的备机进行扩容。当前数据库单节点运行扩容后主备双节点运行,实现故障快速切换保障业务连续性。
新增备机的束缚
- 数据库主机上存在openGauss镜像包。
- 在新增的扩容备机上创建好与主机上相同的用户和用户组。
- 已存在的数据库节点和新增的扩容节点之间需要创建好root用户互信以及数据库管理用户的互信。
- 精确配置xml文件,在已安装数据库配置文件的底子上,添加需要扩容的备机信息。
- 只能利用root用户执行扩容命令。
- 不允许同时在主节点上执行gs_dropnode命令删除其他备机。
- 执行扩容命令前需要导入主机数据库的环境变量。
- 扩容备机的操纵体系与主机保持一致。
- 操纵过程中不允许同时在其他备节点上执行主备倒换大概故障倒换的操纵。
openGauss 主备节点信息
hostname
| IP
| status
| og-node1
| 192.168.188.185
| Primary
| og-node2
(扩容节点)
| 192.168.188.186
| Standby
| 操纵体系版本信息
- [root@og-node1 ~]# cat /etc/os-releasePRETTY_NAME="UOS Server 20"NAME="UOS Server 20"VERSION_ID="20"VERSION="20"ID=uosHOME_URL="https://www.chinauos.com/"BUG_REPORT_URL="https://bbs.chinauos.com/"VERSION_CODENAME=fuyuPLATFORM_ID="platform:uel20"
复制代码
一、单节点数据库环境先容
1,单节点xml文件
/home/omm/cluster_config.xml
- <?xml version="1.0" encoding="utf-8"?><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,查看数据库集群状态
3,查看数据库状态
- gs_ctl query -Cv -D /data/openGauss/
复制代码
二、操纵体系底子环境配置(备节点操纵)
1. 设置字符集参数
- localectl set-locale en_US.UTF-8localectl status
复制代码 设置英文字符集(openGauss安装要求英文字符集)
- export LANG=en_US.UTF-8echo $LANG
复制代码 设置中文字符集
- localectl set-locale zh_CN.utf8export LANG=zh_CN.utf8
复制代码 2. 设置时区和时间
设置时区亚洲上海
- timedatectl set-timezone Asia/Shanghaicp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
复制代码 设置日期时间
- timedatectl set-time "YYYY-MM-DD HH:MM:SS"
复制代码 手动设置时间需要关闭ntp时钟(true开启 、false关闭)
- timedatectl set-ntp false
复制代码 验证时区和时间
3. 关闭防火墙
- systemctl disable firewalld.servicesystemctl stop firewalld.service
复制代码 留意:生产环境发起开启防火墙防护,openGauss数据库在初始化体系环境时会检测防火墙的状态,安装前需关闭防火墙,期待数据库安装完成后可启动防火墙放行指定端口。 4. 关闭selinux
编辑配置文件关闭selinux重启体系生效
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
复制代码 暂时关闭selinux立即生效
查看selinux状态
5. 修改体系主机名
修改主机名
- 备节点hostnamectl set-hostname og-node2
复制代码 6. 配置hosts文件
- cat >> /etc/hosts<<EOF 192.168.188.186 og-node2EOF
复制代码 查看hosts文件
7. 关闭透明大页面transparent_hugepage
暂时关闭透明大页面
- echo never > /sys/kernel/mm/transparent_hugepage/enabledecho 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.localecho '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. 设置会话超时时间
体系设置公道的会话超时时间可以低沉因管理员人为原因而导致体系被攻击者攻击的风险。 在/etc/profile文件最后添加TMOUT=300,即终端300秒没有操纵退出tty终端 - vim /etc/profileexport TMOUT=300或sed -i "s/TMOUT.*/TMOUT=300/g" /etc/profile
复制代码 利用source命令生效配置
9. 设置history记录
`HISTSIZE` 控制命令历史记录的长度的环境变量,调解它可以巨细可以减少历史命令中敏感信息泄露的风险。 修改/etc/profile中HISTSIZE值 HISTSIZE默认值为1000 更改为 HISTSIZE=100
- sed -i "s/HISTSIZE=100.*/HISTSIZE=100/g" /etc/profile
复制代码 利用source命令生效配置
10. 关闭RemoveIPC
- echo "RemoveIPC=no" >> /etc/systemd/logind.confecho "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
复制代码 重新加载服务配置文件
重启systemd-logind服务
- systemctl restart systemd-logind
复制代码 验证生效参数
- loginctl show-session | grep RemoveIPCsystemctl 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 expectdnf 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.confroot soft as unlimitedomm soft as unlimitedroot hard as unlimitedomm hard as unlimitedroot soft nproc unlimitedomm soft nproc unlimitedroot hard nproc unlimitedomm hard nproc unlimitedEOF
复制代码 15. 体系内核优化
- cat << EOF >> /etc/sysctl.confnet.ipv4.tcp_max_tw_buckets = 10000net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_keepalive_time = 30net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_retries2 = 12net.ipv4.ip_local_reserved_ports = 15000-15007,15400-15407,20050-20057net.core.wmem_max = 21299200net.core.rmem_max = 21299200net.core.wmem_default = 21299200net.core.rmem_default = 21299200kernel.sem = 250 6400000 1000 25600net.ipv4.tcp_rmem = 8192 250000 16777216net.ipv4.tcp_wmem = 8192 250000 16777216net.core.netdev_max_backlog = 65535net.ipv4.tcp_max_syn_backlog = 65535net.core.somaxconn = 65535kernel.shmall = 1152921504606846720kernel.shmmax = 18446744073709551615vm.min_free_kbytes = 184992EOF
复制代码 生效配置
16. 创建用户组&用户
创建用户组dbgroup
创建用户组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/openGausschown omm:dbgrp -R /opt/openGauss/chmod 755 /opt/openGauss/
复制代码 18. 操纵体系重启
操纵体系底子环境参数配置优化完成后重启操纵体系
三、主节点扩容操纵
1. 主节点创建主、备节点ssh互信
创建节点互信文件
- vim /home/omm/hostfile192.168.188.185192.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
- <?xml version="1.0" encoding="UTF-8"?><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"/><br /></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><br /><!-- 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_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 切换
在主备节点正常时,出于维护的需要,将备节点切换为主节点,可保证切换过程中数据不丢失。 利用omm用户查看openGauss集群主备状态 - su - ommgs_om -t status --detail
复制代码 利用omm用户登录到想要切换为主节点的备节点,执行以下命令完成切换
- gs_ctl switchover -D /data/openGauss
复制代码 switchover或failover乐成后,记录当前主备呆板信息
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_bakmv /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
复制代码
本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请接洽 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,接待正在阅读的你也加入,一起分享。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |