注册
DM主备集群恢复操作
培训园地/ 文章详情 /

DM主备集群恢复操作

果子狸 2023/03/30 878 1 0

DM主备集群恢复操作

DM数据守护(Data Watch)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求。解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求。但是在某些故障问题发生后,集群被破坏,无法自我恢复,此时就需要手动进行集群的恢复操作,即备库重做。

主机ip cpu 内存 硬盘 网卡 操作系统 数据库版本
192.168.88.142 1核 2G 20G 1000Mb/s redhat6.5 DM Database Server 64 V8 7.6 企业版 DB Version: 0x7000c 03134283890-20220525-161267-10045
192.168.88.144 1核 2G 20G 1000Mb/s redhat6.5 DM Database Server 64 V8 7.6 企业版 DB Version: 0x7000c 03134283890-20220525-161267-10045

主备信息:

实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMSVR01 5236 33141 192.168.88.142 61141 52141
DMSVR02 5236 33141 192.168.88.144 61141 52141

1、集群目前情况

集群目前状态正常,判断依据:

1)DMSVR01、DMSVR02实例的守护进程状态为open;

2)DMSVR01、DMSVR02实例的状态均为open,模式一主一备;

3)DMSVR01、DMSVR02实例归档状态均valid;

4)tip命令显示RW1组实例运行正常。
wps1.jpg

2、模拟集群异常

正式环境中可能会出现的一种问题:节假日期间,主库操作系统故障异常关闭且无法启动,备库接管切换主库后承载业务。但是备库归档日志保留时间太短,最终导致主备库差异过大,集群无法通过归档日志重做自动恢复;

1.关闭主库所在虚拟机,此时确认监视器信息如下,根据最后的信息,判断新主库接管成功。

./dmmonitor ../data/DM01/dmmonitor.ini_confirm 
..
..
..
[monitor]         2023-03-27 09:51:19: 接收守护进程(DMSVR01)消息超时
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2023-03-27 09:51:08  ERROR          OK        DMSVR01          OPEN        PRIMARY   VALID    14       177698          177698          
​
[monitor]         2023-03-27 09:51:19: 检测到PRIMARY实例故障,开始对组(RW1)执行自动接管
[monitor]         2023-03-27 09:51:19: 通知组(RW1)当前活动的守护进程设置MID
[monitor]         2023-03-27 09:51:20: 通知组(RW1)当前活动的守护进程设置MID成功
[monitor]         2023-03-27 09:51:20: 开始使用实例DMSVR02接管
[monitor]         2023-03-27 09:51:20: 通知守护进程DMSVR02切换TAKEOVER状态
[monitor]         2023-03-27 09:51:20: 守护进程(DMSVR02)状态切换 [OPEN-->TAKEOVER]
[monitor]         2023-03-27 09:51:21: 切换守护进程DMSVR02为TAKEOVER状态成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行SP_SET_GLOBAL_DW_STATUS(0, 7)语句成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行ALTER DATABASE MOUNT语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行ALTER DATABASE MOUNT语句成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行ALTER DATABASE PRIMARY语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行ALTER DATABASE PRIMARY语句成功
[monitor]         2023-03-27 09:51:21: 通知实例DMSVR02修改所有归档状态无效
[monitor]         2023-03-27 09:51:21: 修改所有实例归档为无效状态成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2023-03-27 09:51:21: 实例DMSVR02开始执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句
[monitor]         2023-03-27 09:51:21: 实例DMSVR02执行SP_SET_GLOBAL_DW_STATUS(7, 0)语句成功
[monitor]         2023-03-27 09:51:21: 通知守护进程DMSVR02切换OPEN状态
[monitor]         2023-03-27 09:51:22: 守护进程(DMSVR02)状态切换 [TAKEOVER-->OPEN]
[monitor]         2023-03-27 09:51:23: 切换守护进程DMSVR02为OPEN状态成功
[monitor]         2023-03-27 09:51:23: 通知组(RW1)的守护进程执行清理操作
[monitor]         2023-03-27 09:51:23: 清理守护进程(DMSVR02)请求成功
[monitor]         2023-03-27 09:51:23: 使用实例DMSVR02接管成功
[monitor]         2023-03-27 09:51:23: 组(RW1)使用实例DMSVR02自动接管成功

2.新主库接管后,insert大量数据,并清理掉归档(模拟备库归档重做必须的归档日志被清理掉问题)

SQL> create table t_insert as select level,'hello hello hello hello' from dual connect by level <10000000;
SQL> checkpoint(100);
SQL> alter system switch logfile;

[dmdba@localhost dmarch]$ rm -f /dbarch/dmarch/*log

3.启动之前停止的虚拟机,观察到集群无法自动恢复,且两实例lsn差异较大(无论等待多久实例都无法自我恢复,check recover rw1.DMSVR01也从提示一定时间后再发起检查,归档状态始终无效)。
wps6.jpg
wps7.jpg
再次在主库插入数据,防止方才删除归档操作导致备份因归档不完整失败。

SQL> delete from t_insert;
SQL> create table t_insert2 as select level,'hello hello hello hello' from dual connect by level <10000000;
SQL> commit;

3、备份还原恢复集群

备份主库

[dmdba@localhost bin]$ ./disqlSQL> backup database full backupset '/dm8/full_test';

备库还原恢复

[dmdba@localhost bin]$ ./dmrman dmrman 
V8
RMAN> restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/full_test';
RMAN> recover database '/dm8/data/DM01/dm.ini' from backupset '/dm8/full_test';
RMAN> recover database '/dm8/data/DM01/dm.ini'  update db_magic;
RMAN> exit
time used: 0.280(ms)

启动守护进程

[dmdba@localhost bin]$ /etc/init.d/DmWatcherServiceDMWATCHER start

监视器信息

wps8.jpg
启动守护进程后,守护进程拉起数据库,此时守护进程状态startup,守护进程切换到recover状态重做归档日志完成后,归档日志追平后再次切换回open状态,此时集群恢复正常,但还需要show命令进一步检查集群状态。

wps9.jpg
集群目前状态正常,判断依据:

1)DMSVR01、DMSVR02实例的守护进程状态为open;

2)DMSVR01、DMSVR02实例的状态均为open,模式一主一备;

3)DMSVR01、DMSVR02实例归档状态均valid;

4)tip命令显示RW1组实例运行正常;

5)lsn号基本一致;

4、备库重建要点及注意事项

1、还原恢复集群备库,启动守护进程拉起数据库进程,集群可自动重做归档恢复;

2、注意备份数据库的dmmal.ini、dmarch.ini、dmwatch.ini、dmmonitor.ini、dm.ini,防止故障恢复时,耗费大量时间编辑配置文件;

3、定期进行数据库备份、并注意归档保留时间覆盖备份,可以在故障时直接使用已有备份恢复;

4、数据库初始化时注意保存初始化命令,部分场景需要重新初始化;

5、DM8的备库重建只支持备份还原,DM7还支持停库数据文件scp方式恢复;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服