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

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

openGauss 2024-10-09
134

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

      <?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-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
                          复制
                          注意:生产环境建议开启防火墙防护,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-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. 设置会话超时时间

                                          系统设置合理的会话超时时间可以降低因管理员人为原因而导致系统被攻击者攻击的风险。
                                          在/etc/profile文件最后添加TMOUT=300,即终端300秒没有操作退出tty终端
                                            vim /etc/profile
                                            export TMOUT=300

                                            sed -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.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

                                                                                          <?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  - 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
                                                                                                                      复制

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

                                                                                                                      评论