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

磐维数据库双中心容灾环境搭建实践

杨健超 2025-09-01
302

中国移动磐维数据库(ChinaMobileDB),简称“磐维数据库”(CMDB)。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。

其产品内核能力基于华为 OpenGauss 开源软件,并进一步提升了系统稳定性。

本文介绍磐维数据库的双中心容灾环境搭建的实践过程,本次实践主要架构采用跨池3+3流复制方案。

1.搭建主从中心数据库集群

主中心集群状态

从中心数据库状态

2.打通主从中心网络策略

保证主从中心6台机器之间网络可以正常通信,可以互相ping通

3.创建容灾用户

在主从集群均创建容灾用户,授予replication权限

create user sdr with replication password 'xxxxxx';

注:容灾用户密码中不可包含以下字符“| ;&$<>`\'“{}()[]~*?!\n空白”。

4.开始搭建容灾环境

4.1 准备配置文件

主中心配置文件

与主集群部署配置基本相同,仅添加了以下三个sdr特有参数,其中value字段中的每个括号为一个数据库服务器的两个IP。如灾备环境不跨池,两个IP均配置为服务器业务IP;如为跨池资源,localStreamIpmap1两个IP均配置为服务器业务IP,remoteStreamIpmap1前一个配置为资源池内业务IP,后一个配置为跨资源池承载网IP(三个节点均需要配置)。

cd /database/panweidb
cp cmdb1m2s_cm.xml pwdb_m_sdr.xml
<!-- sdr 配置 -->
<PARAM name="localStreamIpmap1" value="(10.x.x.1,10.x.x.1),(10.x.x.2,10.x.x.2),(10.x.x.3,10.x.x.3)"/>
<PARAM name="remoteStreamIpmap1" value="(10.x.x.4,10.x.x.4),(10.x.x.5,10.x.x.5),(10.x.x.6,10.x.x.6)"/>
<PARAM name="remotedataPortBase" value="17700"/>


从中心配置文件

与从集群部署配置基本相同,仅添加了以下三个sdr特有参数,其中value字段中的每个括号为一个数据库服务器的两个IP。如灾备环境不跨池,两个IP均配置为服务器业务IP;如为跨池资源,localStreamIpmap1两个IP均配置为服务器业务IP,remoteStreamIpmap1前一个配置为资源池内业务IP,后一个配置为跨资源池承载网IP(三个节点均需要配置)。

cd /database/panweidb
cp cmdb1m2s_cm.xml pwdb_s_sdr.xml
<!-- sdr 配置 -->
<PARAM name="localStreamIpmap1" value="(10.x.x.4,10.x.x.4),(10.x.x.5,10.x.x.5),(10.x.x.6,10.x.x.6)"/>
<PARAM name="remoteStreamIpmap1" value="(10.x.x.1,10.x.x.1),(10.x.x.2,10.x.x.2),(10.x.x.3,10.x.x.3)"/>
<PARAM name="remotedataPortBase" value="17700"/>

4.2 创建容灾关系

主中心启动
gs_sdr -t start -m primary -X /database/panweidb/soft/pwdb_m_sdr.xml -U sdr

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

从中心启动
gs_sdr -t start -m disaster_standby -X /database/panweidb/soft/pwdb_s_sdr.xml -U sdr

但是在此时出现了问题,在从中心启动过程中会对从中心集群进行重启操作,此时停止集群完毕,但是启动集群时缺卡住了,我额外打开一个窗口查看一下从中心数据库的状态

查看数据库集群状态时发现cm全部down掉了,我此时想到是不是数据库集群出现了故障,所以我使用cm_ctl start 命令去手动启动了集群

手动启动集群之后发现从中心集群的从主正在build,两个级联备都处于need repair的状态,此时我想等build完成集群即可修复,遂等待集群build完成

但build完成后的数据库状态让人出乎意料,从中心1节点显示build失败了,从主切到了2节点,而且一直显示Connecting状态,3节点级联备状态正常,此时我尝试对1节点重新手动build,build完成后数据库的状态如下

从中心从主在2节点上,两个级联备正常,但是从主一直处于Connecting状态,此时我尝试把2节点数据库重启,重启后的数据库状态如下

此时从中心的从主切换到了1节点,但是状态仍然是Connecting状态,不正常,此时我尝试解除容灾关系,重新搭建

至此对容灾关系进行了解除,接下来要重新搭建容灾关系

和最开始一样,卡在了这个地方,我单独开一个窗口查看一下数据库的进程状态

此时我发现数据库是出于build的状态,我想到是不是我第一次手动启动数据库集群,导致了脚本build中断导致的问题呢,此时我准备等它build完看看状态

完成build之后,主节点状态正常了!此时我们去主中心查看一下容灾关系创建和复制槽状态

主中心显示容灾关系搭建完成,复制槽状态正常,我们再去从中心查看数据库状态

从中心数据库状态也正常了,并且显示容灾关系搭建完成,此时我们查看主从中心的容灾状态

容灾状态正常,查看一下复制槽

复制槽状态正常,至此双中心容灾环境搭建完毕

5.总结

在双中心容灾环境搭建的过程中,会对从中心数据库集群进行重启,且启动时会自动build,此时我们不能手动启动集群或者手动build,都会造成状态异常,正确的做法是等待自动build完成,集群恢复至正常状态即可。






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

评论