软件版本
操作系统:CentOS7.9(主:192.168.68.103、备:192.168.68.104)
Linux文件系统:剩余inode个数 > 15亿(推荐) # df -i
数据库:openGauss5.0.1
一、安装前准备
1.1 安装包下载
官方下载地址:https://opengauss.org/zh/download/
openGauss安装包下载,这里选择openGauss_5.0.1 企业版。
1.2 安装Python3
CentOS7部署openGauss需要python3.6版本。
下载地址:https://cdn.npmmirror.com/binaries/python/3.6.15/Python-3.6.15.tar.xz
安装依赖软件
yum install -y gcc make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
解压源码、编译安装
tar -xvf Python-3.6.15.tar.xz
cd Python-3.6.15
./configure --prefix=/usr/local/python3 --enable-shared
make && make install
将原来python备份
mv /usr/bin/python /usr/bin/python.bak
添加python3的软链接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
修改yum使用python版本
由于yum使用python的版本2,所以将下面两个文件的第一行 #!/usr/bin/python 修改为 #!/usr/bin/python2
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
修改环境变量
vi /etc/profile
export LD_LIBRARY_PATH=/usr/local/python3/lib:$LD_LIBRARY_PATH
source /etc/profile
或者,直接将lib文件复制到/usr/lib64目录下,如下:
cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/
1.2 安装环境准备
主备两台服务器(GsDb5Srv103、GsDb5Srv104)分别进行如下准备。
1.2.1 硬件环境要求
1.2.2 软件环境要求
1.2.3 软件依赖要求
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel zlib readline bzip2 expect vim tar tree
1.2.4 修改hosts和hostname
1.2.5 关闭操作系统防火墙、SELINUX
目前openGauss仅支持在防火墙关闭的状态下进行安装。
- 修改/etc/selinux/config文件中的SELINUX值为disabled
[root@GsDb5Srv103 ~]# vi /etc/selinux/config
setenforce 0 #即时生效,否则需要重启系统 getenforce
查看状态:/usr/sbin/sestatus
2、检查防火墙是否关闭
[root@GsDb5Srv103 ~]# systemctl status firewalld
若防火墙状态显示为active (running),则表示防火墙未关闭
若防火墙状态显示为inactive (dead),则无需再关闭防火墙
3、关闭防火墙并禁止开机重启
[root@GsDb5Srv103 ~]# systemctl stop firewalld
[root@GsDb5Srv103 ~]# systemctl disable firewalld
1.2.6 设置字符集参数
将数据库各节点设置为相同的字符集(zh_CN.UTF-8、en_US.UTF-8)
echo "export LANG=en_US.UTF-8" >> /etc/profile
echo "export LC_CTYPE=en_US.UTF-8" >> /etc/profile
source /etc/profile
echo $LANG $LC_CTYPE
1.2.7 设置时区和时间
查询时区
[root@GsDb5Srv103 ~]# timedatectl
# timedatectl list-timezones | grep Shanghai
# timedatectl set-timezone Asia/Shanghai
如果数据库各节点时间不一致,可建立内部时间服务器(建议:chrony),或者使用date -s命令将各数据库节点的时间设置为统一时间,举例如下。
date -s "Sat Sep 27 16:00:07 CST 2020"
1.2.8 关闭swap交换内存(可选)
关闭swap交换内存是为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开swap交换内存保障正常运行。
使用swapoff -a命令将交换内存关闭—集群模式则需要各节点执行
关闭交换内存命令
[root@GsDb5Srv103 ~]# swapoff -a
如果需要开启交换内存,则执行如下命令
[root@GsDb5Srv103 ~]# swapon -a
1.2.9 设置网卡MTU值(可选)
将各数据库节点的网卡MTU值设置为相同大小。对于x86,MTU值推荐1500;对于ARM,MTU值推荐8192。
查询服务器的网卡名称
[root@GsDb5Srv102 ~]# ifconfig
设置网卡MTU值设置为8192,---集群模式则需要各节点执行
[root@GsDb5Srv102 ~]# ifconfig ens160 mtu 8192
注:上述操作只能临时修改,永久修改如下
# vi /etc/sysconfig/network-scripts/ifcfg-ens160
#增加如下内容
MTU="8192"
1.2.10 关闭RemoveIPC
集群模式则需要各节点上执行,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤。
在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭,可以跳过该步骤。
1.修改/etc/systemd/logind.conf文件中的“RemoveIPC”值为“no”。
a. 使用VIM打开logind.conf文件。
vim /etc/systemd/logind.conf
b. 修改“RemoveIPC”值为“no”。
RemoveIPC=no
2.修改/usr/lib/systemd/system/systemd-logind.service文件中的“RemoveIPC”值为“no”。
a. 使用VIM打开systemd-logind.service文件。
vim /usr/lib/systemd/system/systemd-logind.service
b. 修改“RemoveIPC”值为“no”。
RemoveIPC=no
3.重新加载配置参数。
systemctl daemon-reload
systemctl restart systemd-logind
4.检查修改是否生效。
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
1.2.11 设置root用户远程登录(可选)
修改PermitRootLogin配置,允许root用户远程登录,root用户默认是可登录的,否则需要修改。
修改sshd_config文件
vim /etc/ssh/sshd_config
修改权限配置,可以使用以下两种方式实现
1、注释掉“PermitRootLogin no”
#PermitRootLogin no
2、将“PermitRootLogin”改为“yes”
PermitRootLogin yes
1.2.12 配置Banner
修改Banner配置,去掉连接到系统时,系统提示的欢迎信息。欢迎信息会干扰安装时远程操作的返回结果,影响安装正常执行。
编辑sshd_config文件
vim /etc/ssh/sshd_config
修改Banner配置,注释掉“Banner”所在的行
#Banner XXXX
使设置生效
systemctl restart sshd
1.2.13 了解安装用户及用户组
为了实现安装过程中安装帐户权限最小化,及安装后openGauss的系统运行安全性,安装脚本在安装过程中会自动按照用户指定内容创建安装用户,并将此用户作为后续运行和维护openGauss的管理员帐户。
在安装openGauss过程中运行“gs_preinstall”时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。
1.2.14 关闭HISTORY记录(可选)
说明:
为避免指令历史记录安全隐患,需关闭各主机的history指令。
步骤 1 修改根目录下/etc/profile文件。
vim /etc/profile
步骤 2 设置HISTSIZE值为0。例如,系统中HISTSIZE默认值为1000,将其修改为0。
HISTSIZE=0
步骤 3 保存/etc/profile。
:wq
步骤 4 设置/etc/profile生效。
source /etc/profile
1.2.15 创建相关目录
说明:
•不建议把安装包的存放目录规划到openGauss用户的根目录或其子目录下,可能导致权限问题。
•openGauss用户须具有/opt/software/openGauss目录的读写权限。
创建用户和用户组
groupadd dbgrp
useradd -g dbgrp omm
passwd omm
创建相关目录
mkdir -p /opt/software/openGauss /opt/openGauss /data/dn
修改相关目录属主
chown -R omm.dbgrp /opt/software/openGauss /opt/openGauss /data
1.2.16 配置SSH免密登录
openGauss在安装过程中,需要在openGauss中的主机间执行命令、传送文件等操作。因此,在普通用户安装前需要确保互信是连通的。前置脚本中会先建立root用户间的互信,然后创建普通用户,并建立普通用户间的互信。
root用户互信可能会存在安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。
#配置root用户的SSH免密登录
#GsDb5Srv103(192.168.68.103)
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.68.104
ssh root@192.168.68.104
#GsDb5Srv104(192.168.68.104)
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.68.103
ssh root@192.168.68.103
#配置omm用户的SSH免密登录
#GsDb5Srv103(192.168.68.103)
su - omm
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub omm@192.168.68.104
ssh omm@192.168.68.104
#GsDb5Srv104(192.168.68.104)
su - omm
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub omm@192.168.68.103
ssh omm@192.168.68.103
注:部署完成后删除openGauss数据库各节点上的互信相关文件/root/.ssh
su - root
rm –rf ~/.ssh
二、系统资源参数配置
2.1 设置sysctl.conf
操作系统参数设置如下,其他配置项由预安装脚本自动设置。
vi /etc/sysctl.conf
net.ipv4.tcp_retries1=5
net.ipv4.tcp_syn_retries=5
net.ipv4.tcp_synack_retries=5
net.ipv4.ip_local_port_range = 26000 65535
net.ipv4.tcp_fin_timeout=60
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
vm.extfrag_threshold=500
vm.overcommit_ratio=90
使设置生效:sysctl -p
2.2 配置资源限制
#配置资源限制
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
2.3 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#修改写入配置文件
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/sh /etc/rc.d/rc.local
三、预安装
预安装即运行脚本gs_preinstall执行相关检测和设置。
3.1 上传并解压安装包
解压安装包openGauss-5.0.1-CentOS-64bit-all.tar.gz,到软件存放目录:
tar -xvf openGauss-5.0.1-CentOS-64bit-all.tar.gz -C /opt/software/openGauss/
安装包解压后,会有OM安装包和Server安装包。
继续解压OM安装包,会在/opt/software/openGauss/路径下自动生成script子目录,并且在script目录下生成gs_preinstall等各种OM工具脚本。
cd /opt/software/openGauss
tar -xvf openGauss-5.0.1-CentOS-64bit-om.tar.gz
更改目录权限
chown -R omm.dbgrp /opt/software/openGauss
3.2 创建XML配置文件
使用官方提供的配置文件模版修改:
cp /opt/software/openGauss/script/gspylib/etc/conf/cluster_config_template.xml /opt/software/openGauss/cluster_config.xml
配置文件如下:
3.3 执行预安装脚本
在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。
执行交互模式前置脚本,执行过程中自动创建操作系统root用户互信和omm用户互信。
[root@GsDb5Srv103 openGauss]# ./script/gs_preinstall -U omm -G dbgrp -X ./cluster_config.xml --non-interactive
-U omm:表示使用omm作为用户。
-G dbgrp:表示使用dbgrp作为用户组。
-X cluster_config.xml:表示使用config.xml作为配置文件。
注;之前手工配了互信的话就可以加--non-interactive 就不会提示再配互信了
3.4 检查系统环境
执行安装前,可以先执行相关检测:
[root@GsDb5Srv103 openGauss]# ./script/gs_checkos -i A -h GsDb5Srv103,GsDb5Srv104 --detail
# ./script/gs_checkos -i B -h GsDb5Srv103,GsDb5Srv104
四、开始安装openGauss数据库集群
- omm指的是前置脚本gs_preinstall中-U参数指定的用户。
- 安装脚本gs_install必须以前置脚本中指定的omm执行,否则,脚本执行会报错。
- 前置条件:已成功执行前置脚本 gs_preinstall;所有服务器操作系统和网络均正常运行;用户需确保各个主机上的 locale 保持一致。
4.1 使用root用户修改目录属主为 omm:dbgrp
chmod -R 755 /opt/openGauss
chmod -R 755 /opt/software/openGauss
chown -R omm:dbgrp /opt/software/openGauss /opt/openGauss
4.2 开始安装(gs_install)
必须使用上面预安装指定的omm用户进行安装,omm用户为运行openGauss的用户。
切换omm用户
[root@GsDb5Srv103 openGauss]# su - omm
使用gs_install安装openGauss
[omm@GsDb5Srv103 ~]$$ cd /opt/software/openGauss
[omm@GsDb5Srv103 openGauss]$ ./script/gs_install -X ./cluster_config.xml
注:在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码(Gauss@123)。
安装运行日志目录:/opt/openGauss/omm/omm/om
设置的密码要符合复杂度要求:
1、最少包含8个字符。
2、不能和用户名、当前密码(ALTER)、或当前密码反序相同。
3、 至少包含大写字母(A-Z),小写字母(a-z),数字,非字母数字字符(限定为~!@#$%^&*()-_=+|[{}];:,/?)四类字符中的三类字符。
4、 安装过程中会生成ssl证书,证书存放路径为{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为openGauss配置文件中指定的程序安装目录。
5、日志文件路径下会生成两个日志文件:“gs_install-YYYY-MMDD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”。
4.3 验证openGauss数据库
执行如下命令查看数据库状态;
gs_om -t status --detail
gs_om -t query
cluster_state : Normal ----表示已启动,可以正常使用,如果状态不是Normal表示不可用。
注:安装执行成功之后,需要手动删除主机root用户的互信,即删除openGauss数据库各节点上的互信文件。
su - root
rm -rf ~/.ssh
4.3.1 查询openGauss各个节点信息
执行如下命令,查询各个节点信息(若有多个节点)
#主节点
gs_ctl query -D /data/dn
#备节点
gs_ctl query -D /data/dn
4.3.2 登录openGauss
登录数据库主节点验证服务。
gsql -d postgres -p 5432 -r
查看主从复制信息:select * from pg_stat_replication;
五、主从复制验证
5.1 主节点创建库表新增记录
gsql -p 5432 -d postgres -r
create database testdb;
\c testdb
create table t1(id int, name varchar(30));
insert into t1 values(1, '张三'), (2, '李四'), (3, '王五');
select * from t1;
5.2 备节点查看数据是否同步
gsql -p 5432 -d postgres -r
\c testdb
select * from t1;