前言
在金融核心场景两地三中心环境下,往往有异地灾备切换演练需求,达梦以往的做法是将整套集群环境停机,异地灾备的异步备库切为实时备库,而后通过监视器switchover命令进行切换,主机房切换至异地之后,再将原有主库切为异步备机,这样的做法又麻烦又比较low,23年以后的达梦数据库支持了实时备库和异步备库的不停机互转。
这一功能在普通主备和DSC主备环境下都支持,下面演示一下具体操作方式,ps:由于本人没有dsc+dsc的环境,这里只演示了dsc+dw也就是2+1环境的操作步骤,至于2+2环境,相信只要看完了本篇文章,各位dba应该可以自行推断。
1 单实例主库(普通主备环境)
1.1 实时备库转异步
1.1.1 初始状态

1.1.2 关闭实时备库的守护进程

1.1.3 登录监视器将备库的归档置为失效

注意:
(1)这里虽然监视器显示修改DM02的归档状态为无效失败,但是不影响后续操作。
(2)这一步之前必须关闭备库的守护进程,否则,将DM02归档置为失效后,会自动变回正常状态。
1.1.4 登录主库删除其到实时备库的归档

注意:这步操作之前必须将主库到实时备库的归档置为失效状态,否则,无法删除归档:

1.1.5 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为LOCAL


1.1.6 登录备库,删除备库到主库的归档,并启动备库守护进程

1.1.7 登录主库,添加主库到备库的异步归档配置

1.1.8 修改主库的dmwatcher.ini,将守护进程类型改为LOCAL,并重启主库守护进程

注意:
(1)如果存在其他实时/及时归档则继续保持守护进程的GLOBAL状态,直接重启守护进程即可。
(2)如果没有其他实时/及时归档,主库守护进程是GLOBAL状态会报错,需要修改为LOCAL。

1.1.9 监视器查看结果,切换成功

1.2 异步备库转实时
1.2.1 初始状态

1.2.2 登录主库删除其到异步备库的归档

1.2.3 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为GLOBAL

1.2.4 登录备库,添加备库到主库的实时归档配置,并启动备库的守护进程

1.2.5 登录主库,添加主库到备库的实时归档配置,并重启主库守护进程

注意:这一步注意主库守护进程的状态需要是GLOBAL状态,如果是LOCAL状态,则需要修改dmwatcher.ini配置后再重启守护进程。
1.2.6 监视器查看结果,切换成功

1.3 限制
1.3.1 部署时需要提前配置dmtimer.ini
(1) 所有实例需要部署的时候就提前配置好dmtimer.ini。
(2) 各实例dm.ini的TIMER_INI应当直接配成1,否则后续实时改异步需要修改并重启实例,且不论主备库改参数都不影响正常使用。
1.3.2 压力下实时改异步设置归档失效时主机会挂起2秒
有压力情况下主库insert挂起2秒左右,select无影响

1.3.3 压力下异步改实时主库添加实时归档配置后主库卡住,因此此操作一定不可以在业务高峰期进行
此时主备间在追数据,select无影响,但不可以进行DDL和写操作。


2 DSC+单机,2+1环境
2.1 实时备库转异步
2.1.1 初始状态

2.1.2 登录监视器将备库的归档置为失效

2.1.3 登录主库删除其到实时备库的归档

注意:这步操作之前必须将主库到实时备库的归档置为失效状态,否则,无法删除归档
2.1.4 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为LOCAL

2.1.5 登录备库,删除备库到主库的归档,并启动备库守护进程

2.1.6 登录主库,添加主库到备库的异步归档配置


注意:
这步操作必须两个DSC节点都做,如果只做控制节点,后续非控制节点的守护进程重启会失败。
非控制节点守护进程重启失败后,在非控制节点上重做这一步即可,上面的截图就是非控制节点守护进程重启失败后重做的,经过验证不影响后续功能。
2.1.7 修改主库的dmwatcher.ini,将守护进程类型改为LOCAL,并重启主库守护进程


注意:
(1)如果存在其他实时/及时归档则继续保持守护进程的GLOBAL状态,直接重启守护进程即可。
(2)如果没有其他实时/及时归档,主库守护进程是GLOBAL状态会报错,需要修改为LOCAL。
(3)这步操作必须两个DSC节点都做,如果只做控制节点,后续非控制节点的守护进程重启会失败。
2.1.8 监视器查看结果,切换成功

2.1.9 验证数据同步


数据同步没有问题。
2.2 异步备库转实时
2.2.1 初始状态

2.2.2 登录主库删除其到异步备库的归档,两节点都要做


2.2.3 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为GLOBAL

2.2.4 登录备库,添加备库到主库的实时归档配置,并启动备库的守护进程

2.2.5 登录主库,添加主库到备库的实时归档配置,并重启主库守护进程,两节点都要做




注意:这一步注意主库守护进程的状态需要是GLOBAL状态,如果是LOCAL状态,则需要修改dmwatcher.ini配置后再重启守护进程。
2.2.6 监视器查看结果,切换成功

2.2.7 验证数据同步


3 单机+DSC,1+2环境
3.1 实时备库转异步
3.1.1 初始状态

3.1.2 登录监视器将备库的归档置为失效

3.1.3 登录主库删除其到实时备库的归档

注意:这步操作之前必须将主库到实时备库的归档置为失效状态,否则,无法删除归档
3.1.4 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为LOCAL,两节点都做

3.1.5 登录备库,删除备库到主库的归档,并启动备库守护进程,两节点都做

3.1.6 登录主库,添加主库到备库的异步归档配置

3.1.7 修改主库的dmwatcher.ini,将守护进程类型改为LOCAL,并重启主库守护进程

注意:
(1)如果存在其他实时/及时归档则继续保持守护进程的GLOBAL状态,直接重启守护进程即可。
(2)如果没有其他实时/及时归档,主库守护进程是GLOBAL状态会报错,需要修改为LOCAL。
3.1.8 监视器查看结果,切换成功

3.1.9 验证数据同步


3.2 异步备库转实时
3.2.1 初始状态

3.2.2 登录主库删除其到异步备库的归档

3.2.3 关闭备库的守护进程并修改其dmwatcher.ini,修改守护进程类型为GLOBAL,两节点都做

3.2.4 登录备库,添加备库到主库的实时归档配置,并启动备库的守护进程,两节点都做


3.2.5 登录主库,添加主库到备库的实时归档配置,并重启主库守护进程

3.2.6 监视器查看结果,切换成功

3.2.7 验证数据同步


说明
1 部署时需要提前配置dmtimer.ini
(1) 所有实例需要部署的时候就提前配置好dmtimer.ini。
(2) 各实例dm.ini的TIMER_INI应当直接配成1,否则后续实时改异步需要修改并重启实例,且不论主备库改参数都不影响正常使用。
2 DSC集群关于增删归档,修改并重启守护进程需要在两个节点都做