一、openGauss简述
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。
openGauss社区版本分为长期支持版本和创新版本:
长期支持版本 (LTS) :规模上线使用,LTS版本发布间隔周期为2年,社区提供3年支持,社区OGSP伙伴提供3年以后维护支持服务,openGauss 6.0.0 LTS 版本发布时间在 2024 年 9 月 30 日, openGauss 7.0.0 LTS 版本发布时间在 2026 年 9 月 30 日。
创新版本 (RCx) :作为LTS版本发布前的阶段性特性体验版本,仅供测试使用,提供6个月社区支持。
二、部署概要
openGauss是集中式数据库系统,在这样的系统架构中,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发,实现对数据处理的快速响应。同时通过日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。
openGauss支持单机部署和单机HA部署两种部署方式。单机部署时,可在一个主机部署多个数据库实例,但为了数据安全,不建议用户这样部署。单机HA部署支持一台主机和最少一台备机,备机一共最多8台的配置方式。
本文通过搭建openEuler 22.03 LTS SP4虚拟机环境来部署单机openGauss_6.0.0 企业版。
关于openGauss安装包下载,openGauss官网https://opengauss.org/zh/download/中可以下载已发行的安装包,也可以到Gitee仓库https://gitee.com/opengauss/openGauss-workbench中下载最新代码构建的安装包。
三、软件环境准备
1、修改主机名和IP
举例:
#设置新的主机名
hostnamectl set-hostname openGaussDB
#查看主机名
hostnamectl status
vi /etc/hosts
192.168.126.139 openGaussDB
2、关闭防火墙
# 关闭防火墙
sudo systemctl stop firewalld
# 禁用防火墙
sudo systemctl disable firewalld
# 查看防火墙状态
sudo systemctl status firewalld
3、配置时间同步
(1)检查NTP服务是否开启
# systemctl status chronyd.service
(2)查看chrony服务是否同步
# chrony tracking
(3)修改chrony服务,此处设置主控机(这里假设为192.168.126.110)作为时间同步服务器,先修改主控机(服务端)设置
# vi /etc/chrony.conf
添加allow 0.0.0.0/0 添加local stratum 10
注释掉上方的server iburst
(4)重启服务
systemctl restart chronyd.service
(5) 其他所有节点,需同步主控机,各节点操作如下
vi /etc/chrony.conf
#注释server iburst,新增
server 192.168.126.110 iburst
#重启
systemctl restart chronyd.service
#检查是否同步
chronyc sources -v
#查看时间同步源状态
chronyc sourcestats -v
#立刻手工同步
chronyc -a makestep
#校验时间服务器
chronyc tracking
4、禁用 SELinux
# 查看/etc/selinux/config
cat /etc/selinux/config
# 永久禁用 SELinux
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo sed -i 's/^SELINUX=permissive$/SELINUX=disabled/' /etc/selinux/config
# 查看 SELinux 当前的状态
sestatus && getenforce && cat /etc/selinux/config#重启
reboot
5、关闭RemoveIPC
在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭。
6、字符集设置
将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为Unicode编码)。
echo "export LANG=en_US.UTF-8" >> /etc/profile
source /etc/profile
7、设置时间和时区
timedatectl set-timezone Asia/Shanghai
timedatectl status
8、transparent_hugepage设置
openGauss默认关闭使用transparent_hugepage服务,并将关闭命令写入操作系统启动文件。
9、文件句柄设置
需要对文件句柄数进行手动设置时,使用root用户执行如下命令进行参数修改:
echo "* soft nofile 1000000" >>/etc/security/limits.conf
echo "* hard nofile 1000000" >>/etc/security/limits.conf
完成修改后,需重启操作系统使得设置的参数生效。
10、系统支持的最大进程数设置
需要对系统支持的最大进程数进行手动设置时,执行如下命令打开conf文件。
vim /etc/security/limits.conf
#推荐取值unlimited
* hard nproc unlimited
* soft nproc unlimited
11、安装依赖包
联网情况下可以使用默认yum源。
yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch *lsb-core* readline-devel libnsl bzip2 expect
12、创建安装目录并上传安装包
su – root
mkdir -p /software/openGauss
chmod 755 -R /software
13、解压安装介质并创建XML配置文件(cluster_config.xml)
解压下载的安装包openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz。
cd /software/openGauss
tar -zxvf openGauss-All-6.0.0-openEuler22.03-x86_64.tar.gz
安装包解压后,会有OM安装包和Server安装包。继续解压OM安装包,会在/software/openGauss路径下自动生成script子目录,并且在script目录下生成gs_preinstall等各种OM工具脚本。
tar -zxvf openGauss-OM-6.0.0-openEuler22.03-x86_64.tar.gz
修改安装包目录权限(openGauss用户须具有/software/openGauss目录的读写权限)
chmod 755 -R /software
安装openGauss前需要创建cluster_config.xml文件。cluster_config.xml文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场景配置对应的XML文件。
在script/gspylib/etc/conf/cluster_config_template.xml获取XML文件模板。
也可以通过参考官网示例创建:
https://docs-opengauss.osinfra.cn/zh/docs/6.0.0/docs/InstallationGuide/%E5%88%9B%E5%BB%BAXML%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html
进入到工具脚本存放目录
cd /software/openGauss/script
cp ./gspylib/etc/conf/cluster_config_template.xml /opt/software/openGauss/
mv cluster_config_template.xml cluster_config.xml
修改配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整体信息 -->
<CLUSTER>
<!-- 数据库名称 -->
<PARAM name="clusterName" value="dbCluster" />
<!-- 数据库节点名称(hostname) -->
<PARAM name="nodeNames" value="datakitServer" />
<!-- 数据库安装目录-->
<PARAM name="gaussdbAppPath" value="/opt/software/openGauss/app" />
<!-- 日志目录-->
<PARAM name="gaussdbLogPath" value="/home/omm/log/omm" />
<!-- 临时文件目录-->
<PARAM name="tmpMppdbPath" value="/opt/software/openGauss/tmp" />
<!-- 数据库工具目录-->
<PARAM name="gaussdbToolPath" value="/opt/software/openGauss/install/om" />
<!-- 数据库core文件目录-->
<PARAM name="corePath" value="/opt/software/openGauss/corefile" />
<!-- 节点IP,与数据库节点名称列表一一对应 -->
<!-- 如果用ipv6 替换ipv4地址即可 如:<PARAM name="backIp1s" value="2407:xxxx:xxxx:xxxx:xxxx:xxxx:caa:2335"/> -->
<PARAM name="backIp1s" value="192.168.126.139"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- 节点1上的部署信息 -->
<DEVICE sn="datakitServer">
<!-- 节点1的主机名称 -->
<PARAM name="name" value="datakitServer"/>
<!-- 节点1所在的AZ及AZ优先级 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<!-- 用ipv6安装部署时 换上ipv6地址即可,后面xml文件示例也是同样操作 -->
<PARAM name="backIp1" value="192.168.126.139"/>
<PARAM name="sshIp1" value="192.168.126.139"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/home/omm/data"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
注意节点 hostname 应与/etc/hostname 中保持一致
四、openGauss 6.0.0LTS企业版单机部署
1、预安装环境检查与配置
创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs_preinstall准备好安装用户及环境。
安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:
自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见配置操作系统参数。
自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。
openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。
读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。
执行预安装命令:
使用预安装脚本检查系统环境,并设置必要的系统参数。
# cd /software/openGauss/script
# ./gs_preinstall -U omm -G dbgrp -X /software/openGauss/cluster_config.xml
gs_preinstall命令参数说明:
gs_preinstall is a utility to create an installation environment for a cluster.
Usage:
gs_preinstall -? | --help
gs_preinstall -V | --version
gs_preinstall -U USER -G GROUP -X XMLFILE
[-L] [--skip-os-set] [--env-var="ENVVAR" [...]]
[--sep-env-file=ENVFILE] [--skip-hostname-set] [-l LOGFILE]
[--non-interactive] [--delete-root-trust] [--unused-third-party]
General options:
-U Cluster user.
-G Group of the cluster user.
-X Path of the XML configuration file.
-L Only perform preinstallation on local
nodes.
--skip-os-set Whether to skip OS parameter setting.
(The default value is set.)
--env-var="ENVVAR" OS user environment variables.
--sep-env-file=ENVFILE Path of the MPP environment file.
--skip-hostname-set Whether to skip hostname setting.
(The default value is set.)
--skip-cgroup-set Whether to skip cgroup setting.
--one-stop-install Interactive one stop installation
(The default value is unset.)
-l Path of log file.
-?, --help Show help information for this
utility, and exit the command line mode.
-V, --version Show version information.
--non-interactive Pre-execution of non-secure mode.
If it is not specified, you can choose
whether create the SSH trust for root
user or cluster user.
If it is specified, you must ensure the
SSH trust for root user and cluster
user have been created.
--delete-root-trust Whether to delete root trust.
(The default value is not deleted)
--unused-third-party Whether to use om's third-party.
(The default value is used)
--enable-perf-config Use gs_perfconfig to tune os configuration
after pre installation.
--sep-env-file不指定的话默认的环境变量就写在用户家目录的.bashrc下面
确认创建用户omm和dbgrp组并配置密码omm,完成之后检查Warning报错信息。
# /software/openGauss/script/gs_checkos -i A -h datakitServer -X /software/openGauss/cluster_config.xml --detail
Warning修复
# /software/openGauss/script/gs_checkos -i A -h datakitServer -X /software/openGauss/cluster_config.xml --detail
修改网络相关参数
vim /etc/sysctl.conf
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
执行sysctl -p 生效
用户max user processes 调整
vim /etc/security/limits.conf
* hard nproc unlimited
* soft nproc unlimited
通过/sys/class/net/ens33/mtu 查询、修改MTU
# cat /sys/class/net/ens33/mtu
1500
# echo "8192" > /sys/class/net/ens33/mtu
# cat /sys/class/net/ens33/mtu
8192
2、查看 omm 用户环境变量
su - omm
$ cat .bashrc
# Source default setting
[ -f /etc/bashrc ] && . /etc/bashrc
# User environment PATH
export PATH
export UNPACKPATH=/software/openGauss
export PGDATA=/home/omm/data
export COREPATH=/opt/software/openGauss/corefile
export PGDATABASE=postgres
export PGPORT=15400
export IP_TYPE=ipv4
export GPHOME=/opt/software/openGauss/install/om
export PATH=$GPHOME/script/gspylib/pssh/bin:$GPHOME/script:$PATH
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=/home/omm/gauss_om/script:$PATH
export GAUSSHOME=/opt/software/openGauss/app
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export S3_CLIENT_CRT_FILE=$GAUSSHOME/lib/client.crt
export GAUSS_VERSION=6.0.0
export PGHOST=/opt/software/openGauss/tmp
export GAUSSLOG=/home/omm/log/omm/omm
umask 077
export GAUSS_ENV=1
3、执行安装
使用具有适当权限的用户(如omm用户)执行安装命令。指定参数启动数据库,内存、进程和字符集等参数,主节点执行即可。
$ gs_install -X /software/openGauss/cluster_config.xml --gsinit-parameter="--encoding=UTF8" --dn-guc="max_process_memory=4GB" --dn-guc="shared_buffers=128MB" --dn-guc="bulk_write_ring_size=128MB" --dn-guc="cstore_buffers=16MB"
gs_install 命令参数说明:
$ gs_install --help
gs_install is a utility to deploy a cluster server.
Usage:
gs_install -? | --help
gs_install -V | --version
gs_install -X XMLFILE [--gsinit-parameter="PARAMETER" [...]]
[--dn-guc="PARAMETER" [...]] [--alarm-component=ALARMCOMPONENT]
[--time-out=SECS] [-l LOGFILE]
General options:
-X Path of the XML configuration file.
-l Path of log file.
-?, --help Show help information for this utility, and exit the command line mode.
-V, --version Show version information.
--gsinit-parameter="PARAMETER" Parameters to initialize DN and CN.
For more information, see "gs_initdb --help".
--dn-guc="PARAMETER" Parameters to set the configuration of DN.
For more information, see "gs_guc --help".
--alarm-component=ALARMCOMPONENT Path of the alarm component.
--time-out=SECS Maximum waiting time when start cluster.
--enable-perf-config Use gs_perfconfig to tune database setup and guc after installation.
--dorado-cluster-mode Use this parameter when installing dualcluster to indicate the state.
注意安装过程中间需要创建数据库,提示设置密码。
安装成功之后,通过openGauss提供的gs_om工具可以完成数据库状态检查。
以omm用户身份登录服务器。
执行如下命令检查数据库状态是否正常,“cluster_state ”显示“Normal”表示数据库可正常使用。
gs_om -t status
数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。
其中postgres为需要连接的数据库名称,15400为数据库主节点的端口号,即XML配置文件中的dataPortBase的值。请根据实际情况替换。
gsql -d postgres -p 15400
连接成功后,系统显示类似如下信息表示数据库连接成功。
4、使用gsql访问openGauss
数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。
gsql -d postgres -h 127.0.0.1 -U omm -p 15400 -W root@123
openGauss=# select version();
openGauss=# show config_file;
五、卸载openGauss
1、执行gs_uninstall命令卸载
以操作系统用户omm登录数据库主节点。
使用gs_uninstall卸载openGauss。
gs_uninstall --delete-data
或者在openGauss中每个节点执行本地卸载。
gs_uninstall --delete-data -L
2、一键式环境清理
在openGauss卸载完成后,如果不需要在环境上重新部署openGauss,可以运行脚本gs_postuninstall对openGauss服务器上环境信息做清理。openGauss环境清理是对环境准备脚本gs_preinstall所做设置的清理。
前提条件
openGauss卸载执行成功。
root用户互信可用。
只能使用root用户执行gs_postuninstall命令。
操作步骤
以root用户登录openGauss服务器。
进入script路径下。
cd /opt/software/openGauss/script
使用gs_postuninstall进行清理。若为环境变量分离的模式安装的数据库需要source环境变量分离文件ENVFILE;若不是环境分离的模式安装的数据库需要source普通用户家目录下的.bashrc文件。
./gs_postuninstall -U omm -X /software/openGauss/cluster_config.xml --delete-user --delete-group
六、openGauss日常命令使用
1、启停openGauss
gs_om -t start | stop
2、查看状态
gs_om -t status --detail
3、检查openGauss状态
通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。
检查实例状态
gs_check -U omm -i CheckClusterState
检查参数
openGauss=# SHOW parameter_name;
上述命令中,parameter_name需替换成具体的参数名称。
基本信息检查
基本信息包括版本、组件、补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一。
版本信息
openGauss=# SELECT version();
容量检查
openGauss=# SELECT pg_table_size('table_name');
openGauss=# SELECT pg_database_size('database_name');
检查操作系统参数
gs_checkos工具用来帮助检查操作系统、控制参数、磁盘配置等内容,并对系统控制参数、I/O配置、网络配置和THP服务等信息进行配置。
gs_checkos -i A
备注:执行gs_checkos前需要先使用gs_preinstall工具执行前置脚本,准备环境。
检查openGauss健康状态
检查办法
通过openGauss提供的gs_check工具可以开展openGauss健康状态检查。
gs_check -i CheckClusterState
其中,-i指定检查项,注意区分大小写。格式:-i CheckClusterState、-i CheckCPU或-i CheckClusterState,CheckCPU。
4、清理运行日志
数据库运行过程中会产生大量运行日志,占用大量的磁盘空间,建议清理过期日志文件,只保留一个月的日志。
清理日志。
a. 将超过1个月的日志备份到其他磁盘。
b. 进入日志存放目录。
cd $GAUSSLOG
c. 进入相应的子目录,使用如下方式删除1个月之前产生的日志。
rm 日志名称
5、检查应用连接数
如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。
SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;
查看现有最大连接数
SHOW max_connections;
异常处理
如果显示的连接数接近数据库的最大连接数max_connections,则需要考虑清理现有连接数或者增加新的连接数。
1、执行如下SQL语句,查看state字段等于idle,且state_change字段长时间没有更新过的连接信息。
SELECT * FROM pg_stat_activity where state='idle' order by state_change;
2、释放空闲的连接数。
查看每个连接,并与此连接的使用者确认是否可以断开连接,或执行如下SQL语句释放连接。其中,pid为上一步查询中空闲连接所对应的pid字段值。
SELECT pg_terminate_backend(140618164266560);
如果没有可释放的连接,可增加最大连接数。
gs_guc set -D $ PGDATA -c "max_connections= 8000"
其中8000为新修改的连接数。
重启数据库服务使新的设置生效。
gs_om -t stop && gs_om -t start
点击阅读原文跳转作者文章