企业版安装

系统配置(所有节点均需配置)

安装依赖

1
2
3
yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel libnsl tar wget bzip2 expect
# CentOS 需要为 python3.6
yum -y install python3*

关闭 selinux

1
2
sed -i '/^SELINUX=/c'SELINUX=disabled /etc/selinux/config
setenforce 0

关闭防火墙

1
2
3
4
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl disable iptables.service
systemctl stop iptables.service

设置编码

1
2
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
source /etc/locale.conf 

设置时区

1
ln -sfn  /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置网卡 mtu

  • 万兆网络 mtu 推荐 8192,其他情况不能小于 1500
1
ip link set ens32 mtu 8192

关闭 swap

1
2
swapoff -a
vi /etc/fstab

关闭 RemoveIPC(Centos无需配置)

  • 修改/etc/systemd/logind.conf文件中的 RemoveIPC 值为 no 。
1
2
3
4
sed -i "s/#RemoveIPC=no/RemoveIPC=no/g" /etc/systemd/logind.conf
cat <<EOF >>/usr/lib/systemd/system/systemd-logind.service
RemoveIPC=no
EOF
  • 重新加载配置
1
2
systemctl daemon-reload
systemctl restart systemd-logind
  • 检查配置是否生效
1
2
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC

关闭 HISTORY 记录

  • 为避免指令历史记录安全隐患,需关闭各主机的 history 指令。
1
2
3
4
cat <<EOF >> /etc/profile
HISTSIZE=0
EOF
source /etc/profile

获取安装包

1
2
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-3.1.0-CentOS-64bit-all.tar.gz

创建 XML 配置文件

  • 安装 openGauss 前需要创建 cluster_config.xml 文件。cluster_config.xml 文件包含部署 openGauss 的服务器信息、安装路径、IP 地址以及端口号等。用于告知 openGauss 如何部署
1
2
3
4
5
# 查看 xml 文件
$ tar -ztvf openGauss-3.1.0-CentOS-64bit-om.tar.gz  |grep "cluster_config_template.xml"
-rwxr-xr-x root/root      1437 2022-09-29 14:34 ./script/gspylib/etc/conf/cluster_config_template.xml
# 提取包内 xml 文件至当前目录
$ tar -zxvf openGauss-3.1.0-CentOS-64bit-om.tar.gz  "./script/gspylib/etc/conf/cluster_config_template.xml"  --strip-components 5
  • xml 文件
    • 注意
      • 配置目录时,要保证目录之间不相互耦合,即各个配置目录不关联,删除其中任意一个目录,不会级联删除其他目录
      • 路径中不能包含特殊字符

说明

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
  <!-- 整体信息 -->
  <CLUSTER>
  <!-- 数据库名称 -->
    <PARAM name="clusterName" value="Cluster_template" />  
  <!-- 数据库节点名称(hostname) -->
    <PARAM name="nodeNames" value="node1_hostname,c76-02" />
  <!-- 数据库安装目录-->
    <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
  <!-- 日志目录-->
    <PARAM name="gaussdbLogPath" value="/var/log/omm" />
  <!-- 临时文件目录-->
    <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
  <!--数据库工具目录-->
    <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
  <!--数据库core文件目录-->
    <PARAM name="corePath" value="/opt/huawei/corefile"/>
  <!-- 节点IP,与数据库节点名称列表一一对应 -->
    <PARAM name="backIp1s" value="172.16.2.181,172.16.2.182"/>
  <!-- 是否开启数据库节点自选主 -->
    <PARAM name="enable_dcf" value="on"/>
  <!-- 开启开关后对应的节点IP、PORT和角色信息 -->
    <PARAM name="dcf_config" value="on">
    <!-- 是否开启DN自选主 --> 
    <PARAM name="enable_dcf" value="on"/> 
    <!-- 开启开关后对应的节点IP、PORT和角色信息 --> 
    <PARAM name="dcf_config" value="[{&quot;stream_id&quot;:1,&quot;node_id&quot;:1,&quot;ip&quot;:&quot;8.92.1.85&quot;,&quot;port&quot;:16683,&quot;role&quot;:&quot;LEADER&quot;},{&quot;stream_id&quot;:1,&quot;node_id&quot;:2,&quot;ip&quot;:&quot;8.92.1.86&quot;,&quot;port&quot;:16683,&quot;role&quot;:&quot;FOLLOWER&quot;},{&quot;stream_id&quot;:1,&quot;node_id&quot;:3,&quot;ip&quot;:&quot;8.92.1.87&quot;,&quot;port&quot;:16683,&quot;role&quot;:&quot;FOLLOWER&quot;}]"/>
  </CLUSTER>

  <!-- 每台服务器上的节点部署信 -->
  <DEVICELIST>
    <!-- 节点1上的部署信息 -->
    <DEVICE sn="node1_hostname">
      <!-- 节点1的主机名 -->
      <PARAM name="name" value="node1_hostname"/>
      <!-- 节点1所在的az及az的优先级 -->
      <PARAM name="azName" value="AZ1"/>
      <PARAM name="azPriority" value="1"/>
      <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
      <PARAM name="backIp1" value="172.16.2.181"/>
      <PARAM name="sshIp1" value="172.16.2.181"/>
      <!-- node1是否为级联备,on表示该实例为级联备,另外级联备机在相同的AZ里需要配有备机 -->
      <PARAM name="cascadeRole" value="off"/>
      <!-- dn -->
      <PARAM name="dataNum" value="1"/>
      <PARAM name="dataPortBase" value="15400"/>
      <PARAM name="dataNode1" value="/opt/huawei/install/data/dn,c76-02,/opt/huawei/install/data/dn"/>
      <PARAM name="dataNode1_syncNum" value="0"/>
    </DEVICE>

    <DEVICE sn="c76-02">
      <PARAM name="name" value="c76-02"/>
      <PARAM name="azName" value="AZ1"/>
      <PARAM name="azPriority" value="1"/>
      <PARAM name="backIp1" value="172.16.2.182"/>
      <PARAM name="sshIp1" value="172.16.2.182"/>
    </DEVICE>
  </DEVICELIST>
</ROOT>

单节点

1
2
mkdir -p /opt/software/openGauss
vi /opt/software/openGauss/cluster_config.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="oe1" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/opt/huawei/corefile" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="172.16.2.181"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="oe1">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="oe1"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="172.16.2.181"/>
            <PARAM name="sshIp1" value="172.16.2.181"/>
               
	    <!--dbnode-->
	    <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

三节点

1
2
mkdir -p /opt/software/openGauss
vi /opt/software/openGauss/cluster_config.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="UTF-8"?> 
<ROOT> 
    <!-- openGauss整体信息 --> 
    <CLUSTER> 
        <PARAM name="clusterName" value="Cluster_template" /> 
        <PARAM name="nodeNames" value="c76-01,c76-02,c76-03" /> 
    
        <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> 
        <PARAM name="gaussdbLogPath" value="/var/log/omm" /> 
        <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/> 
        <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> 
        <PARAM name="corePath" value="/opt/huawei/corefile"/> 
        <PARAM name="backIp1s" value="172.16.2.181,172.16.2.182,172.16.2.183"/> 
     
    </CLUSTER> 
    <!-- 每台服务器上的节点部署信息 --> 
    <DEVICELIST> 
        <!-- node1上的节点部署信息 --> 
        <DEVICE sn="c76-01"> 
            <PARAM name="name" value="c76-01"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="172.16.2.181"/> 
            <PARAM name="sshIp1" value="172.16.2.181"/> 
            <!--CM节点部署信息--> 
            <PARAM name="cmsNum" value="1"/> 
            <PARAM name="cmServerPortBase" value="15000"/> 
            <PARAM name="cmServerListenIp1" value="172.16.2.181,172.16.2.182,172.16.2.183"/> 
            <PARAM name="cmServerHaIp1" value="172.16.2.181,172.16.2.182,172.16.2.183"/> 
            <PARAM name="cmServerlevel" value="1"/> 
            <PARAM name="cmServerRelation" value="c76-01,c76-02,c76-03"/> 
            <PARAM name="cmDir" value="/opt/huawei/data/cmserver"/> 
	    <!--dn--> 
            <PARAM name="dataNum" value="1"/> 
	    <PARAM name="dataPortBase" value="15400"/> 
	    <PARAM name="dataNode1" value="/opt/huawei/install/data/dn,c76-02,/opt/huawei/install/data/dn,c76-03,/opt/huawei/install/data/dn"/> 
            <PARAM name="dataNode1_syncNum" value="0"/> 
        </DEVICE> 
 
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 --> 
        <DEVICE sn="c76-02"> 
            <PARAM name="name" value="c76-02"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="172.16.2.182"/> 
            <PARAM name="sshIp1" value="172.16.2.182"/> 
            <!-- cm --> 
            <PARAM name="cmServerPortStandby" value="15000"/> 
            <PARAM name="cmDir" value="/opt/huawei/data/cmserver"/> 
	</DEVICE> 
 
        <!-- node3上的节点部署信息,其中“name”的值配置为主机名称 --> 
        <DEVICE sn="c76-03"> 
            <PARAM name="name" value="c76-03"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="172.16.2.183"/> 
            <PARAM name="sshIp1" value="172.16.2.183"/> 
            <!-- cm --> 
            <PARAM name="cmServerPortStandby" value="15000"/> 
            <PARAM name="cmDir" value="/opt/huawei/data/cmserver"/> 
	</DEVICE> 
    </DEVICELIST> 
</ROOT>

利用 gs_preinstall 初始化安装环境

  • 准备包
1
2
3
4
5
6
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
cd /opt/software/openGauss
mv ~/openGauss-3.1.0-CentOS-64bit-all.tar.gz  .
tar -zxvf openGauss-3.1.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-3.1.0-CentOS-64bit-om.tar.gz
  • 执行
    • 如果部署多节点会多次获取密码用于配置 ssh 免密
1
2
cd /opt/software/openGauss/script
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
  • check
1
2
3
4
# 单节点
./gs_checkos -i A -h c76-01 --detail
# 多节点
/opt/software/openGauss/script/gs_checkos -i A -h c76-01,c76-02,c76-03 --detail

执行安装

  • 切换段 omm 用户
1
su - omm
  • 安装
1
gs_install -X /opt/software/openGauss/cluster_config.xml
  • 连接
1
gsql -d postgres -p 15400 -r

管理

  • 启动
1
gs_om -t start
  • 停止
1
gs_om -t stop
  • 查看状态
1
gs_om -t status --detail

开启从库可读

  • 如果主备机上的openGauss数据库实例正在运行,请先分别停止主备机上的数据库实例
1
gs_om -t stop
  • 三节点更改参数,开启从节点可读
1
2
3
4
5
6
$ sed -i "s@#hot_standby_feedback = off@hot_standby_feedback = on@g" /opt/huawei/install/data/dn/postgresql.conf
$ cat /opt/huawei/install/data/dn/postgresql.conf|grep hot_standby
wal_level = hot_standby                 # minimal, archive, hot_standby or logical
hot_standby = on                        # "on" allows queries during recovery
# 去掉此条住注释,从库可读
#hot_standby_feedback = off             # send info from standby to prevent
  • 逐个节点重启
1
gs_om -t restart