统信服务器操作系统V20 1070e【openGauss 5.0.2 LTS 单节点扩容主备节点】

文摘   2024-10-08 18:01   广东  

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,查看数据库集群状态

gs_om -t status --detail

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

验证时区和时间

timedatectl status

3. 关闭防火墙

systemctl disable firewalld.servicesystemctl stop firewalld.service
注意:生产环境建议开启防火墙防护,openGauss数据库在初始化系统环境时会检测防火墙的状态,安装前需关闭防火墙,等待数据库安装完成后可启动防火墙放行指定端口。

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-node2EOF

查看hosts文件

cat /etc/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=300sed -i "s/TMOUT.*/TMOUT=300/g" /etc/profile

使用source命令生效配置

source /etc/profile

9. 设置history记录

`HISTSIZE` 控制命令历史记录的长度的环境变量,调整它可以大小可以减少历史命令中敏感信息泄露的风险。
修改/etc/profile中HISTSIZE值
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.confecho "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service

重新加载服务配置文件

systemctl daemon-reload

重启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

生效配置

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/openGausschown omm:dbgrp -R /opt/openGauss/chmod 755 /opt/openGauss/

18. 操作系统重启

操作系统基础环境参数配置优化完成后重启操作系统

systemctl    reboot

三、主节点扩容操作

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"/>
</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 切换

在主备节点正常时,出于维护的需要,将备节点切换为主节点,可保证切换过程中数据不丢失。
使用omm用户查看openGauss集群主备状态
su  - ommgs_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_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
开源关系型数据库
 最新文章