主页 > IT业界  > 

磐维数据库双中心容灾流复制集群搭建

磐维数据库双中心容灾流复制集群搭建
1. 架构

磐维数据库PanWeiDB V2.0.0基于gs_sdr工具,在不借助额外存储介质的情况下实现跨Region的异地容灾。提供流式容灾搭建,容灾升主,计划内主备切换,容灾解除、容灾状态监控等功能。

2. 部署双中心磐维集群 2.1. 主集群

角色

主机IP

主机名

192.168.3.43

db43

备 1

192.168.3.44

db44

备 2

192.168.3.45

db45

2.1.1. cat panweidb1m2s.xml(主) <?xml version="1.0" encoding="utf-8"?> <ROOT> <!-- 整体信息 --> <CLUSTER> <!-- 数据库集群名称 --> <PARAM name="clusterName" value="PanWeiDB" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="gdb43,gdb44,gdb45"/> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/data/panweidb/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/data/panweidb/log" /> <PARAM name="tmpMppdbPath" value="/data/panweidb/tmp"/> <PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /> <!--数据库core文件目录--> <PARAM name="corePath" value="/data/panweidb/corefile"/> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.3.43,192.168.3.44,192.168.3.45"/> </CLUSTER> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="gdb43"> <PARAM name="name" value="gdb43"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.43"/> <PARAM name="sshIp1" value="192.168.3.43"/> <!-- cm 管理节点部署信息 --> <PARAM name="cmsNum" value="1"/> <!-- 主CM Server端口号,默认值5000 --> <PARAM name="cmServerPortBase" value="18800"/> <!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --> <PARAM name="cmServerListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <!-- cmServerHaIp1。主、备CM Server间通信的IP地址。 Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。 未设置时,默认根据主、备CM Server所在主机的backIp1生成。--> <PARAM name="cmServerHaIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gdb43,gdb44,gdb45"/> <!-- cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。 各集群主机上均需配置该参数。--> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> <!-- dn 数据节点 --> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <PARAM name="dataNode1" value="/data/panweidb/data,gdb44,/data/panweidb/data,gdb45,/data/panweidb/data"/> <PARAM name="dataNode2_syncNum" value="1"/> </DEVICE> <DEVICE sn="gdb44"> <PARAM name="name" value="gdb44"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.44"/> <PARAM name="sshIp1" value="192.168.3.44"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> <DEVICE sn="gdb45"> <PARAM name="name" value="gdb45"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.45"/> <PARAM name="sshIp1" value="192.168.3.45"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> </DEVICELIST> </ROOT> 2.1.2. 状态检查 cm_ctl query -Cdvip

gs_om -t status --detail

2.2. 备集群

角色

主机IP

主机名

192.168.3.46

db46

备 1

192.168.3.47

db47

备 2

192.168.3.48

db48

2.2.1. cat panweidb1m2s.xml(备) <?xml version="1.0" encoding="utf-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="panweidb" /> <PARAM name="nodeNames" value="gdb46,gdb47,gdb48"/> <PARAM name="gaussdbAppPath" value="/data/panweidb/app" /> <PARAM name="gaussdbLogPath" value="/data/panweidb/log" /> <PARAM name="tmpMppdbPath" value="/data/panweidb/tmp"/> <PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /> <PARAM name="corePath" value="/data/panweidb/corefile"/> <PARAM name="backIp1s" value="192.168.3.46,192.168.3.47,192.168.3.48"/> </CLUSTER> <DEVICELIST> <DEVICE sn="gdb46"> <PARAM name="name" value="gdb46"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.46"/> <PARAM name="sshIp1" value="192.168.3.46"/> <PARAM name="cmsNum" value="1"/> <PARAM name="cmServerPortBase" value="18800"/> <PARAM name="cmServerListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/> <PARAM name="cmServerHaIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gdb46,gdb47,gdb48"/> <PARAM name="cmDir" value="/data/panweidb/cm"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataNode1" value="/data/panweidb/data,gdb47,/data/panweidb/data,gdb48,/data/panweidb/data"/> <PARAM name="dataNode1_syncNum" value="1"/> </DEVICE> <DEVICE sn="gdb47"> <PARAM name="name" value="gdb47"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.47"/> <PARAM name="sshIp1" value="192.168.3.47"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cm"/> </DEVICE> <DEVICE sn="gdb48"> <PARAM name="name" value="gdb48"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.48"/> <PARAM name="sshIp1" value="192.168.3.48"/> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cm"/> </DEVICE> </DEVICELIST> </ROOT> 2.2.2. 状态检查 cm_ctl query -Cdvip

gs_om -t status --detail

3. 搭建双中心容灾环境 3.1. 准备配置文件 3.1.1. 主中心sdr配置

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

<!-- sdr 配置 -->

<PARAM name="localStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45"/>

