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

磐维数据库2.0系列:双中心容灾配置

原创 #5z# 2024-01-06
2297

磐维数据库,简称"PanWeiDB"。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。其产品内核能力基于华为openGauss开源软件,并进一步提升了系统稳定性。

本文将介绍磐维数据库PanWeiDB 2.0基于gs_sdr工具,且不借助额外存储介质的情况下实现跨区域的异地容灾搭建配置,容灾状态监控、容灾解除、计划内主备切换等功能。

1.系统架构

image.gif

2.架构优势

  • 主集群具备单集群组网的优点,只有主集群彻底不可用后才需要手动切换。
  • 跨集群(异地)复制链路无论是否发生容灾切换都只有一条,占用网络带宽相对较少。
  • 组网更加灵活,主集群和灾备集群都可以选择不同的组网。
  • 支持灾备集群failover。
  • 支持主备集群计划内switchover。

3.部署双中心集群

参考磐维2.0集中式安装的两种方式分别在两个中心搭建两套集群,注意确保两个集群安装用户一致。

主中心集群部署后的初始状态如下:

image.png

从中心集群部署后的初始状态如下:

image.png

4.配置双中心容灾环境

准备容灾配置文件

与主集群部署配置基本相同,仅添加如下三个sdr特有参数:

<PARAM name="localStreamIpmap1" value="(x.x.x.87,x.x.x.87),(x.x.x.88,x.x.x.88),(x.x.x.86,x.x.x.86)"/> <PARAM name="remoteStreamIpmap1" value="(x.x.x.71,x.x.x.71),(x.x.x.72,x.x.x.72),(x.x.x.73,x.x.x.73)"/> <PARAM name="remotedataPortBase" value="17700"/>

注意:如果灾备环境跨池资源,localStreamIpmap1两个IP均配置为服务器业务IP,remoteStreamIpmap1前一个配置为资源池内业务IP,后一个配置为跨资源池承载网IP(三个节点均需要配置)

完整的配置文件pwdb_m_sdr.xml内容如下:

<?xml version="1.0" encoding="utf-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="panweidb" /> <PARAM name="nodeNames" value="hostname1,hostname2,hostname3"/> <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" /> <PARAM name="corePath" value="/database/panweidb/corefile"/> <PARAM name="backIp1s" value="x.x.x.87,x.x.x.88,x.x.x.86"/> </CLUSTER> <DEVICELIST> <DEVICE sn="hostname1"> <PARAM name="name" value="hostname1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.87"/> <PARAM name="sshIp1" value="x.x.x.87"/> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="18800"/> <PARAM name="cmServerListenIp1" value="x.x.x.87,x.x.x.88,x.x.x.86"/> <PARAM name="cmServerHaIp1" value="x.x.x.87,x.x.x.88,x.x.x.86"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="hostname1,hostname2,hostname3"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataNode1" value="/database/panweidb/data,hostname2,/database/panweidb/data,hostname3,/database/panweidb/data"/> <PARAM name="dataNode1_syncNum" value="2"/> <PARAM name="localStreamIpmap1" value="(x.x.x.87,x.x.x.87),(x.x.x.88,x.x.x.88),(x.x.x.86,x.x.x.86)"/> <PARAM name="remoteStreamIpmap1" value="(x.x.x.71,x.x.x.71),(x.x.x.72,x.x.x.72),(x.x.x.73,x.x.x.73)"/> <PARAM name="remotedataPortBase" value="17700"/> </DEVICE> <DEVICE sn="hostname2"> <PARAM name="name" value="hostname2"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.88"/> <PARAM name="sshIp1" value="x.x.x.88"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> </DEVICE> <DEVICE sn="hostname3"> <PARAM name="name" value="hostname3"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.86"/> <PARAM name="sshIp1" value="x.x.x.86"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> </DEVICE> </DEVICELIST> </ROOT>

从中心配置类似,完整的配置文件pwdb_s_sdr.xml内容如下:

