OpenGauss 学习之路:集群部署实战探索

2024年 6月 10日 102.2k 0

OpenGauss集群部署实战探索一、openGauss 简述

openGauss是一款全面友好开放,携手伙伴华为共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。openGauss数据库具有高性能、高可用、高安全、易运维、全开放的特点。

二、部署概要

openGauss社区版本分为长期支持版本和创新版本:

  • 长期支持版本 (LTS) :规模上线使用,openGauss 6.0.0 LTS及后续LTS版本发布间隔周期为2年,社区提供3年支持,社区OGSP伙伴提供3年以后维护支持服务。
  • 创新版本 (RCx) :作为LTS版本发布前的阶段性特性体验版本,仅供测试使用,提供6个月社区支持。

openGauss支持单机部署和单机HA部署两种部署方式。单机部署时,可在一个主机部署多个数据库实例,但为了数据安全,不建议用户这样部署。单机HA部署支持一台主机和最少一台备机,备机一共最多8台的配置方式。

本文通过搭建openEuler 20.03 LTS SP4虚拟机环境来部署openGauss_5.0.2 LTS 企业版 主备集群。

OpenGauss 学习之路:集群部署实战探索-1

官方的架构图也是推荐使用这种方式。openGauss数据库提供了om工具来帮助部署和管理openGauss数据库的主备集群节点。openGauss数据库的物理复制支持一主多备和级联备等功能,未来也会加入延时复制功能。openGauss的备机是支持只读操作的,可以实现读写分离,减少主库的读负载。

下载相关介质链接:https://opengauss.org/zh/download/archive/

提前了解软硬件环境要求,链接如下:

https://docs-opengauss.osinfra.cn/en/docs/5.0.0/docs/InstallationGuide/preparing-the-software-and-hardware-installation-environment_Enterprise.html

为了实现安装过程中安装帐户权限最小化,及安装后openGauss的系统运行安全性,安装脚本在安装过程中会自动按照用户指定内容创建安装用户,并将此用户作为后续运行和维护openGauss的管理员帐户。

用户/组名

规划建议

dbgrp

建议规划单独的用户组,例如dbgrp。

初始化安装环境时,由-G参数所指定的安装用户所属的用户组。该用户组如果不存在,则会自动创建,也可提前创建好用户组。在执行gs_preinstall脚本时会检查权限。gs_preinstall脚本会自动赋予此组中的用户对安装目录、数据目录的访问和执行权限。

创建dbgrp用户组命令:groupadd dbgrp

omm

建议规划用户用于运行和维护openGauss,例如omm。

初始化安装环境时,由-U参数所指定和自动创建的操作系统用户,如果已经存在该用户,请清理该用户或更换初始化用户。从安全性考虑,对此用户的所属组规划如下:

所属组:dbgrp

在安装openGauss过程中运行“gs_preinstall”时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。

三、拓扑规划

实验环境

操作系统版本

数据库版本

节点名称

IP

配置说明

openEuler 20.3LTS

openGauss_5.0.2 LTS 企业版

node1

192.168.126.21

主节点

openEuler 20.3LTS

openGauss_5.0.2 LTS 企业版

node2

192.168.126.22

备节点

四、软件环境准备

1、关闭防火墙

# 关闭防火墙
sudo systemctl stop firewalld
# 禁用防火墙
sudo systemctl disable firewalld
# 查看防火墙状态
sudo systemctl status firewalld

2、配置时间同步

3、禁用 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

4、关闭RemoveIPC

在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭。

5、字符集设置

将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=XXX”(XXX为Unicode编码)。

echo "export LANG=en_US.UTF-8" >> /etc/profile

source /etc/profile

6、安装依赖包

联网情况下可以使用默认yum源。

# yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch *lsb-core* readline-devel libnsl bzip2 expect

7、修改python版本

安装软件需要依赖Python3的版本,默认Python 2.7.18版本,需要软连接指定版本。

OpenGauss 学习之路:集群部署实战探索-2

8、配置操作系统参数

预安装时会自动修复

9、用户相关设置

1.创建用户和组

用户也可以不创建,后面执行预安装会自动创建(创建完成不影响)

#创建用户&&设置密码

groupadd dbgroup

useradd -g dbgroup omm

passwd omm

2.配置免密码登录

编辑/etc/sudoers文件,文末加入:

omm ALL=(ALL) NOPASSWD:ALL

如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令,

或者允许某些用户使用sudo时不需要输入密码,一般修改/etc/sudoers文件

cat >/etc/sudoers

omm ALL=(ALL) NOPASSWD:ALL

EOF

测试omm用户登录

$ sudo -su root

3.创建omm用户ssh key

后面执行预安装会自动创建可以忽略。

切换用户

# su – omm