<PARAM name="remoteStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/>

<PARAM name="remotedataPortBase" value="17700"/>

<?xml version="1.0" encoding="utf-8"?> <ROOT> <!-- 整体信息 --> <CLUSTER> <!-- 数据库集群名称 --> <PARAM name="clusterName" value="PanWeiDB" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="gdb43,gdb44,gdb45"/> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/data/panweidb/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/data/panweidb/log" /> <PARAM name="tmpMppdbPath" value="/data/panweidb/tmp"/> <PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /> <!--数据库core文件目录--> <PARAM name="corePath" value="/data/panweidb/corefile"/> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.3.43,192.168.3.44,192.168.3.45"/> </CLUSTER> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="gdb43"> <PARAM name="name" value="gdb43"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.43"/> <PARAM name="sshIp1" value="192.168.3.43"/> <!-- cm 管理节点部署信息 --> <PARAM name="cmsNum" value="1"/> <!-- 主CM Server端口号,默认值5000 --> <PARAM name="cmServerPortBase" value="18800"/> <!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --> <PARAM name="cmServerListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <!-- cmServerHaIp1。主、备CM Server间通信的IP地址。 Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。 未设置时,默认根据主、备CM Server所在主机的backIp1生成。--> <PARAM name="cmServerHaIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gdb43,gdb44,gdb45"/> <!-- cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。 各集群主机上均需配置该参数。--> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> <!-- dn 数据节点 --> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataListenIp1" value="192.168.3.43,192.168.3.44,192.168.3.45"/> <PARAM name="dataNode1" value="/data/panweidb/data,gdb44,/data/panweidb/data,gdb45,/data/panweidb/data"/> <PARAM name="dataNode1_syncNum" value="2"/> <!-- sdr 配置 --> <PARAM name="localStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45"/> <PARAM name="remoteStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/> <PARAM name="remotedataPortBase" value="17700"/> </DEVICE> <DEVICE sn="gdb44"> <PARAM name="name" value="gdb44"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.44"/> <PARAM name="sshIp1" value="192.168.3.44"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> <DEVICE sn="gdb45"> <PARAM name="name" value="gdb45"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.45"/> <PARAM name="sshIp1" value="192.168.3.45"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> </DEVICELIST> </ROOT> 3.1.2. 从中心sdr配置

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

<!-- sdr 配置 -->

<PARAM name="localStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/>

<PARAM name="remoteStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45)"/>

<PARAM name="remotedataPortBase" value="17700"/>

<?xml version="1.0" encoding="utf-8"?> <ROOT> <!-- 整体信息 --> <CLUSTER> <!-- 数据库集群名称 --> <PARAM name="clusterName" value="PanWeiDB" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="gdb46,gdb47,gdb48"/> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/data/panweidb/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/data/panweidb/log" /> <PARAM name="tmpMppdbPath" value="/data/panweidb/tmp"/> <PARAM name="gaussdbToolPath" value="/data/panweidb/tool" /> <!--数据库core文件目录--> <PARAM name="corePath" value="/data/panweidb/corefile"/> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="192.168.3.46,192.168.3.47,192.168.3.48"/> </CLUSTER> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="gdb46"> <PARAM name="name" value="gdb46"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="192.168.3.46"/> <PARAM name="sshIp1" value="192.168.3.46"/> <!-- cm 管理节点部署信息 --> <PARAM name="cmsNum" value="1"/> <!-- 主CM Server端口号,默认值5000 --> <PARAM name="cmServerPortBase" value="18800"/> <!-- cmServerListenIp1。CM Server用于侦听CM Agent连接请求或DBA管理请求的IP地址 --> <PARAM name="cmServerListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/> <!-- cmServerHaIp1。主、备CM Server间通信的IP地址。 Value中左边为主CM Server的主机IP地址,右边为备CM Server的主机IP地址。 未设置时,默认根据主、备CM Server所在主机的backIp1生成。--> <PARAM name="cmServerHaIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/> <PARAM name="cmServerlevel" value="1"/> <PARAM name="cmServerRelation" value="gdb46,gdb47,gdb48"/> <!-- cmDir。CM数据文件路径。保存CM Server和CM Agent用到的数据文件,参数文件等。 各集群主机上均需配置该参数。--> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> <!-- dn 数据节点 --> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="17700"/> <PARAM name="dataListenIp1" value="192.168.3.46,192.168.3.47,192.168.3.48"/> <PARAM name="dataNode1" value="/data/panweidb/data,gdb47,/data/panweidb/data,gdb48,/data/panweidb/data"/> <PARAM name="dataNode1_syncNum" value="2"/> <!-- sdr 配置 --> <PARAM name="localStreamIpmap1" value="(192.168.3.46,192.168.3.46),(192.168.3.47,192.168.3.47),(192.168.3.48,192.168.3.48)"/> <PARAM name="remoteStreamIpmap1" value="(192.168.3.43,192.168.3.43),(192.168.3.44,192.168.3.44),(192.168.3.45,192.168.3.45)"/> <PARAM name="remotedataPortBase" value="17700"/> </DEVICE> <DEVICE sn="gdb47"> <PARAM name="name" value="gdb47"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.47"/> <PARAM name="sshIp1" value="192.168.3.47"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> <DEVICE sn="gdb48"> <PARAM name="name" value="gdb48"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.3.48"/> <PARAM name="sshIp1" value="192.168.3.48"/> <!-- cm 管理节点 --> <!-- cmServerPortStandby。备CM Server端口号,默认值5500 --> <PARAM name="cmServerPortStandby" value="18800"/> <PARAM name="cmDir" value="/data/panweidb/cmserver"/> </DEVICE> </DEVICELIST> </ROOT> 3.2. 创建容灾用户