<?xml version="1.0" encoding="utf-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="panweidb" /> <PARAM name="nodeNames" value="hostname4,hostname5,hostname6"/> <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" /> <PARAM name="corePath" value="/database/panweidb/corefile"/> <PARAM name="backIp1s" value="x.x.x.71,x.x.x.72,x.x.x.73"/> </CLUSTER> <DEVICELIST> <DEVICE sn="hostname4"> <PARAM name="name" value="hostname4"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.71"/> <PARAM name="sshIp1" value="x.x.x.71"/> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="18800"/> <PARAM name="cmServerListenIp1" value="x.x.x.71,x.x.x.72,x.x.x.73"/> <PARAM name="cmServerHaIp1" value="x.x.x.71,x.x.x.72,x.x.x.73"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="hostname4,hostname5,hostname6"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataNode1" value="/database/panweidb/data,hostname5,/database/panweidb/data,hostname6,/database/panweidb/data"/> <PARAM name="dataNode1_syncNum" value="2"/> <PARAM name="localStreamIpmap1" value="(x.x.x.71,x.x.x.71),(x.x.x.72,x.x.x.72),(x.x.x.73,x.x.x.73)"/> <PARAM name="remoteStreamIpmap1" value="(x.x.x.87,x.x.x.87),(x.x.x.88,x.x.x.88),(x.x.x.86,x.x.x.86)"/> <PARAM name="remotedataPortBase" value="17700"/> </DEVICE> <DEVICE sn="hostname5"> <PARAM name="name" value="hostname5"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.72"/> <PARAM name="sshIp1" value="x.x.x.72"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> </DEVICE> <DEVICE sn="hostname6"> <PARAM name="name" value="hostname6"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="x.x.x.73"/> <PARAM name="sshIp1" value="x.x.x.73"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/database/panweidb/cm"/> </DEVICE> </DEVICELIST> </ROOT>

创建容灾用户

在主从集群都创建容灾用户:

create user sdr_test with replication password 'xxx';

创建容灾关系

先启动主中心(主中心主节点):

$ gs_sdr -t start -m primary -X /database/panweidb/soft/pwdb_m_sdr.xml -U sdr_test -W 'xxx'

主中心在创建容灾关系过程中,会等待从中心启动,因此在启动主中心后,不需要等待主中心启动完毕。

主中心启动日志提示如下信息后可启动从中心:

Waiting for the main standby connection.

先启动从中心(从中心主节点):

$ gs_sdr -t start -m disaster_standby -X /database/panweidb/soft/pwdb_s_sdr.xml -U sdr_test -W 'xxx'

主中心启动完毕的日志截图如下:

image.png

从中心启动完毕的日志截图如下:

image.png

5.容灾状态监控

主中心查看容灾状态

image.png

从中心查看容灾状态

image.png

上面截图中hadr_cluster_stat代表流式容灾中数据库实例状态,它的状态值含义如下:

状态值 含义
normal 标识该数据库实例未参与流式容灾
full_backup 主数据库实例数据全量复制中
archive 主数据库实例日志流式复制中
backup_fail 主数据库实例数据全量复制失败
archive_fail 主数据库实例日志流式复制失败
switchover 计划内主备倒换中
restore 灾备数据库实例数据全量恢复中
restore_fail 灾备数据库实例全备恢复失败
recovery 灾备数据库实例日志流式复制中
recovery_fail 灾备数据库实例日志流式复制失败
promote 灾备数据库实例升主中
promote_fail 灾备数据库实例升主失败

主中心查看复制槽状态

image.gif

image.png

可以观察到主从中心复制槽状态正常,异步流复制状态也正常。

6.容灾解除

例如主中心解除容灾状态:

$ gs_sdr -t stop -X /database/panweidb/soft/pwdb_m_sdr.xml -U sdr_test -W 'xxx'

image.png

7.计划内切换主从中心

主中心执行switchover命令:

$ gs_sdr -t switchover -m disaster_standby

image.png

主中心执行switchover命令出现如下日志:

Waiting for truncation.

此时可以在从中心执行switchover命令

$ gs_sdr -t switchover -m primary

image.png

最后再观察主中心switchover命令的完整日志过程。

image.gif

切换完成后,原主中心的集群状态如下:

image.png

新主中心的集群状态如下:

image.png

新主中心再观察新复制槽及流复制信息

image.png

手动切换主从中心,容灾状态发生交换,切换成功后数据同步正常。

最后修改时间:2024-11-20 19:32:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论