【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

发布时间:2025-07-21 00:14

发布时间:2020-08-10 02:06:56 阅读:275 作者:恩墨学院 栏目:关系型数据库

开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

作者介绍

现任云和恩墨数据库技术顾问,擅长Oracle数据库的安装配置、故障诊断、性能诊断、性能优化、备份容灾解决方案的设计与实施。

个人技术博客:https://www.cnblogs.com/jyzhao

在DG中,switchover和failover是两个重要的概念,也是DG实现的核心。根据不同的DG配置,switchover和failover也是有差异的。当主库被crash之后,如何进行DG foilover的操作?

概述

本文是针对在DG灾备环境进行failover操作以及后续恢复的报告。

测试环境

数据库版本:Oracle 11.2.0.4
Site A:主库 db_unique_name=jyzhao
Site B:备库(实时应用)db_unique_name=mynas
Site C:备库(延迟1小时应用)db_unique_name=jyzhao_s

简称注释

A库 => Site A:主库
B库 => Site B:备库(实时应用)
C库 => Site C:备库(延迟1小时应用)

当A库crash后,在B库进行failover将B切换为新的主库,确认failover之后,A库和C库应该如何处理才可以成为新的备库继续使用?是否需要重建?重建的话,是否需要重新备份来恢复,以前的备份是否可以用来创建备库?

问题

验证过程

 1、A库异常关闭

A库:

SQL>shutdown abort

 2、B库进行failover切换为新主库

failover 标准步骤如下:

#取消DG应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

#重启下数据库(建议)

shutdown immediate;

startup

#操作不可逆,确定实际情况需要failover

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH force;

SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

#尝试常规切换为主库

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

如果这一步的常规切换失败,提示需要介质恢复,那么:

 1)恢复备库 recover standby database until cancel;

 2)激活备库 alterdatabaseactivatestandbydatabase;

#最后重新启动数据库

shutdownimmediate;

startup

查看此时B库的信息:

SQL>selectname, database_role, open_mode fromgv$database;

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

可以看到,目前B库已成为新的主库,redo日志的sequence重新开始。

 3、要求C库成为新主库的备库

现在要求C库成为新主库的备库。是否需要重建C库呢?答案是不需要。下面具体来看下验证过程。


C库的alert日志:

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

可以看到,在A库crash之后,C库收到网络无法连接到A库的告警,说明C库目前没有新的操作。


接下来想要C库成为B库(新主库)的备库,就需要尝试在B库上配置DG参数,使得B库的归档可以传输到C库。

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

同时在B库的tnsnames.ora文件中增加到C库的连接:

#StandbySingle Instance

JYZHAO_S=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jyzhao_s))  )

在B库设置完成后,观察B库的告警:

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

然后返回C库操作,将C库开启实时日志应用:

SQL>alter database recover managed standby database cancel;

Databasealtered.

SQL>alter database recover managed standby database using current logfile disconnect from session;

Databasealtered.

此时再观察C库的告警日志:

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

实际看到,C库已经可以正常应用日志。说明C库不需要重建即可通过简单配置成为新主库B库的新备库。

 4、要求A库成为新主库的备库

此时A库启动的话,是一个独立运行的数据库,如果想将A库也设置为主库的话,那么,通过新主库的最新备份肯定是可行的,但是如果数据量很大,之前A库自己本身有历史的备份,能否不再耗时备份新主库,直接通过历史的备份恢复呢?其实这个从上面的C库不再需要重建直接成为新主库的备库,也可以推断出,是可以的。只需要确认这个备份是在failover之前完成的。下面我们来具体实验验证下可行性。


在B库创建新的备库控制文件,并传输到A库相同路径下:

backupcurrentcontrolfileforstandbyformat'/tmp/std_control02.ctl';

在A库启动到nomount,恢复新的备库控制文件

restorestandbycontrolfilefrom'/tmp/std_control02.ctl';

在A库查看数据文件头的检查点,确认是在failover之前:

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

上面这个数据文件头的检查点是0,说明数据文件没有正确获取到,实际上是由于OMF的名字有变化,直接将数据文件路径catalog到备份集中,再switch即可。

catalogstartwith'+DATA1/jyzhao/datafile/';

switchdatabase to copy;

再次查询:

【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解

此时在mount状态下开启日志应用:

alter database recover managed standby database disconnect from session;

从告警日志观察,确认应用到最新时,取消日志应用:

alter database recover managed standby database cancel;

打开数据库,开启实时应用:

alter database recover managed standby database USING CURRENT LOGFILE disconnect from session;

最终查询可以正常实时应用。

结论


一般来说,在A库crash之后,B库failover成为新的主库,那么原来设置为延迟1小时应用的C 库是可以直接配置成为新主库的备库。A库修复后,也可以通过failover之前的现有备份集来恢复到failover之前的状态,而不需要在新主库重新去备份。

恩墨学院隶属于云和恩墨(北京)信息技术有限公司,致力于提供专业高水准的oracle数据库与大数据培训服务,挖掘培养大数据与数据库人才。恩墨学院提供包括个人实战技能培训、个人认证培训、企业内训在内的全方位大数据和数据库技术培训。ACE级别超强师资,配备专业实验室,沉浸式学习与训练,专业实验室、配备专业助教指导训练。能迅速融入专家圈子,业内资源丰富,迅速积累职场人脉。oracle数据库课程包括:Oracle DBA实战班、Oracle OCM考试、Oracle OCP考试等。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

网址:【恩墨学院】深入解析:一主多备DG环境,failover的实现过程详解 https://m.mxgxt.com/news/view/1595101

相关内容

生辰八字算命,科学还是迷信?——深入解析生辰八字详批的真相
婚礼流程深度解析与备婚实用攻略
婚礼流程的详细解析与指南
八字命理深度解析:详解其含义与科学解读
订婚的详细流程与准备事项解析
插画师的行业环境分析:对插画师的行业环境进行深入分析
明星同款普拉提体验:环境与课程全解析
理解墨西哥的国民性
深度解析陈妍希:家境、家世与学历的璀璨背景
背景调查全流程解析

随便看看