1. openGauss6.0.2主备集群部署概述
作为国产数据库领域的明星产品,openGauss凭借其出色的性能和高可靠性在企业级应用中快速崛起。这次我们要探讨的是openGauss6.0.2版本的一主一备集群部署方案,这是目前生产环境中最基础也是最常用的高可用架构。
主备集群的核心价值在于当主节点出现故障时,备节点能够快速接管服务,确保业务连续性。根据实际测试数据,openGauss的故障切换时间可以控制在30秒以内,这对于大多数业务系统来说都是可以接受的。相比单机部署,主备架构的可靠性提升了至少一个数量级。
2. 环境准备与系统配置
2.1 硬件资源规划
对于生产环境部署,建议采用以下配置:
- 主备节点服务器配置保持一致
- CPU:至少8核(推荐16核及以上)
- 内存:32GB起步(数据量大的场景建议64GB+)
- 存储:建议使用SSD,容量根据数据规模确定
- 网络:主备节点间建议万兆互联
重要提示:主备节点的硬件配置差异过大会导致性能瓶颈,特别是在故障切换后可能出现服务降级。
2.2 操作系统配置
openGauss6.0.2支持的主流操作系统包括:
- CentOS 7.6及以上
- openEuler 20.03 LTS
- Ubuntu 18.04/20.04
以CentOS 7为例,需要进行以下基础配置:
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 配置内核参数 echo "kernel.sem = 250 32000 100 999" >> /etc/sysctl.conf echo "kernel.shmall = 197951838" >> /etc/sysctl.conf echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf sysctl -p # 创建专用用户组 groupadd dbgrp useradd -g dbgrp omm3. 软件安装与初始化
3.1 安装包准备
从官网下载openGauss6.0.2安装包,推荐使用企业版以获得完整功能支持。将安装包上传至两台服务器的相同目录,例如/opt/software。
解压安装包:
tar -zxvf openGauss-6.0.2-CentOS-64bit.tar.gz -C /opt3.2 配置文件准备
创建集群配置文件cluster_config.xml:
<?xml version="1.0" encoding="UTF-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="opengauss_cluster"/> <PARAM name="nodeNames" value="node1,node2"/> <PARAM name="backIp1s" value="192.168.1.101,192.168.1.102"/> <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"/> <PARAM name="corePath" value="/opt/huawei/corefile"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <DEVICELIST> <DEVICE sn="node1"> <PARAM name="name" value="node1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.1.101"/> <PARAM name="sshIp1" value="192.168.1.101"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/> </DEVICE> <DEVICE sn="node2"> <PARAM name="name" value="node2"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.1.102"/> <PARAM name="sshIp1" value="192.168.1.102"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/> </DEVICE> </DEVICELIST> </ROOT>3.3 执行安装
使用gs_preinstall进行预安装检查:
cd /opt/software/openGauss/script ./gs_preinstall -U omm -G dbgrp -X /opt/software/cluster_config.xml预安装完成后,切换到omm用户执行正式安装:
su - omm gs_install -X /opt/software/cluster_config.xml --gsinit-parameter="--encoding=UTF-8"4. 主备集群配置
4.1 主节点初始化
在主节点上初始化数据库实例:
gs_ctl init -D /opt/huawei/install/data/dn -Z single_node启动主节点服务:
gs_ctl start -D /opt/huawei/install/data/dn4.2 备节点配置
在主节点上创建复制用户:
CREATE ROLE repl WITH LOGIN REPLICATION PASSWORD 'Repl@1234';配置主节点的pg_hba.conf,添加备节点访问权限:
host replication repl 192.168.1.102/32 md5在备节点上执行基础备份:
gs_basebackup -D /opt/huawei/install/data/dn -h 192.168.1.101 -p 15400 -U repl -W -X stream配置备节点的postgresql.conf:
primary_conninfo = 'host=192.168.1.101 port=15400 user=repl password=Repl@1234' hot_standby = on启动备节点服务:
gs_ctl start -D /opt/huawei/install/data/dn -M standby5. 集群状态验证
5.1 主备状态检查
在主节点上执行:
SELECT local_role, db_state, static_connections FROM pg_stat_get_stream_replications();预期输出应显示:
local_role | db_state | static_connections ------------+----------+-------------------- Primary | Normal | 1在备节点上执行:
SELECT local_role, db_state FROM pg_stat_get_stream_replications();预期输出:
local_role | db_state ------------+---------- Standby | Normal5.2 数据同步测试
在主节点创建测试数据:
CREATE DATABASE testdb; \c testdb CREATE TABLE test_table(id int, name varchar(50)); INSERT INTO test_table VALUES(1,'测试数据');在备节点验证数据同步:
\c testdb SELECT * FROM test_table;6. 高可用配置优化
6.1 自动故障转移
配置仲裁设备(第三方节点):
gs_om -t configure --arbiter-config --cluster-config=/opt/software/cluster_config.xml启用自动故障检测:
# 在postgresql.conf中添加 enable_auto_failover = on failover_timeout = 30s6.2 流复制参数优化
调整以下参数提升复制性能:
wal_level = logical max_wal_senders = 8 wal_keep_segments = 1024 synchronous_commit = on7. 日常运维与管理
7.1 集群启停操作
停止整个集群:
gs_om -t stop启动整个集群:
gs_om -t start查看集群状态:
gs_om -t status7.2 备份与恢复
执行基础备份:
gs_basebackup -D /backup/opengauss -h 192.168.1.101 -p 15400 -U omm -W -X stream -P -v设置定时备份(crontab示例):
0 2 * * * /usr/bin/gs_dump -U omm -W 'password' -p 15400 -d mydb -f /backup/mydb_$(date +\%Y\%m\%d).sql8. 常见问题排查
8.1 主备复制中断
检查网络连通性:
ping 192.168.1.101 telnet 192.168.1.101 15400查看复制槽状态:
SELECT * FROM pg_replication_slots;8.2 备节点无法提升为主节点
检查恢复配置:
# 在postgresql.conf中确保有 restore_command = ''手动执行故障转移:
gs_ctl failover -D /opt/huawei/install/data/dn8.3 性能问题排查
查看活跃会话:
SELECT * FROM pg_stat_activity WHERE state != 'idle';分析慢查询:
SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;9. 安全加固建议
9.1 密码策略配置
修改密码复杂度要求:
password_policy = 1 password_reuse_time = 90 password_reuse_max = 09.2 网络访问控制
细化pg_hba.conf配置:
# 仅允许特定IP访问 host all all 192.168.1.0/24 md59.3 审计日志配置
启用详细审计:
audit_enabled = on audit_directory = '/opt/huawei/install/data/dn/pg_audit' audit_resource_policy = on10. 性能调优实践
10.1 内存参数优化
根据服务器配置调整:
shared_buffers = 8GB work_mem = 16MB maintenance_work_mem = 512MB effective_cache_size = 24GB10.2 并行查询配置
启用并行查询:
max_worker_processes = 8 max_parallel_workers_per_gather = 4 parallel_setup_cost = 10 parallel_tuple_cost = 0.110.3 存储参数优化
调整WAL相关参数:
wal_buffers = 16MB checkpoint_completion_target = 0.9 random_page_cost = 1.1在实际生产环境中部署openGauss主备集群时,我发现有几个关键点需要特别注意:首先是网络稳定性,主备节点间的网络延迟必须控制在1ms以内;其次是定期验证故障转移流程,确保在真正需要时能够顺利切换;最后是监控系统的完善,除了基础的数据库指标外,还需要关注复制延迟等集群特有指标。