全部版块 我的主页
论坛 经济学论坛 三区 教育经济学
175 0
2025-11-20

基于 openGauss 的高可用数据库部署与主从复制、自动故障转移实践指南

引言

在数字化时代,数据被视为企业的核心资产,其可靠性和服务的连续性直接影响着企业的业务稳定性。openGauss 是一款开源、高性能且兼容 PostgreSQL 的企业级数据库,以其固有的高可用性成为众多企业级应用的首选解决方案。主从复制与自动故障转移技术作为确保数据不丢失和服务持续性的关键技术,对于构建高可用的数据库架构至关重要。

环境准备与工具下载

  1. openGauss 工具集下载
  2. 数据库驱动下载

Linux 环境安装与配置

  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. 配置主机名解析
    [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" />
    <!-- 日志目录-->

总结

本文详细介绍了如何使用 openGauss 进行高可用数据库的部署,包括主从复制和自动故障转移的配置。通过上述步骤,读者可以构建一个稳定、高效的数据服务平台,从而确保业务的连续性和数据的安全性。

配置参数如下:

        <PARAM name="gaussdbLogPath" value="/openGauss/log/omm" />
        <!-- 临时文件存放路径 -->
        <PARAM name="tmpMppdbPath" value="/openGauss/tmp" />
        <!-- 数据库工具路径 -->
        <PARAM name="gaussdbToolPath" value="/openGauss/om" />
        <!-- 数据库核心文件路径 -->
        <PARAM name="corePath" value="/openGauss/corefile" />
        <!-- 各节点的IP地址,与数据库节点名匹配 -->
        <PARAM name="backIp1s" value="192.168.6.20"/>
    

每台服务器上节点的部署详情:

        <DEVICELIST>
            <!-- 节点1的部署信息 -->
            <DEVICE sn="centos79">
                <!-- 主机名称 -->
                <PARAM name="name" value="centos79"/>
                <!-- 所属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"/>
                <!-- 数据节点配置 -->
                <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>
    

用户和组的创建

  • 创建用户组:groupadd dbgroup
  • 创建用户:useradd -g dbgroup omm

初始化安装

./gs_preinstall -U omm -G dbgroup -X /opt/software/openGauss/cluster_config.xml

以 omm 用户身份登录服务器

su - omm

使用命令检查数据库状态

  • 基本状态:gs_om -t status
  • 详细信息:gs_om -t status --detail

gs_om -t status

gs_om -t status --detail

连接并操作数据库

  • 连接数据库:gsql -d postgres -p 15400
  • 列出所有数据库:openGauss=# \l
  • 查看 gsql 版本:gsql --version

gsql -V

检查数据库服务是否已启动,正常情况下cluster_state应显示为Normal

cluster_state   : Normal

若出现异常,可通过查看数据库日志来诊断问题:tail -f /path/to/data_directory/pg_log/*.log

数据库命令行操作及常用元命令

  • 查看数据库进程:ps aux | grep postgres
  • 启动或停止数据库服务:gs_om -t startgs_om -t stop
  • 配置环境变量:
                    cat /home/opengauss/.bashrc
                    export GAUSSHOME=/opt/software/opengauss
                    export PATH=$GAUSSHOME/bin:$PATH
                    export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
                    export GS_CLUSTER_NAME=dbCluster
                    export PGDATA=/opt/software/opengauss/data/single_node
                
  • 登录数据库:gsql -d postgres -p 5432gsql -d postgres -U opengauss -p 5432 -W openGauss123
  • 执行SQL语句或SQL文件:\i /path/to/sql_file.sql
  • 获取更多帮助:gsql --help
  • 创建表空间:CREATE TABLESPACE tbs1 LOCATION '/data/tbs1';

gs_ctl restart -D /opt/software/opengauss/data/single_node/

8、创建用户

create user user01 password 'openGauss123';

9、创建数据库,并指定表空间

CREATE DATABASE db01 TABLESPACE tbs1;

10、修改数据库db01所属用户为user01

alter database db01 owner to user01;

11、使用其他用户登录

create schema scott;

openGauss 高可用架构设计

openGauss 提供了两种主要的高可用性架构:

  • 主从复制架构: 包含一个主节点和多个备份节点,通过数据同步确保数据的一致性。主节点负责所有写操作,而备份节点则同步主节点的数据,并可以用于读取数据。
  • 自动故障转移: 当主节点发生故障时,系统会自动将备份节点提升为主节点,确保数据库的高可用性和持续服务。

主从复制部署

  1. 主节点配置: 登录到主节点
  2. sudo -u opengauss gsql -d postgres -p 15400
  3. 执行 SQL 创建复制用户:
  4. CREATE USER replication_user WITH REPLICATION PASSWORD '12345';
  5. 编辑主节点的 postgresql.conf 配置文件,启用流复制:
  6. vi /path/to/data_directory/postgresql.conf
    wal_level = replica            # 启用流复制
    max_wal_senders = 10           # 设置最大 WAL 发送进程数
    wal_keep_size = 1GB            # 设置 WAL 日志保留大小
    hot_standby = on               # 启用热备份模式,使从节点可以读取数据
  7. 配置主节点的访问控制(编辑 pg_hba.conf 文件,允许从节点使用复制权限连接到主节点):
  8. vi /path/to/data_directory/pg_hba.conf
  9. 添加如下配置,允许从节点连接主节点:
  10. host    replication    replication_user    from_node_ip/32    md5
  11. 重新加载主节点配置:
  12. sudo -u opengauss gs_ctl reload -D /path/to/data_directory
  13. 检查主节点的状态:
  14. 登录主节点

    sudo -u opengauss gsql -d postgres -p 15400

    查询复制状态

    SELECT * FROM pg_stat_replication;
  15. 从节点配置(从节点需要从主节点进行数据同步。使用 pg_basebackup 工具从主节点获取全量数据备份):
  16. 运行 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

    这是从节点的数据存储目录

  17. 配置从节点的 recovery.conf 文件(在从节点的数据目录下创建 recovery.conf 文件,以指定从节点如何连接主节点进行同步):
  18. 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'        # 主从切换标志文件
  19. 启动从节点:
  20. sudo -u opengauss gs_ctl start -D /path/to/standby/data_directory
  21. 验证从节点同步状态:
  22. 登录到从节点

    sudo -u opengauss gsql -d postgres -p 15400

    查询复制状态

    SELECT * FROM pg_stat_wal_receiver;

自动故障转移

  1. 手动故障转移: 如果主节点出现故障,需要将从节点提升为新的主节点,可以通过以下步骤手动触发故障转移,在从节点上创建一个空文件,用于触发从节点切换为主节点
  2. 从节点会检测到此文件并自动切换为新的主节点

    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 表现优异。在 Linux 环境下,通过脚本和 XML 配置文件,可以快速完成单节点安装及主从复制集群的搭建。主从同步和自动故障转移的步骤清晰明了,gsql 命令操作和用户表空间管理符合开发习惯,无需额外集成工具即可满足高可用性需求。从开发测试到生产部署,所有核心诉求都能通过具体的实操步骤得以实现。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群