在主从集群均创建容灾用户。

create user sdr_pw with replication password 'sdr3@repw';

3.3. 创建容灾关系 3.3.1. 启动主中心

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

在 192.168.3.43 安装用户下执行:

gs_sdr -t start -m primary -X /home/omm/soft/pwdb_h.xml -U sdr_pw -W sdr3@repw

3.3.2. 启动从中心

在启动主中心后,不需要等待主中心启动完毕,即启动从中心。

在 192.168.3.46 安装用户下执行:

gs_sdr -t start -m disaster_standby -X /home/omm/soft/pwdb_zz.xml -U sdr_pw -W sdr3@repw

3.4. 查看容灾状态 3.4.1. 主中心状态

在 192.168.3.43 安装用户下执行:

gs_sdr -t query cm_ctl query -Cdvip gs_om -t status --detail

3.4.2. 从中心状态

在 192.168.3.46 安装用户下执行:

gs_sdr -t query cm_ctl query -Cdvip gs_om -t status --detail

3.4.3. 查看复制槽配置 3.4.3.1. 主中心主节点配置详情

在 192.168.3.43 执行:

grep replconninfo /data/panweidb/data/postgresql.conf

3.4.3.2. 从中心主节点配置详情

在152.57.82.136执行:

grep replconninfo /data/panweidb/data/postgresql.conf

3.4.4. 查看复制槽状态 3.4.4.1. 主中心主节点查询结果

在 192.168.3.43 安装用户下连接数据库执行:

select * from pg_replication_slots; select * from pg_stat_replication;

3.4.4.2. 从中心主节点查询结果

在 192.168.3.46 安装用户下连接数据库执行:

select * from pg_replication_slots; select * from pg_stat_replication;

3.4.5. gs_sdr -t query容灾查询状态说明

项目

含义

说明

备注

hadr_cluster_stat

流式容灾中数据库实例状态。

normal

标识该数据库实例未参与流式容灾。

-

full_backup

主数据库实例数据全量复制中。

流式容灾中仅主数据库实例有此状态。

archive

主数据库实例日志流式复制中。

流式容灾中仅主数据库实例有此状态。

backup_fail

主数据库实例数据全量复制失败。

流式容灾中仅主数据库实例有此状态。

archive_fail

主数据库实例日志流式复制失败。

流式容灾中仅主数据库实例有此状态。

switchover

计划内主备倒换中。

流式容灾中主备数据库实例皆有此状态。

restore

灾备数据库实例数据全量恢复中。

流式容灾中仅灾备数据库实例有此状态。

restore_fail

灾备数据库实例全备恢复失败。

流式容灾中仅灾备数据库实例有此状态。

recovery

灾备数据库实例日志流式复制中。

流式容灾中仅灾备数据库实例有此状态。

recovery_fail

灾备数据库实例日志流式复制失败。

流式容灾中仅灾备数据库实例有此状态。

promote

灾备数据库实例升主中。

流式容灾中仅灾备数据库实例有此状态。

promote_fail

灾备数据库实例升主失败。

流式容灾中仅灾备数据库实例有此状态。

hadr_switchover_stat

流式容灾主备数据库实例计划内倒换进度展示。

百分比。

倒换进度展示。

-

hadr_failover_stat

流式容灾灾备数据库实例升主进度展示。

百分比。

倒换进度展示。

-

RTO

此时发生灾难,数据恢复所需要的时长。

数据库实例停机,网络异常等导致流式容灾中断。

流式容灾中仅主数据库实例可查。

非空

数据恢复所需要的时长,单位s。

RPO

此时发生灾难,数据库实例丢失的数据时长。

数据库实例停机,网络异常等导致流式容灾中断。

流式容灾中仅主数据库实例可查。

非空

数据库实例丢失的数据时长,单位s。

标签:

磐维数据库双中心容灾流复制集群搭建由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“磐维数据库双中心容灾流复制集群搭建