当前位置: 首页 > news >正文

Data Guard实现故障自动切换(二)(r11笔记第40天)

   今天下午我的一个朋友碰到了一个Data Guard的问题,大体是主备网络出现问题,因为环境中配置了自动切换,结果备库就自动切换为了主库,这样就成了“双主”,我帮忙看了下,对备库做了闪回,然后直接转换主库为备库角色,一个看似繁琐的修复工作就完成了。

   在一个一主多备的环境中,的确需要一个强大的工具来支持,所以最后朋友说DG Broker真是个好东西,我回了句 用好了DG Broker,手工管理Data Guard就是小米加步枪啊。

   就如同我昨天文章

    我们先来示范一下,看看它的好,然后说说它的限制和改进之处。

首先就是DG Broker最基础的两个命令了。

第一个命令是创建配置,添加主节点

DGMGRL> create configuration dg_dataguru as启用一下配置

DGMGRL> enable configuration;第二个命令是添加备库节点

DGMGRL> add database sdataguru as剩下的命令都主要是围绕这两个命令来服务的,查看一下配置成功后的信息情况。

DGMGRL> show configuration;MaxPerformanceFast-Start Failover: DISABLED正如红色字体标识的,目前的主备是在最大性能模式下,我看很多文章说要配置Fast-Start Failover需要在最大高可用模式下,这是错误的,实际上在最大性能模式和最大高可用模式下均可。

DGMGRL> enable fast_start failover;查看oerr ora 16651你会看到一屏幕的提示信息,把要点都说全了。我点几个主要的点

1.主备库需要开启闪回数据库

主库开启在open状态下即可,非常方便,至于为什么主库需要开启,主要是作为reinstate来铺垫的,是故障自愈的一个环节。

SQL> alter database flashback on;

SQL> recover managed standby database cancel;2.主备库的网络配置

一个简单的listener.ora的配置如下:

LISTENER =DATAGURU_DGMGRL)dataguru)重点就是红色的部分,基本格式就是<DB_Unique_Name>_DGMGRL

配置后要确保监听的服务正确注册了,重启对应的监听保证服务使用无误。

备库的配置也是类似的形式,就不重复贴出了。2.主备延迟,Failover的一些触发条件

设置数据库的切换优先级,可以配置FastStartFailoverTarget

如果我要设置数据库sdataguru的Failover对象为dataguru,就可以使用如下的命令。

edit database sdataguru set property FastStartFailoverTarget=dataguru;

如果主备的设置为最大高可用保护模式,则需要设置LogXptMode为sync

如果主备的设置为最大性能保护模式,则需要设置LogXptMode为async

启用FastStart Failover

DGMGRL> enable fast_start failover;查看状态的信息如下,有几点需要注意的就是我们可以设置Lag Limit,Observer Reconnect等属性。

DGMGRL> show fast_start failover;Lag Limit:          30 secondsShutdown Primary:   TRUEAuto-reinstate:     TRUEObserver Reconnect: (none)Observer Override:  FALSE

在此你可能对故障自愈没有深刻的体验,我们就来实验一下。

主库直接shutdown abort

22:36:07.60  Tuesday, January 10, 2017可以清晰的看到,是做了Failover的操作。

我们只需要把数据库启动到mount阶段,然后静观日志变化。22:37:34.67  Tuesday, January 10, 2017

就这样一个看似复杂的reinstate工作就自动修复了,无需手工干预和处理。

当然你要说这个过程中还有什么特别的研制,数据库层面来说,这种方式是非常好的,可以在这个基础上去借鉴更多的有点和细节之处。

    而这个方案的一个瓶颈就在于这个完全自动化的部分,如果出现了误判的情况,可能这时候问题就会很尴尬,会导致一些数据库切换的难解问题。

   从实践的角度和通用的角度来说,我们需要定义更多的规则和逻辑。这种方式可以作为一种非常好的参考理念。

相关文章:

  • 《横道世之介》观后感(r11笔记第44天)
  • 炉石传说罕见数据库事故!丢失30%数据,疑似误操作?
  • 假期前的数据库检查之主动优化(r11笔记第50天)
  • 回家(r11笔记第51天)
  • 新春快乐(r11笔记第57天)
  • 一个闪回区报警的数据恢复(r11笔记第62天)
  • 一个细小的空间问题触发的报警(r11笔记第68天)
  • Oracle Data Guard延迟的原因(r11笔记第69天)
  • 那些年我们追过的拳皇 (r11笔记第76天)
  • 今天比较忙比较累
  • 换工作这件事(一)(r11笔记第81天)
  • 浅谈MySQL Group Replication(r11笔记第80天)
  • 分分钟搭建MySQL Group Replication测试环境(r11笔记第82天)
  • 当拳皇遇上数据库,会擦出什么样的火花?
  • 我的女儿二三事(六)(r11笔记第87天)
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • DOM的那些事
  • Druid 在有赞的实践
  • eclipse的离线汉化
  • IDEA常用插件整理
  • IP路由与转发
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • MQ框架的比较
  • nodejs调试方法
  • PAT A1050
  • Spring-boot 启动时碰到的错误
  • - 概述 - 《设计模式(极简c++版)》
  • 说说动画卡顿的解决方案
  • 我建了一个叫Hello World的项目
  • 我看到的前端
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • hi-nginx-1.3.4编译安装
  • 阿里云移动端播放器高级功能介绍
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​插件化DPI在商用WIFI中的价值
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #Lua:Lua调用C++生成的DLL库
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (区间dp) (经典例题) 石子合并
  • (循环依赖问题)学习spring的第九天
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)可以带来幸福的一本书
  • (转)拼包函数及网络封包的异常处理(含代码)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Mobi域名介绍
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 读取 JSON格式的数据
  • .net 简单实现MD5