前言
数字化时代,数据作为核心资产,其可靠性与服务连续性直接决定企业业务稳定性。openGauss 作为开源、高性能、兼容 PostgreSQL 的企业级数据库,凭借原生高可用特性成为企业级应用的优选方案。而主从复制与自动故障转移作为保障数据不丢失、服务不中断的核心技术,是构建高可用数据库架构的关键。
本文聚焦 openGauss 数据库的高可用实践,从开发者与运维人员的实际需求出发,梳理了从环境搭建、单节点安装、命令行核心操作,到主从复制架构部署、自动故障转移配置的完整流程。内容涵盖 Linux 环境预处理、依赖安装、XML 配置、用户与权限管理、数据同步验证等关键步骤,同时包含实用的数据库日常操作与问题排查技巧。
环境准备与工具下载
1、openGauss 工具集下载
2、数据库驱动下载
Linux 环境安装与配置
1、关闭安全服务
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
复制代码
2、关闭防火墙
systemctl status firewalldsystemctl stop firewalld.servicesystemctl disable firewalld.servicesystemctl status firewalld.service
复制代码
3、关闭 selinux
4、配置 host
[root@centos79 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.10.10 centos79
复制代码
5、安装依赖
创建挂载目录
挂载 CD-ROM 镜像
mount -t iso9660 -o ro /dev/cdrom /cdrom
复制代码
l 备份现有的 YUM 源配置文件
cd /etc/yum.repos.d/ mkdir bak mv CentOS* bak
复制代码
l 配置本地 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
复制代码
l 清空并重载 YUM 缓存
yum clean all yum makecache
复制代码
l 安装依赖包
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 安装
l 创建安装目录,上传安装包
l 解压安装包
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、用户和组创建
l 创建用户组
l 创建用户
12、初始化安装
./gs_preinstall -U omm -G dbgroup -X /opt/software/openGauss/cluster_config.xml
复制代码
13、以 omm 用户身份登录服务器
14、使用 gs_om -t status 命令检查数据库状态
15、使用 gs_om -t status --detail 命令查看详细信息
16、连接数据库
gsql -d postgres -p 15400
复制代码
17、列出数据库
18、查看 gsql 版本
19、检查数据库服务是否启动
如果数据库正常运行,输出的 cluster_state 应显示为 Normal
20、如果异常可以查看数据库日志
tail -f /path/to/data_directory/pg_log/*.log
复制代码
数据库命令行操作与常用元命令
1、 查看数据库进程
2、数据库启停
gs_ctl restart -D /opt/software/opengauss/data/single_node/
复制代码
3、配置环境变量
cat /home/opengauss/.bashrcexport GAUSSHOME=/opt/software/opengaussexport PATH=$GAUSSHOME/bin:$PATHexport LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATHexport GS_CLUSTER_NAME=dbClusterexport PGDATA=/opt/software/opengauss/data/single_node
复制代码
4、登录数据库
gsql -d postgres -p 5432 / gsql -d postgres -U opengauss -p 5432 -W openGauss123
复制代码
5、执行 sql 语句和 sql 文件
6、更多帮助 gsql --help
7、创建表空间
create tablespace tbs1 location '/data/tbs1';
复制代码
8、创建用户
create user user01 password 'openGauss123';
复制代码
9、创建数据库,并指定表空间
CREATE DATABASE db01 TABLESPACE tbs1;
复制代码
10、修改数据库 db01 所属用户为 user01
alter database db01 owner to user01;
复制代码
11、使用其他用户登录
openGauss 高可用架构设计
openGauss 提供了两种主要高可用性架构:
l 主从复制架构:一个主节点和多个备份节点,通过数据同步确保数据一致性,主节点负责所有写操作,备份节点同步主节点的数据,并且可以用来读取数据。
l 自动故障转移:在主节点发生故障时,系统自动将备份节点提升为主节点,保证数据库的高可用性和持续服务。
主从复制部署
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、检查主节点的状态
l 登录主节点
sudo -u opengauss gsql -d postgres -p 15400
复制代码
l 查询复制状态
SELECT * FROM pg_stat_replication;
复制代码
8、从节点配置(从节点需要从主节点进行数据同步。使用 pg_basebackup 工具从主节点获取全量数据备份)
l 运行 pg_basebackup 命令进行备份
pg_basebackup -h master_node_ip -D /path/to/standby/data_directory -U replication_user -P --wal-method=stream
复制代码
l master_node_ip 是主节点的 IP 地址
l replication_user 是在主节点上创建的复制用户
l /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、验证从节点同步状态
l 登录到从节点
sudo -u opengauss gsql -d postgres -p 15400
复制代码
l 查询复制状态
SELECT * FROM pg_stat_wal_receiver;
复制代码
自动故障转移
1、手动故障转移(如果主节点出现故障,需要将从节点提升为新的主节点,可以通过以下步骤手动触发故障转移,在从节点上创建一个空文件,用于触发从节点切换为主节点)
l 从节点会检测到此文件并自动切换为新的主节点
touch /tmp/postgresql.promote
复制代码
2、自动故障转移(openGauss 6.0 LTS 支持通过 gs_om 工具实现自动故障转移,为了实现自动故障转移,需要配置一个监控节点,该节点会监控主节点的状态,发现主节点宕机时自动将备份节点提升为主节点)
l 通过 gs_om 工具配置监控服务和启用自动故障转移功能
gs_om -t start -D /path/to/data_directory
复制代码
3、检查集群状态
总结
作为开发者 openGauss 实测好用,文章里 Linux 环境下靠脚本 + XML 配置就能快速搞定单节点安装与主从复制集群,主从同步、自动故障转移步骤清晰,gsql 命令操作和用户表空间管理贴近开发习惯,不用额外集成工具就满足高可用需求,从开发测试到生产部署的核心诉求都能通过实操步骤直接落地。
评论