暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【磐维数据库】单机扩容一主一备高可用实践指南

Darcy 2025-03-16
485

作者:cmc

简介

本指南带您从零开始将磐维数据库从单机模式升级为一主一备的高可用架构。通过详尽的配置步骤、场景测试,助力您构建更稳定、更可靠的PanWeiDB 数据库系统。不论是新手上路还是老手求稳,这份文档都将成为您的数据库高可用改造之旅的得力助手。让数据更安全,让系统更安心!

测试环境信息

操作系统 CentOS Linux release 7.9.2009 (Core)
CPU intel x86_64
数据库版本 PanWeiDB_V2.0-S3.0.2_B02

前提条件

在进行扩容测试之前,需满足以下前提条件:

1. 环境准备

  • 已成功部署了一台 PanweiDB 3.0.2B02 版本的单机数据库,且运行状态正常。
  • 两台数据库服务器之间网络通信正常,无防火墙或其他安全策略阻止相关端口的连接。

2. 硬件要求

  • 每台服务器的硬件配置满足 PanweiDB 3.0.2B02 的运行要求。
  • 服务器具备充足的磁盘空间,用于存储同步数据。

测试步骤

步骤1:xml文件

搭建单节点xml文件–cluster_config_1node.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="xxx" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/database/panweidb/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/database/panweidb/core_pattern" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="xxx"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="xxx">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="xxx"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="xxx"/>
            <PARAM name="sshIp1" value="xxx"/>
               
            <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
            <PARAM name="dataPortBase" value="xxx"/>
            <PARAM name="dataNode1" value="/database/panweidb/data"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>
扩容使用不带cm的xml文件–cluster_config_1p1s.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="xxx,xxx" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/database/panweidb/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/database/panweidb/core_pattern" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="xxx,xxx"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="xxx">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="xxx"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="xxx"/>
            <PARAM name="sshIp1" value="xxx"/>
               
            <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
            <PARAM name="dataPortBase" value="xxx"/>
            <PARAM name="dataNode1" value="/database/panweidb/data,xxx,/database/panweidb/data"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
        <!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="xxx">
            <!-- 节点2的主机名称 -->
            <PARAM name="name" value="xxx"/>
            <!-- 节点2所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="xxx"/>
            <PARAM name="sshIp1" value="xxx"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>
安装cm使用带cm的xml文件–cluster_config_1p1s_cm.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="xxx,xxx" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/database/panweidb/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/database/panweidb/log" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/database/panweidb/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/database/panweidb/tool" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/database/panweidb/core_pattern" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="xxx,xxx"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="xxx">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="xxx"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="xxx"/>
            <PARAM name="sshIp1" value="xxx"/>
            <!-- cm主 --> 
            <PARAM name="cmsNum" value="1"/> 
            <PARAM name="cmDir" value="/database/panweidb/cm"/> 
            <PARAM name="cmServerPortBase" value="xxx"/> 
            <PARAM name="cmServerListenIp1" value="xxx,xxx"/> 
            <PARAM name="cmServerHaIp1" value="xxx,xxx"/> 
            <!-- cmServerlevel目前只支持1 --> 
            <PARAM name="cmServerlevel" value="1"/> 
            <!-- cms主及所有备的hostname --> 
            <PARAM name="cmServerRelation" value="xxx,xxx"/>
            <!--db1-->
            <PARAM name="dataNum" value="1"/>
            <PARAM name="dataPortBase" value="xxx"/>
            <PARAM name="dataNode1" value="/database/panweidb/data,xxx,/database/panweidb/data"/>
            <PARAM name="dataNode1_syncNum" value="1"/>
            <PARAM name="dataListenIp1" value="xxx,xxx"/>
        </DEVICE>

        <!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称 -->
        <DEVICE sn="xxx">
            <!-- 节点2的主机名称 -->
            <PARAM name="name" value="xxx"/>
            <!-- 节点2所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="xxx"/>
            <PARAM name="sshIp1" value="xxx"/>    
            <!-- cm --> 
            <PARAM name="cmDir" value="/database/panweidb/cm"/> 
            <PARAM name="cmServerPortStandby" value="xxx"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

步骤2:配置root/omm互信

vi hostfile
xxx
xxx
./gs_sshexkey -f hostfile
Please enter password for current user[root].
Password: 
Checking network information.
All nodes in the network are Normal.
Successfully checked network information.
Creating SSH trust.
Creating the local key file.
Successfully created the local key files.
Appending local ID to authorized_keys.
Successfully appended local ID to authorized_keys.
Updating the known_hosts file.
Successfully updated the known_hosts file.
Appending authorized_key on the remote node.
Successfully appended authorized_key on all remote node.
Checking common authentication file content.
Successfully checked common authentication content.
Distributing SSH trust file to all node.
Distributing trust keys file to all node successfully.
Successfully distributed SSH trust file to all node.
Verifying SSH trust on all hosts.
Verifying SSH trust on all hosts by ip.
Successfully verified SSH trust on all hosts by ip.
Verifying SSH trust on all hosts by hostname.
Successfully verified SSH trust on all hosts.
Successfully created SSH trust.

步骤3:配置root环境变量

export GAUSSHOME=/database/panweidb/app
export PGHOST=/database/panweidb/tmp
export GPHOME=/database/panweidb/tool

步骤4: root执行扩容

 ./gs_expansion -U omm -G dbgrp -X /database/panweidb/soft/cluster_config_1p1s.xml -h xxx

步骤5: 检查集群状态

gs_om -t status --detail

步骤6:手动switchover两次

gs_ctl switchover

步骤7:解压cm安装包

tar zxvf PanWeiDB_V2.0-S3.0.2_B02-CentOS-64bit-cm.tar.gz 

步骤8: 初始化cm

cd /database/panweidb/soft/PanWeiDB/tool/cm_tool
./cm_install -X /database/panweidb/soft/PanWeiDB/script/cluster_config_1p1s_cm.xml --cmpkg='/database/panweidb/soft/PanWeiDB/PanWeiDB_V2.0-S3.0.2_B02-CentOS-64bit-cm.tar.gz'

步骤9:检查集群状态

gs_om -t status --detail

步骤10:高可用测试

测试switchover
 cm_ctl switchover -n 2 -D /database/panweidb/data
二节点为主执行reboot
最后修改时间:2025-09-30 00:33:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论