数据库管理325期 2025-05-13
数据库管理-第325期 ADG Failover后该做啥(20250513)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
前两周我这边有一套存储出现了故障,上面运行的一套数据库出问题了,也连带了一大堆虚拟机遭殃,本期总结一下故障时段作为DBA的操作流程,不含截图。
1 故障处置
登陆DGMGRL
dgmgrl sys@dbdg
进入DGMGRL终端后开始Failover操作:
DGMGRL> failover to dbdg;
Performing failover NOW, please wait...
Failover succeeded, new primary is "dbdg"
这时候原来的灾备数据库就切换为primary角色,为读写状态,原来的主库在dg配置中会变为disable状态。应用需要将数据库连接地址改到新的主库,如果配置了高可用连接字符串的一般来说已经可以正常访问数据库了。
2 恢复原主库
因为存储链路断线造成了数据库大量文件不一致,同时数据库没有开启闪回(flashback)功能,因此无法通过以下方式恢复原主库:
DGMGRL> reinstate database dbaas;
存储完全恢复后需要完成以下操作:
- 删除ASM中剩余内容
切换到原主库grid用户,进入ASMCMD终端,删除除参数文件以外的所有内容。
su - grid
asmcmd
rm -rf +DATAC1/dbaas/...
...
- 将数据库启动至nomount状态
sqlplus / as sysdba
SQL> startup nomount
- 重新复制数据库
rman target sys@dbdg auxiliary sys@dbaas
duplicate target database for standby nofilnamecheck from active database;
等待复制完成出现completed字样。
- 恢复原主库DG角色
dgmgrl sys@dbdg
DGMGRL> enable database dbaas;
Enabled.
- 恢复日志应用
DGMGRL> edit database dbaas set state='APPLY-ON';
- 将数据库启动至open状态
SQL> alter database open;
--其他节点执行:
SQL> startup nomount
SQL> alter database mount standby datbase;
SQL> alter database open;
- 检查原备库切换状态
DGMGRL> validate database verbose dbaas;
需要确认是可以switchover。
- 检查service
可以通过grid用户执行资源检查:
su - grid
crsctl status res -t
如有service未启动则手动启动:
su - oracle
srvctl start service -db dbaas -s xxxdb_ro
至此原备库向原主库的反向实时同步ADG就恢复完成了。
3 其他操作
如需恢复原来的角色直接switchover即可:
dgmgrl sys@dbaas
DGMGRL> switchover to dgaas;
Performing switchover NOW, please wait...
New primary database "dbaas" is opening...
Operation require start up of instance "dbdg1" on database "dbdg"
Starting instance "dgdg"...
Connected to an idle instance.
Oracle instance started.
Connected to "dbdg"
Database mounted.
Database opened.
Connected to "dbdg"
Switchover succeeded, new primary is "dgaas"
成功切换后,完成DG配置检查、主备库service检查后即可。如遇到原主库切换primary过程失败,启动原主库还是physical standby角色,而原备库已切换为physical standby角色,在DGMGRL中重新switchover即可。
总结
本期总结了在使用DGMGRL管理且未开启flashback功能的DG环境中failover后如何恢复主备实时同步关系及如何解决其他相关问题。
老规矩,知道写了些啥。