执行命令,一直按回车键就行

$ ssh-keygen -t rsa

4.指定公钥文件

配置节点omm用户的互信。后面执行预安装会自动创建可以忽略。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub omm@192.168.126.22

$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.126.22

10、创建工作目录并上传安装包

以root用户登录待安装openGauss的任意主机,并按规划创建存放安装包的目录。

#创建目录

mkdir -p /opt/software/openGauss

#将安装包“openGauss-x.x.x-openEuler-64bit-all.tar.gz”和配置文件“cluster_config.xml”都上传至上一步所创建的目录中。

#在安装包所在的目录下,解压安装包openGauss-x.x.x-openEuler-64bit-all.tar.gz。安装包解压后,会有OM安装包和Server安装包。继续解压OM安装包,会在/opt/software/openGauss路径下自动生成script子目录,并且在script目录下生成gs_preinstall等各种OM工具脚本。

cd /opt/software/openGauss

tar -zxvf openGauss-5.0.2-openEuler-64bit-all.tar.gz

tar -zxvf openGauss-5.0.2-openEuler-64bit-om.tar.gz

chmod 755 -R /opt/software

chown -R omm:dbgrp /opt/

11、创建XML配置文件(cluster_config.xml)

包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。

在script/gspylib/etc/conf/cluster_config_template.xml获取XML文件模板。

cd /opt/software/openGauss/

cp script/gspylib/etc/conf/cluster_config_template.xml /opt/software/openGauss/

mv cluster_config_template.xml cluster_config.xml

修改配置文件如下:

[root@node1 openGauss]# cat cluster_config.xml

五、OpenGauss 主备集群部署

1、安装前检查

安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:

  • 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见配置操作系统参数。
  • 自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。
  • openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。
  • 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。

执行预安装命令:使用预安装脚本检查系统环境,并设置必要的系统参数(只在主节点执行)。

# cd /opt/software/openGauss/script

# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --sep-env-file=/home/omm/env

OpenGauss 学习之路:集群部署实战探索-3

创建用户omm

OpenGauss 学习之路:集群部署实战探索-4

创建root互信如上选择yes

OpenGauss 学习之路:集群部署实战探索-5

创建omm互信

OpenGauss 学习之路:集群部署实战探索-6

Preinstallation succeeded.

部分Warning可以执行/opt/software/openGauss/script/gs_checkos -i A -h node1 --detail查看手工修复。

OpenGauss 学习之路:集群部署实战探索-7

OpenGauss 学习之路:集群部署实战探索-8

2、配置 omm 用户环境变量

$ vi .bash_profile

#使该环境变量生效

export MPPDB_ENV_SEPARATE_PATH=/home/omm/env

export GPHOME=/opt/huawei/install/om

export UNPACKPATH=/opt/software/openGauss

export PGDATA=/opt/huawei/install/data/dn

export PGPORT=15400

export PATH=$GPHOME/script/gspylib/pssh/bin:$GPHOME/script:$PATH

export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH

export PYTHONPATH=$GPHOME/lib

export PATH=/root/gauss_om/omm/script:$PATH

export GAUSSHOME=/opt/huawei/install/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=5.0.2

export PGHOST=/opt/huawei/tmp

export GAUSSLOG=/var/log/omm/omm

umask 077

export GAUSS_ENV=1

$ source .bash_profile

3、OpenGauss 主备集群部署

使用具有适当权限的用户(如omm用户)执行安装命令。指定参数启动数据库,内存、进程和字符集等参数,主节点执行即可。

$gs_install -X /opt/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"

OpenGauss 学习之路:集群部署实战探索-9

中间提示设置数据库密码,之后继续 2次Successfully完成安装部署。

4、验证测试

安装完成后,验证openGauss数据库是否成功安装并运行。

查看集群状态

$ gs_om -t status --detail

OpenGauss 学习之路:集群部署实战探索-10

$ gs_om -t status -h node1

OpenGauss 学习之路:集群部署实战探索-11

$ gs_om -t status -h node2

OpenGauss 学习之路:集群部署实战探索-12

数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。主备节点同时连接测试。

OpenGauss 学习之路:集群部署实战探索-13

OpenGauss 学习之路:集群部署实战探索-14

5、设置备库只读(可选)

备机可读特性为可选特性,需要修改配置参数并重启主备机器后才能使用。在开启备机可读之后,备机将支持读操作,并满足数据一致性要求。

1.如果主备机上的openGauss数据库实例正在运行,请先分别停止主备机上的数据库实例。

2.分别打开主机与备机的postgresql.conf配置文件,找到并将对应参数修改为:

wal_level=hot_standby;hot_standby = on;hot_standby_feedback = on。

3.参数

max_standby_streaming_delay、 max_prepared_transactions、 max_standby_archive_delay、 hot_standby_feedback可以参考《数据库参考》按需进行设置。

4.修改完成后,分别启动主备机即可。

六、卸载 OpenGauss 集群

1、卸载openGauss

卸载openGauss的过程包含卸载openGauss和对openGauss服务器的环境做清理。

openGauss提供了卸载脚本帮助用户完整的卸载openGauss。

以操作系统用户omm登录数据库主节点。

使用gs_uninstall卸载openGauss。

gs_uninstall --delete-data

OpenGauss 学习之路:集群部署实战探索-15

或者在openGauss中每个节点执行本地卸载。

gs_uninstall --delete-data -L

2、一键式环境清理

在openGauss卸载完成后,如果不需要在环境上重新部署openGauss,可以运行脚本gs_postuninstall对openGauss服务器上环境信息做清理。openGauss环境清理是对环境准备脚本gs_preinstall所做设置的清理。

前提条件

  • openGauss卸载执行成功。
  • root用户互信可用。
  • 只能使用root用户执行gs_postuninstall命令。

操作步骤

1.以root用户登录openGauss服务器进入script路径下。

cd /opt/software/openGauss/script

2.使用gs_postuninstall进行清理。若为环境变量分离的模式安装的数据库需要source环境变量分离文件ENVFILE。

./gs_postuninstall -U omm -X /opt/software/openGauss/cluster_config.xml --delete-user --delete-group

OpenGauss 学习之路:集群部署实战探索-16

或者在openGauss中每个节点执行本地后置清理。

./gs_postuninstall -U omm -X /opt/software/openGauss/cluster_config.xml --delete-user --delete-group -L

omm为运行openGauss的操作系统用户名,/opt/software/openGauss/cluster_config.xml为openGauss配置文件路径。

若为环境变量分离的模式安装的数据库需删除之前source的环境变量分离的env参数。

unset MPPDB\_ENV\_SEPARATE\_PATH

3.删除openGauss数据库各节点root用户的互信

七、集群启停

1、启动数据库服务

$ gs_om -t start

OpenGauss 学习之路:集群部署实战探索-17

2、停止数据库服务

$ gs_om -t stop

OpenGauss 学习之路:集群部署实战探索-18

3、节点数据库服务启停

启停主备节点

主节点:
$ gs_ctl start|stop|restart -D /opt/huawei/install/data/dn -M primary

备节点:
$ gs_ctl start|stop|restart -D /opt/huawei/install/data/dn -M standby

八、集群主备切换

主备切换

openGauss在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备failover后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。级联备机不能直接转换为主机,只能先通过switchover或者failover成为备机,然后再切换为主机。

查看集群状态

$ gs_om -t status –detail

OpenGauss 学习之路:集群部署实战探索-19

OpenGauss 学习之路:集群部署实战探索-20

OpenGauss 学习之路:集群部署实战探索-21

以操作系统用户omm登录准备切换为主节点的备节点,执行如下命令

$ gs_ctl switchover -D /opt/huawei/install/data/dn

/opt/huawei/install/data/dn为备数据库节点的数据目录。

OpenGauss 学习之路:集群部署实战探索-22

查看集群状态

$ gs_om -t status –detail

OpenGauss 学习之路:集群部署实战探索-23

备注:对于同一数据库,上一次主备切换未完成,不能执行下一次切换。当业务正在操作时,发起switchover,可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。

主机故障时,可以在备机执行如下命令。

$ gs_ctl failover -D /opt/huawei/install/data/dn

switchover或failover成功后,执行如下命令记录当前主备机器信息。

$ gs_om -t refreshconf

OpenGauss 学习之路:集群部署实战探索-24

九、问题整理

1、执行预安装命令报错如下:

OpenGauss 学习之路:集群部署实战探索-25

解决办法:

安装expect包

2、执行预安装命令报错如下:

OpenGauss 学习之路:集群部署实战探索-26

解决办法:

openEuler-LTS 20.03版操作系统提供的libreadline库文件为libreadline.so.8,而并非数据库初始化脚本所需要的libreadline.so.7,初始化时自然无法找到这个文件。在/usr/lib64路径下对两个文件建立软连接。

3、执行预安装命令报错如下:

OpenGauss 学习之路:集群部署实战探索-27

解决办法:

删除上次创建的文件夹及文件/opt/huawei/install

4、执行安装命令报错如下:

OpenGauss 学习之路:集群部署实战探索-28

解决办法:

赋权

5、执行安装命令报错如下:

OpenGauss 学习之路:集群部署实战探索-29

解决办法:

执行vi ~/.bashrc查看环境变量,将GAUSS_ENV=2改为GAUSS_ENV=1,重新执行安装命令即可。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论