哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据范畴博主】! 中国DBA联盟(ACDU)成员,目前服务于工业互联网 拿手主流Oracle、MySQL、PG、高斯及GP 运维开发,备份恢复,装置迁移,功能优化、故障应急处理等。 ✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】 ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

@TOC

前言

2023年4月1日, openGauss 5.0正式发布,本博客介绍了openGauss 5.0企业版主从布置的具体过程。

1.openGauss 5.0

2023年4月1日,openGauss 5.0.0是openGauss发布的第三个LTS版别,版别生命周期为3年。
openGauss 5.0.0版别与之前的版别功能特性坚持兼容,在内核能力、东西链、兼容性方面全面增强。
官网下载地址:
https://opengauss.org/zh/download/

openGauss 5.0企业版主从部署,实战狂飙

2.环境准备

##操作系统:
CentOS Linux release 7.9.2009 (Core)
##主机IP
主库:hostnamectl set-hostname opengauss5M
备库:hostnamectl set-hostname opengauss5B
##内存
[root@Jeames ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3020         281        2630           7         107        2684
Swap:         10239           0       10239
##字符集承认
[root@opengauss5m ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
能够在/etc/profile文件中添加export LANG=en_US.UTF-8
##软件依靠要求
下列依靠软件的默许装置包,若不存在下列软件,可参看软件对应的主张版别。

openGauss 5.0企业版主从部署,实战狂飙

✨ 2.1 封闭SeLinux

sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
setenforce 0
注:主库和备库同时修正,然后重启服务器
[root@opengauss5m ~]# /usr/sbin/sestatus
SELinux status:                 disabled

✨ 2.2 封闭防火墙

注:主备库均做如下操作
1.查看防火墙是否封闭
[root@opengauss5m ~]# systemctl status firewalld
若防火墙状况显示为active (running),则表明防火墙未封闭
若防火墙状况显示为inactive (dead),则无需再封闭防火墙
2.封闭防火墙并禁止开机重启
systemctl disable firewalld.service
systemctl stop firewalld.service

✨ 2.3 封闭RemoveIPC

1.修正/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”
vi /etc/systemd/logind.conf
RemoveIPC=no
##从头加载装备参数
systemctl daemon-reload
systemctl restart systemd-logind

✨ 2.4 设置root用户长途登录

vi /etc/ssh/sshd_config
## 将“PermitRootLogin”改为“yes”
PermitRootLogin yes
## 注释掉“Banner”地点的行
#Banner none
## 重启生效
systemctl restart sshd.service

✨ 2.5 yum装置依靠

注:两个节点均做如下操作
##创立挂载目录
mkdir /cdrom
[root@opengauss5m ~]# ls -lrt /opt/CentOS-7-x86_64-DVD-2009.iso
-rw-r--r-- 1 root root 4712300544 Apr  8 09:28 /opt/CentOS-7-x86_64-DVD-2009.iso
##挂载目录
mount -o loop /opt/CentOS-7-x86_64-DVD-2009.iso /cdrom
[root@opengauss5m ~]# df -TH
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.5G     0  1.5G   0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs                   tmpfs     1.5G   11M  1.5G   1% /run
tmpfs                   tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        96G  6.8G   89G   8% /
/dev/sda1               xfs       1.1G  158M  906M  15% /boot
tmpfs                   tmpfs     297M     0  297M   0% /run/user/0
/dev/loop0              iso9660   4.8G  4.8G     0 100% /cdrom
##yum源装备文件
[root@opengauss5m ~]# cd /etc/yum.repos.d/
[root@opengauss5m yum.repos.d]# mkdir bak
[root@opengauss5m yum.repos.d]# mv CentOS* bak
[root@opengauss5m yum.repos.d]# vi local.repo
[base-local]
name=CentOS7-local
baseurl=file:///cdrom
enabled=1
gpgcheck=0
#清空并重载yum
yum clean all
yum makecache
##测验yum装置
yum -y install tree
##装置依靠包
yum install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel libnsl -y
yum install net-tools -y

✨ 2.6 host设置

注:主备2个节点均做如下设置
##主库
[root@opengauss5m ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.10 opengauss5m
##备库
[root@opengauss5b ~]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.11 opengauss5b

✨ 2.7 Python装置

CentOS:支持Python 3.6.X,python需求经过--enable-shared方法编译
1.依靠包装置
[root@opengauss5m ~]# yum install -y zlib*
[root@opengauss5m ~]# rpm -qa | grep zlib
zlib-1.2.7-18.el7.x86_64
zlib-devel-1.2.7-18.el7.x86_64
2.装置包下载
python官网 https://www.python.org/downloads/release/python-3615/下载装置包即可
装置包为:Python-3.6.15.tgz
3.解压并编译
cd /opt
tar -zxvf Python-3.6.15.tgz
cd Python-3.6.15/
./configure --prefix=/usr/local/python3 --enable-shared
make
make install
注意:make编译时间比较长,耐性等候
4.OS上设置python的软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
5.环境校验
[root@opengauss5m ~]# python -V
python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
呈现以上报错处理办法,libpython3.6m.so.1.0复制到/usr/lib64/目录下即可
[root@opengauss5m ~]# find / -name libpython3.6m.so.1.0
/usr/local/python3/lib/libpython3.6m.so.1.0
/opt/Python-3.6.15/libpython3.6m.so.1.0
[root@opengauss5m ~]#  cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64
[root@opengauss5m ~]# python3 -V
Python 3.6.15
[root@opengauss5m ~]# python
Python 3.6.15 (default, Apr  8 2023, 11:45:45)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

openGauss 5.0企业版主从部署,实战狂飙

3.目录创立

##创立寄存装置包的目录
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
##创立数据库软件相关目录
mkdir -p /opt/openGauss
chmod -R 755 /opt/openGauss

4.装置包解压

装置包下载地址: https://opengauss.org/zh/download/
注:从以上网站下载企业版即可
上传到主库地点的目录:/opt/software/openGauss
##解压装置包
cd /opt/software/openGauss
tar -zxvf openGauss-5.0.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-5.0.0-CentOS-64bit-om.tar.gz

openGauss 5.0企业版主从部署,实战狂飙

5.XML装备文件

装置openGauss前需求创立cluster_config.xml文件。cluster_config.xml文件包括布置openGauss的服务器信息、装置途径、IP地址以及端口号等。
用于告知openGauss如何布置。用户需依据不同场景装备对应的XML文件。
本次布置以一主一备的方法创立XML装备文件
## 装备数据库称号及各项目录
[root@opengauss5m ~]# find / -name cluster_config_template.xml
/opt/software/openGauss/script/gspylib/etc/conf/cluster_config_template.xml
说明:获取XML文件模板,按照实践环境装备
修改装备XML文件:
vi /opt/software/openGauss/cluster_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss全体信息 -->
    <CLUSTER>
        <!-- 数据库称号 -->
        <PARAM name="clusterName" value="opengauss" />
        <!-- 数据库节点称号(hostname) -->
        <PARAM name="nodeNames" value="opengauss5m,opengauss5b" />
        <!-- 数据库装置目录-->
        <PARAM name="gaussdbAppPath" value="/opt/openGauss/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/opt/openGauss/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/openGauss/tmp"/>
        <!-- 数据库东西目录-->
        <PARAM name="gaussdbToolPath" value="/opt/openGauss/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/opt/openGauss/corefile"/>
        <!-- 节点IP,与数据库节点称号列表一一对应 -->
        <PARAM name="backIp1s" value="192.168.6.10,192.168.6.11"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点布置信息 -->
    <DEVICELIST>
        <!-- 节点1上的布置信息 -->
        <DEVICE sn="opengauss5m">
            <!-- 节点1的主机称号 -->
            <PARAM name="name" value="opengauss5m"/>
            <!-- 节点1地点的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1装备成同一个IP -->
            <PARAM name="backIp1" value="192.168.6.10"/>
            <PARAM name="sshIp1" value="192.168.6.10"/>
	    <!--dn-->
            <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/opt/openGauss/data/dn,opengauss5b,/opt/openGauss/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <!-- 节点2上的节点布置信息,其中“name”的值装备为主机称号 -->
        <DEVICE sn="opengauss5b">
            <!-- 节点2的主机称号 -->
            <PARAM name="name" value="opengauss5b"/>
            <!-- 节点2地点的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1装备成同一个IP -->
            <PARAM name="backIp1" value="192.168.6.11"/>
            <PARAM name="sshIp1" value="192.168.6.11"/>
	</DEVICE>
    </DEVICELIST>
</ROOT>

6.初始化装置

采用交互模式履行前置,并在履行过程中自动创立操作系统root用户互信和omm用户互信
#主库履行即可
[root@opengauss5m ~]# cd /opt/software/openGauss/script
[root@opengauss5m script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
[GAUSS-51405] : You need to install software:expect
#解决办法是装置如下依靠包
yum install expect
输入集群暗码:omm123
[FAILURE] opengauss5m:
[GAUSS-50202] : The /opt/openGauss must be empty. Or user [omm] has write permission to directory /opt/openGauss. Because it will create symbolic link [/opt/openGauss/app] to install path [/opt/openGauss/app_a07d57c3] in gs_install process with this user.
[FAILURE] opengauss5b:
[GAUSS-50202] : The /opt/openGauss must be empty. Or user [omm] has write permission to directory /opt/openGauss. Because it will create symbolic link [/opt/openGauss/app] to install path [/opt/openGauss/app_a07d57c3] in gs_install process with this user.
#以上报错处理办法,然后再从头履行
[root@opengauss5m script]# rm -rf /opt/openGauss
[root@opengauss5m script]# chmod 775 /opt -R
[root@opengauss5m script]# chown omm:dbgrp /opt -R

openGauss 5.0企业版主从部署,实战狂飙

7.履行装置

/opt/openGauss/app
#主库履行即可,在履行过程中,用户需依据提示输入数据库的暗码,暗码具有一定的复杂度,为确保用户正常运用该数据库,请记住输入的数据库暗码
设置的暗码要符合复杂度要求:
最少包括8个字符,最多包括16个字符。
不能和用户名、当时暗码(ALTER)、或当时暗码反序相同。
至少包括大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
1.登录到openGauss的主机,并切换到omm用户
[root@opengauss5m ~]# su - omm
[omm@opengauss5m ~]$ ll /opt/software/openGauss/cluster_config.xml
-rw------- 1 omm dbgrp 2532 Apr  8 11:21 /opt/software/openGauss/cluster_config.xml
gs_install -X /opt/software/openGauss/cluster_config.xml
2.装置履行成功之后,需求手动删去主机root用户的互信,即删去openGauss数据库各节点上的互信文件。
rm –rf ~/.ssh

openGauss 5.0企业版主从部署,实战狂飙

8.装置验证

1.集群状况查看
## 经过openGauss供给的gs_om东西能够完结数据库状况查看
以omm用户身份登录服务器。
履行如下指令查看数据库状况是否正常,“cluster_state ”显示“Normal”表明数据库可正常运用
[root@opengauss5m ~]# su - omm
Last login: Sat Apr  8 12:56:31 CST 2023 on pts/0
[omm@opengauss5m ~]$ gs_om -t status
-----------------------------------------------------------------------
cluster_name    : opengauss
cluster_state   : Normal
redistributing  : No
-----------------------------------------------------------------------
[omm@opengauss5m ~]$ gs_om -t status --detail
[   Cluster State   ]
cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL
[  Datanode State   ]
    node       node_ip         port      instance                       state
---------------------------------------------------------------------------------------------
1  opengauss5m 192.168.6.10    15400      6001 /opt/openGauss/data/dn   P Primary Normal
2  opengauss5b 192.168.6.11    15400      6002 /opt/openGauss/data/dn   S Standby Normal
3.gs_om -t stop
[omm@opengauss5m ~]$ gs_om -t stop
4.启动集群
[omm@opengauss5m ~]$ gs_om -t start
5.登录数据库
[omm@opengauss5m ~]$ gsql -d postgres -p 15400
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# \l
                          List of databases
   Name    | Owner | Encoding  | Collate | Ctype | Access privileges
-----------+-------+-----------+---------+-------+-------------------
 postgres  | omm   | SQL_ASCII | C       | C     |
 template0 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |       |           |         |       | omm=CTc/omm
 template1 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |       |           |         |       | omm=CTc/omm
(3 rows)

openGauss 5.0企业版主从部署,实战狂飙