openGauss 6.0 LTS 实现高可用性部署
简介
openGauss 6.0 LTS是华为开发的企业级分布式数据库:高性能、高可用性、强扩展性,基于PostgreSQL,支持SQL和JSON数据类型,提供高并发、高吞吐量的处理能力,适合金融、电信、政府等行业使用,6.0版本主要增强了分布式事务支持、存储引擎的优化、安全性提升及多种新特性,确保长时间稳定运行和高效的数据管理能力
- 官网体验地址:openGauss社区官网
- 软件包下载地址:openGauss社区
安装流程
1、关闭安全服务
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
2、关闭防火墙
systemctl status firewalld systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service
3、关闭selinux
sudo setenforce 0
4、配置host
[root@centos79 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.10 centos79
5、安装依赖
- 创建挂载目录
mkdir /cdrom
- 挂载CD-ROM镜像
mount -t iso9660 -o ro /dev/cdrom /cdrom
- 备份现有的YUM源配置文件
cd /etc/yum.repos.d/ mkdir bak mv CentOS* bak
- 配置本地YUM源
vi local.repo
cat >/etc/yum.repos.d/local.repo <<EOF [base-local] name=CentOS7-local baseurl=file:///cdrom enabled=1 gpgcheck=0 EOF
- 清空并重载YUM缓存
yum clean all yum makecache
- 安装依赖包
yum -y install libaio-devel flex bison ncurses-devel \ glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl
6、设置字符集
echo 'export LANG=en_US.UTF-8' >> /etc/profile echo 'export packagePath=/opt/software/openGauss' >> /etc/profile echo 'export LD_LIBRARY_PATH=$packagePath/script/gspylib/clib:$LD_LIBRARY_PATH' >> /etc/profile
7、时区配置
sudo timedatectl set-timezone systemdefault
8、openGauss 6.0 LTS安装
- 创建安装目录,上传安装包
mkdir -p /opt/openGauss
- 解压安装包
tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz
9、目录添加权限
chmod 775 -R /opt/openGauss
10、配置XML文件
vi /opt/openGauss/db_config.xml
<?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <!-- 数据库名称 --> <PARAM name="clusterName" value="dbCluster" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="centos79" /> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/openGauss/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/openGauss/log/omm" /> <!-- 临时文件目录--> <PARAM name="tmpMppdbPath" value="/openGauss/tmp" /> <!-- 数据库工具目录--> <PARAM name="gaussdbToolPath" value="/openGauss/om" /> <!-- 数据库core文件目录--> <PARAM name="corePath" value="/openGauss/corefile" /> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.6.20"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="centos79"> <!-- 节点1的主机名称 --> <PARAM name="name" value="centos79"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.6.20"/> <PARAM name="sshIp1" value="192.168.6.20"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/openGauss/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>
11、用户和组创建
- 创建用户组
groupadd dbgroup
- 创建用户
useradd -g dbgroup omm
12、初始化安装
./gs_preinstall -U omm -G dbgroup -X /opt/software/openGauss/cluster_config.xml
13、以 omm 用户身份登录服务器
su - omm
14、使用 gs_om -t status 命令检查数据库状态
gs_om -t status
15、使用 gs_om -t status --detail 命令查看详细信息
gs_om -t status --detail
16、连接数据库
gsql -d postgres -p 15400
17、列出数据库
openGauss=# \l
18、查看 gsql 版本
gsql -V
19、检查数据库服务是否启动
gs_om -t status
如果数据库正常运行,输出的 cluster_state 应显示为 Normal
cluster_state : Normal
20、如果异常可以查看数据库日志
tail -f /path/to/data_directory/pg_log/*.log
openGauss 6.0 LTS 高可用性架构
openGauss 6.0 LTS 提供了两种主要高可用性架构:
主从复制架构:一个主节点和多个备份节点,通过数据同步确保数据一致性,主节点负责所有写操作,备份节点同步主节点的数据,并且可以用来读取数据。
自动故障转移:在主节点发生故障时,系统自动将备份节点提升为主节点,保证数据库的高可用性和持续服务。
主从复制架构
1、主节点配置,登录到主节点
sudo -u opengauss gsql -d postgres -p 15400
2、执行 SQL 创建复制用户
CREATE USER replication_user WITH REPLICATION PASSWORD '12345';
3、编辑主节点的 postgresql.conf 配置文件,启用流复制
vi /path/to/data_directory/postgresql.conf
wal_level = replica # 启用流复制 max_wal_senders = 10 # 设置最大 WAL 发送进程数 wal_keep_size = 1GB # 设置 WAL 日志保留大小 hot_standby = on # 启用热备份模式,使从节点可以读取数据
4、配置主节点的访问控制(编辑 pg_hba.conf 文件,允许从节点使用复制权限连接到主节点)
vi /path/to/data_directory/pg_hba.conf
5、添加如下配置,允许从节点连接主节点
host replication replication_user from_node_ip/32 md5
6、重新加载主节点配置
sudo -u opengauss gs_ctl reload -D /path/to/data_directory
7、检查主节点的状态
- 登录主节点
sudo -u opengauss gsql -d postgres -p 15400
- 查询复制状态
SELECT * FROM pg_stat_replication;
8、从节点配置(从节点需要从主节点进行数据同步。使用 pg_basebackup 工具从主节点获取全量数据备份)
- 运行 pg_basebackup 命令进行备份
pg_basebackup -h master_node_ip -D /path/to/standby/data_directory -U replication_user -P --wal-method=stream
master_node_ip
是主节点的 IP 地址replication_user
是在主节点上创建的复制用户/path/to/standby/data_directory
是从节点的数据存储目录9、配置从节点的 recovery.conf 文件(在从节点的数据目录下创建 recovery.conf 文件,以指定从节点如何连接主节点进行同步)
vi /path/to/standby/data_directory/recovery.conf
standby_mode = 'on' # 启用从节点模式 primary_conninfo = 'host=master_node_ip port=15400 user=replication_user password=your_password' # 主节点连接信息 trigger_file = '/tmp/postgresql.promote' # 主从切换标志文件
10、启动从节点
sudo -u opengauss gs_ctl start -D /path/to/standby/data_directory
11、验证从节点同步状态
- 登录到从节点
sudo -u opengauss gsql -d postgres -p 15400
- 查询复制状态
SELECT * FROM pg_stat_wal_receiver;
自动故障转移
1、手动故障转移(如果主节点出现故障,需要将从节点提升为新的主节点,可以通过以下步骤手动触发故障转移,在从节点上创建一个空文件,用于触发从节点切换为主节点)
- 从节点会检测到此文件并自动切换为新的主节点
touch /tmp/postgresql.promote
2、自动故障转移(openGauss 6.0 LTS 支持通过 gs_om 工具实现自动故障转移,为了实现自动故障转移,需要配置一个监控节点,该节点会监控主节点的状态,发现主节点宕机时自动将备份节点提升为主节点)
- 通过 gs_om 工具配置监控服务和启用自动故障转移功能
gs_om -t start -D /path/to/data_directory
3、检查集群状态
gs_om -t status --detail
总结
开发者角度来看,openGauss 6.0 LTS 提供的主从复制架构和自动故障转移机制为数据库系统提供了高可用性保障,简化容灾和故障恢复的过程。通过流复制技术,数据在主从节点之间高效同步,保证了系统的稳定性与容错能力,且支持热备份模式实现读写分离,有效减轻主节点负载,提高查询吞吐量。
然而,复制延迟和网络瓶颈可能导致从节点数据滞后,因此在高并发环境下需要对同步延迟进行监控和优化,自动故障转移机制则在主节点故障时自动将从节点提升为新的主节点,确保系统的持续可用性,减少人为干预,提高运维效率,然而在某些极端情况下,故障转移过程中可能会出现短暂的服务中断或数据丢失,通过合适的配置与监控,可以优化故障转移的响应速度和数据一致性,确保在实际业务中能够高效稳定运行。
总的来说,openGauss 的高可用性架构不仅提升了数据库系统的稳定性和扩展性,也为开发者提供了更简洁的运维管理工具,减轻了系统管理负担,使得开发者能够更加专注于业务功能的开发与优化。