数据守护异常场景模拟测试
数据准备:
主库A:192.168.40.211
备库B:192.168.40.212
确认监视器:192.168.40.213
非确认监视器部署在B库中
初始确认监视器数据:
场景1:B库和确认监视器正常,将A库的数据守护进程停止模拟A库异常
预计结果:成功切换主机 show显示A库异常状态
确认监视器显示:
A库重新恢复后,变为备库,数据成功同步B库变化数据,SEQ从4949变为4952,LSN从43642变为43827
结论:主库出现异常,确认监视器能够识别出主库异常状态,并进行主备切换,当原主库恢复时,会同步新主库数据和包序号,实现主库故障再恢复并同步数据的功能
场景2:A库和确认监视器正常,将B库数据进程停止
预计结果:显示B状态异常
确认监视器显示:
结论:确认监视器中能查看到备库状态,若是出现故障会有错误提示
场景3:先将备库B的数据守护进程停止,查看确认监视器数据,确认备库异常后再将主库A的数据守护进程停止
预计结果:主备不切换,并报错
确认监视器显示:
B库停止数据守护进程:
A库停止数据守护进程:
结论:没有正常状态的备库,主库出现故障不会进行切换主备操作,确认监视器只会在有正常状态备库的情况下,自动接管故障主库
场景4:延续场景3,先恢复A库,再恢复B库
预计结果:数据重新同步,守护正常
确认监视器显示:
A库恢复:
B库恢复,SEQ同步更新成功:
结论:主库A再次恢复时包序号SEQ会发生变化,从异常时的4961变为正常后的4964,同时后恢复的B库会同步SEQ变为4964
场景5:延续场景3,先恢复B库,再恢复A库
预计结果:B库切换,可能出现数据不一致的结果
确认监视器显示:
B库恢复,确认监视器未进行切换主备操作,并报错
A库恢复,A库依然为主库,SEQ同步更新成功:
结论:与预计结果不符,测试结果为B库不会切换,会先等主库恢复后再进行数据同步,AB库的SEQ都发生变化,变为4966,能够一定程度上避免错误操作导致主备库数据不一致,甚至脑裂的异常情况
场景6:关闭确认监视器,并将A库的数据守护进程关闭,打开非确认监视器查看状态
预计结果:不进行主备切换
非确认监视器显示:
结论:非确认监视只能提供查询主备库状态的功能,当主库出现异常时,不能自动接管并切换主库
场景7:关闭确认监视,并将B库的数据守护进程关闭,打开非确认监视器查看状态
预计结果:主库无法确认备库状态,主库守护进程会处于 Confirm 确认状态,实例处于 Suspend 挂起状态(文档描述)
非确认监视器显示:
结论:符合预计结果,主库切换为suspend状态,此时主库不能进行写入操作,能够避免后续备库接入时,同步数据量增大
总结:
场景模拟测试结果除了场景5与预期不符,其余场景结果与预期结果一致,7个场景验证了数据守护的确认监视器自动接管故障主库;非确认监视器无法接管故障主库;监视器能够正确显示异常信息;故障情况优先保证主库数据多于等于备库再进行接管操作,以及备库全故障情况下,确认监视器是否开启对主库状态有不同的影响。
文章
阅读量
获赞