
【经验分享】openGauss容灾集群搭建
gs_sdr命令代码解读
背景
openGauss
推出了容灾架构,相比之前的一个集群主从架构,而容灾架构是两个集群间的数据同步。为了更深入了解其原理,本文试图通过阅读gs_sdr
命令相关的代码来学习下相关的各种操作。
1.容灾搭建过程可以参考:https://www.modb.pro/db/628767
2.vscode调试配置可以参考:https://www.modb.pro/db/658344
3.个人学习记录,理解不一定完全正确。如有错误,可指出一起探讨_
环境准备
安装集群
安装两套集群,每套集群含2个节点,相关信息如下:
集群1信息
集群2信息
创建容灾用户
在集群1
上创建容灾用户:
修改XML
配置
修改集群1
修改后的xml配置如下:
修改集群2
修改后的xml配置如下:
配置容灾
将集群1
启动为主集群
使用的命令为:
vscode
调试配置
在gs_sdr
脚本main
函数中打上断点
代码阅读
判断是否使用root
权限操作
初始化StreamingDisasterRecoveryBase
类
base
中保存的信息可以参考下图:
判断做何种操作
创建锁定文件
由于容灾搭建过程涉及到数据同步耗时较长,这里应是为避免多次重复操作。
判断是否有其他gs_sdr操作
执行操作
进度记录相关操作
检查集群状态
判断执行节点是否为主节点
操作需要在主节点上执行。
生成 key_name.key.cipher & key_name.key.rand 文件
保存hadr信息到数据库
检查是否已经有首备节点
判断是否已经是容灾环境。
检查是否有cm
容灾环境必须要有cm
组件。
检查是否在升级中
写进度文件
common_step_for_streaming_start
修改pg_hba配置
复制参数replconninfo相关设置
等待首备连接
Waiting for the main standby connection.
这里需要在备集群执行下面的命令:
gs_sdr -t start -m disaster_standby -U dr_user -W oracle_4U -X /home/omm/single.xml --time-out=86400 # 此处为方便,直接在终端上执行该命令,没有进行调试。
将集群2启动为备集群
vscode调试配置
{
"version": "0.2.0",
"configurations": [
{
"name": "gs_sdr",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": ["-t","start","-m","disaster_standby","-X","/home/omm/single.xml","-U","dr_user","-W","oracle_4U","--time-out=86400"]
}
]
}执行的类: streaming_diaster_recovery_start
代码阅读
Start build key files from remote cluster
备集群会进行build
,速度比较慢(与网络环境和数据库大小关系较大)。
copy file from data dir to streaming dir
check cluster user consistency
主要检查版本和版本提交号是否一致。
检查安装用户是否一致
设置集群运行模式stream_cluster_run_mode
停止备集群
再次build
集群
启动集群
查询容灾状态
主集群
备集群
文章转载自公众号:openGauss
