DM8实时主备系统故障切换测试
(1)自动切换方式(DW_MODE = AUTO;INST_AUTO_RESTART = 1)
初始状态:DM1主机,DM2备机
测试1:主机创建表,插入数据,备库成功建表并同步数据。
主库:
备库:
测试2:强杀主机服务。自动切换后重启服务
监视器状态:
测试3:强杀备机,守护进程自动重启备机服务
监视器状态:
(2)手动切换方式(DW_MODE = MANUAL;INST_AUTO_RESTART = 1)
测试1:
主备库为静态数据库,无实时数据生成。主库网络中断,为保证业务开展,需将备库切换为新主库,待原主库恢复后,加入集群,恢复集群正常使用。
原主库:GRP1_RT_01
备库 :GRP1_RT_02
确认监视器开启服务,主库网络故障中断,备库接管成功后,主库网络恢复,确认监视器发现主库发生故障
因为主备为手动切换模式,同时监视器处于主库故障前已开启,启动备库接管
备库接管成功,网络恢复后,原主库GRP1_RT_01自动加入集群。
因主备库的SN值和N_NEW出现不一致,导致出现短暂双主情况
主库的守护进程可自动进入 Recovery 状态,进行数据恢复,集群恢复正常使用,切换主库。
测试2.确认监视器开启,主库网络故障中断,备库接管成功同时原主库瞬间恢复
确认监视器发现主库故障,为保证业务开展,马上切换成备库,切换成功后同时原主库网络恢复,加入集群,出现短暂双主情况
主库的守护进程自动进入 Recovery 状态,集群同步成功
切换主备库,恢复主备集群。
测试3.确认监视器没开启服务,主库网络故障中断,备库强制接管成功后,主库网络恢复,开启监视器,发现集群中只有备库存在
为保证生产环境的可用性,尝试采用备库接管主库后发现无法接管
采用备库强制接管,接管主库成功
等待主库网络恢复后,原主库自动加入集群,出现短暂双主情况,主库的守护进程自动进入 Recovery 状态,集群同步成功
切换主备库,恢复主备集群
测试4.确认监视器没开启服务,主库网络故障中断,备库强制接管成功瞬间主库网络恢复,开启监视器后,发现只有备库存在
采用强制接管模式,将备库接管为主库,接管成功
当备库强制接管成功后,主库瞬间加入集群,出现短暂双主情况,主库的守护进程自动进入 Recovery 状态,集群同步成功
切换主备库,恢复主备集群
测试5.确认监视器后台启动,主库网络故障中断,备库接管成功后,主库网络恢复
在主库故障前,确认监视器已后台启动。主库网络中断,开启监控监视器发现只有备库存在
尝试采用备库接管主库,发现无法正常接管
采用强制接管模式,将备库接管为主库,接管成功
等待主库网络恢复后,主库自动加入集群,导致短暂双主情况,主库的守护进程自动进入 Recovery 状态,集群同步成功
切换主备库,恢复主备集群
测试6.确认监视器后台启动,主库在做建表操作时,主库网络中断,备库接管
当主库在建表操作成功后,将网络中断,发现备库同时也建表成功,因此改变策略,同时在备库进行数据插入操作,因为备库为stanby模式,无法进行DDL操作,因此需要将备库接管
开启监控监视器后,发现只有备库存在,采用强制接管
待主库网络恢复后,自动加入集群,出现双主情况
重启了DmWatcherService服务,主库的守护进程自动进入 Recovery 状态失败,GRP1_RT_01的ISTATUS状态为MOUNT,集群同步失败,依然存在双主情况;
尝试重启DmService,集群同步失败依然存在双主情况。
解决方法:停掉原主库GRP1_RT_01的数据库和数据库监控服务,对现主库GRP1_RT_02做联机备份,拷贝data目录下文件到GRP1_RT_01:
./disql SYSDBA/SYSDBA@192.168.175.131:32142
BACKUP DATABASE BACKUPSET ‘/home/dmdba/dmdbms/data/DAMENG/bak/db_full_bak’;
scp -r ./* dmdba@192.168.175.130:/home/dmdba/dmdbms/data/
对原主库GRP1_RT_01采取脱机备份:
RESTORE DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/data/DAMENG/bak/db_full_bak’;
RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/home/dmdba/dmdbms/data/DAMENG/arch’;
RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ UPDATE DB_MAGIC;
修改GRP1_RT_01 /home/dmdba/dmdbms/data/DAMENG/dm.ini中的ALTER_MODE_STATUS参数为1,允许用户进行直接通过 SQL 修改 数据库模式、状态以及 OGUID。
以mount的方式打开GRP1_RT_01数据库服务,手动修改INST_OGUID值,并把GRP1_RT_01改为备库:
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
关闭数据库服务,再次修改dm.ini中的ALTER_MODE_STATUS参数为0
,开启GRP1_RT_01数据库服务,GRP1_RT_01、GRP1_RT_02数据库守护服务,打开监控器:
集群恢复正常,GRP1_RT_01查询建立的表,可以查询出数据:
切换主备库,恢复主备集群: