注册
备库异常宕机时,通过恢复主库归档的方式修复备库
培训园地/ 文章详情 /

备库异常宕机时,通过恢复主库归档的方式修复备库

吉吉 2025/06/10 56 0 0

1 背景描述

在工作中,当主备架构下备库异常宕机,且主备库归档日志不连续时,除去通过使用主库全备来重新搭建主备数据库的方式,如果此时有不连续归档的归档备份,可通过在主库恢复主库归档后,备库重演的方式来修复备库,缩短集群恢复的时间。

2 问题测试过程

以下为当业务和主库均已停止时的恢复测试过程。

2.1检查当前数据库状态正常

image.png

2.2记录主备库归档情况

主库:
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-31-43.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-31-50.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-00.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-13.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-25.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-34.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-48.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-59.log
image.png
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-31-41.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-31-48.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-31-57.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-32-11.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-32-23.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-32-32.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-32-45.log
STANDBY_ARCHIVE_0x502A0380_EP0_2025-06-06_14-32-58.log
image.png

2.3模拟备库服务异常

kill掉备库的守护进程和数据库服务进程
image.png
image.png

2.4主库持续写一段时间数据,刷新归档日志

前五个为模拟备库故障前,主库已存在的归档
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-13.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-25.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-34.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-48.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-59.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-39-07.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-39-12.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-40-46.log
image.png

2.5主库进行归档备份

SQL> backup archivelog all backupset '/dm/DW01/arch_all';

2.6模拟主库旧归档日志丢失

通过mv模拟删除掉主库的以下归档日志(前五个为模拟备库故障前,主库已存在的归档)
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-13.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-25.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-34.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-48.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-32-59.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-39-07.log
ARCHIVE_LOCAL1_0x502A0380_EP0_2025-06-06_14-39-12.log
image.png

2.7停止主库模拟业务停止

image.png

2.8恢复主库归档

使用主库的归档备份来恢复主库归档,恢复归档的操作可以忽略主库归档配置的归档日志存储上限,恢复全部归档日志。

RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dm/DW01/arch_all' TO ARCHIVEDIR '/dm/DW01/arch' OVERWRITE 1;

image.png

2.9启动主备集群

归档恢复完成后,正常启动主备集群
image.png
image.png
启动完成后进行故障处理,备库完成recover,恢复正常
image.png

3 备注

1)根据上述测试结果可知,此方案恢复主备数据库,需要归档备份中包含所有自备库宕机到恢复开始时的归档日志文件,不然恢复后仍会出现归档日志丢失导致的备库无法恢复问题
2)如果在主库归档恢复后有新归档日志写入,则会导致旧归档日志被轮训掉,仍会出现备库无法恢复的问题。针对该情况,可尽量保持业务停止时进行恢复

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服