openGauss3.0.0企业版一主一备安装指南
openGauss 3.0.0于2022年4月1日正式发布,本文基于openGauss 3.0.0 企业版在centos_x86_64操作系统上搭建一主一备测试环境,并将操作记录共享出来,希望能帮到有需要的小伙伴
准备软硬件安装环境
准备两台硬件环境:虚拟机4核心CPU,4GB内存,40G硬盘
检查CPU核心
cat /proc/cpuinfo | grep processor
检查内存大小
free -h
检查操作系统版本
cat /etc/centos-release
操作系统环境:CentOS7.6
下载地址:https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/
以CentOS操作系统为例,主机信息如下表所示
| 主机名称 | IP地址 |
|---|---|
| node1 | 10.16.1.100 |
| node2 | 10.16.1.101 |
修改/etc/hosts
检查主机名和IP地址是否配置正确,需要配置主机名和IP地址
hostname && ifconfig |grep broadcast|awk '{print $2}'
添加对应主机名和IP地址
echo "10.16.1.100 node1 ##openGauss OM IP Hosts Mapping" >>/etc/hosts
echo "10.16.1.101 node2 ##openGauss OM IP Hosts Mapping" >>/etc/hosts
echo -e "\n" >>/etc/hosts
关闭防火墙
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
关闭SELINUX
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
设置字符集参数
cat>> /etc/profile<<EOF
export LANG=en_US.UTF-8
EOF
设置时区和时间
rm -fr /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date -R hwclock
关闭swap交换内存
临时关闭swap
swapoff -a
修改分区表文件,删除swap mount信息
cp /etc/fstab /etc/fstab.bak
sed -i '/swap/s/^/#/' /etc/fstab
cat /etc/fstab|grep -v ^#|grep -v '^$'
设置网卡MTU值
对于X86,MTU值推荐1500,CentOS7.6默认不需要修改
ifconfig ens33 mtu 1500
关闭RemoveIPC[Only for openEulor]
在各数据库节点上,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤。
sed -i '/^RemoveIPC/d' /etc/systemd/logind.conf
sed -i '/^RemoveIPC/d' /usr/lib/systemd/system/systemd-logind.service
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
systemctl daemon-reload
systemctl restart systemd-logind
设置root用户远程登录
配置SSH服务(允许root登录,关闭Banner)
sed -i '/Banner/s/^/#/' /etc/ssh/sshd_config
sed -i '/PermitRootLogin/s/^/#/' /etc/ssh/sshd_config
echo -e "\n" >> /etc/ssh/sshd_config
echo "Banner none " >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
重启服务使设置生效
systemctl restart sshd.service
配置操作系统参数
修改内核参数,并使其生效,注意执行完后可能会输出很多文件或目录不存在可以忽略重启后就正常了
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 5
net.sctp.path_max_retrans = 10
net.sctp.max_init_retransmits = 10
net.sctp.association_max_retrans = 10
net.sctp.hb_interval = 30000
net.ipv4.tcp_retries2 = 12
vm.overcommit_memory = 0
net.sctp.sndbuf_policy = 0
net.sctp.rcvbuf_policy = 0
net.sctp.sctp_mem = 94500000 915000000 927000000
net.sctp.sctp_rmem = 8192 250000 16777216
net.sctp.sctp_wmem = 8192 250000 16777216
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
net.ipv4.ip_local_port_range = 26000 65535
kernel.sem = 250 6400000 1000 25600
vm.min_free_kbytes = 419430 ##suggest to set as physical memory * 5%
net.core.somaxconn = 65535
net.ipv4.tcp_syncookies = 1
net.sctp.addip_enable = 0
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 60
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1
vm.extfrag_threshold = 500
vm.overcommit_ratio = 90
net.ipv4.ip_local_reserved_ports = 20050-20057,26000-26007
net.sctp.sctp_mem = 94500000 915000000 927000000
net.sctp.sctp_rmem = 8192 250000 16777216
net.sctp.sctp_wmem = 8192 250000 16777216
EOF
sysctl -p
修改操作系统资源限制
配置文件系统参数、文件句柄设置、系统支持的最大进程数设置、网卡参数配置
echo "* soft stack 3072" >> /etc/security/limits.conf
echo "* hard stack 3072" >> /etc/security/limits.conf
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
echo "* soft nproc unlimited" >> /etc/security/limits.d/90-nproc.conf
tail -n 4 /etc/security/limits.conf
tail -n 1 /etc/security/limits.d/90-nproc.conf
关闭透明页[Only for CentOS]
临时关闭透明页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
编译grub,内核层面关闭透明页
sed -i '/^GRUB_CMDLINE_LINUX/d' /etc/default/grub
echo "GRUB_CMDLINE_LINUX=\"rhgb quiet transparent_hugepage=never\"" >> /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
创建用户以及组(可选)
创建omm用户以及dbgrp组
groupadd dbgrp
useradd -g dbgrp -m omm
echo omm | passwd --stdin omm
手工建立互信(可选)
生成密钥
mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa ssh-keygen -t dsa
生成本机授权文件
cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
收集公钥互信文件分发
ssh node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh node2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
测试互信
ssh node1 date ssh node2 date
安装相关软件包和python3.6.x
配置华为YUM源
mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo yum clean all
使用华为YUM源安装依赖的软件包,注意官网文档里要求的依赖不全,最好安装下面所有的软件包
yum install -y lksctp* java-1.8.0-openjdk* readline-devel psmisc bzip2 python3 python3-devel \ libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core expect
准备安装介质
创建安装包的存放目录
mkdir -p /opt/software/openGauss chmod 755 -R /opt/software
下载安装文件
cd /opt/software/openGauss
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-64bit-all.tar.gz
解压安装文件
tar -zxvf openGauss-3.0.0-CentOS-64bit-all.tar.gz tar -zxvf openGauss-3.0.0-CentOS-64bit-om.tar.gz
创建XML文件
下面是一主一备的xml
cat >> /opt/software/openGauss/cluster_config.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- opengauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="dbCluster" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="node1,node2" />
<!-- 数据库安装目录-->
<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="10.16.1.100,10.16.1.101"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICE sn="node1">
<!-- 节点1的主机名称 -->
<PARAM name="name" value="node1"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="10.16.1.100"/>
<PARAM name="sshIp1" value="10.16.1.100"/>
<!--dn-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="26000"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2,/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称 -->
<DEVICE sn="node2">
<!-- 节点2的主机名称 -->
<PARAM name="name" value="node2"/>
<!-- 节点2所在的AZ及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="10.16.1.101"/>
<PARAM name="sshIp1" value="10.16.1.101"/>
</DEVICE>
</DEVICELIST>
</ROOT>
EOF
chmod +x /opt/software/openGauss/cluster_config.xml
配置环境变量
cat>> /etc/profile << EOF
export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH
EOF
重启两台主机
init 6
执行交互模式前置脚本
在执行过程中自动创建操作系统root用户互信和omm用户互信
cd /opt/software/openGauss/script/
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
执行安装
使用root执行,给安装目录授权
cd /opt/software/openGauss/script
chmod -R 775 /opt/software/openGauss/script
chown -R omm:dbgrp /opt/software/openGauss/script
自定义内存参数安装
su - omm
cd /opt/software/openGauss/script/
./gs_install -X /opt/software/openGauss/cluster_config.xml \
--gsinit-parameter="--encoding=UTF8" \
--dn-guc="max_connections=1000" \
--dn-guc="max_process_memory=2GB" \
--dn-guc="shared_buffers=128MB" \
--dn-guc="bulk_write_ring_size=128MB" \
--dn-guc="cstore_buffers=16MB"
安装验证
以omm用户身份登录,命令检查数据库状态是否有两个节点P Primary Normal和S Standby Normal状态
su - omm gs_om -t status --detail
使用gsql工具登录
gsql -d postgres -p 26000 -r
在主库查询openGauss版本,创建表t1插入数据,在备库查询验证是否同步
[omm@node1 ~]$ gsql -d postgres -p 26000 -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# select version();
version
------------------------------------------------------------------------------------------------------------------------------------------------------
(openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)
openGauss=# create table t1 as select generate_series(1,10) id;
INSERT 0 10
openGauss=# select * from t1;
id
----
1
2
3
4
5
6
7
8
9
10
(10 rows)
openGauss=# \q
[omm@node1 ~]$
[root@node2 ~]# su - omm
Last login: Mon Apr 25 20:22:27 CST 2022
[omm@node2 ~]$ gsql -d postgres -p 26000 -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# select * from t1;
id
----
1
2
3
4
5
6
7
8
9
10
(10 rows)
openGauss=# \q
[omm@node2 ~]$




