13
Oracle Data Guard 使用说明 时间 2016 作者 robo Oracle Data Guard 使用说明 作者:宋小荣 (robo) 时间: 2016-07-04 Oracle Data Guard 使用说明 时间 2016 作者 robo

Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Embed Size (px)

Citation preview

Page 1: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

Oracle Data Guard使用说明

作者:宋小荣 (robo)

时间:2016-07-04

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 2: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

版本历史:

版本 编写 日期 修改说明 用途

V1.0 宋小荣(robo) 2016-07-04 创建 用于 SECOUG成员的申请材料

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 3: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

目录

1.1 编写目的......................................................................................4

1.2 Data Guard概要说明...................................................................4

1.3 Data Guard的简要安装说明.......................................................7

1.4 Data Guard实现应用的读写分离...............................................8

1.5 Data Guard主备延迟监控及告警...............................................9

1.6 Data Guard记录常见问题及处理方法.....................................11

1.7 总结汇总....................................................................................12

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 4: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

一 .1 编写目的

Oracle Data Guard技术应用广泛,本文主要包含以下内容:

Data Guard的基础知识和应用场景介绍

环境搭建过程中需要特别注意点

读写分离场景中 Data Guard的使用

Data Guard的监控和告警

Data Guard常见问题及解决思路

注:本文不着重讲解具体技术细节的实现,详细的操作文档还请各

位读者翻阅官方文档。

一 .2 Data Guard概要说明

Oracle Data Guard架构场景如下图:

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 5: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

以上 Primary1(主库)数据同步至同机房的 Standby1(备库),

Standby2、Standby3有可能是位于同城机房或异地机房,通过网络

进行日志的传输及同步。

Oracle Data Guard(本文后续简称 DG)简单来说就是利用某种同步

机制(SQL Apply or Log Apply)可将数据实时地或近实时地同步至另一

台服务器,原理都是将主库上的数据变化在备库上重做一遍。因为

其具有稳定、可靠、维护简单的特点,所以在生产环境中被广泛使

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 6: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

用,如数据容灾、数据库迁移、数据库升级、SQL审核测试等场景。

DG它有三种同步模式,分别是最大数据保护模式、最大可用模

式、最大性能模式之分;有两种类型的 DG:物理 DG和逻辑 DG,物

理 DG “ ”: 物理 顾名思义主、备库间是数据块到数据块的物理拷贝,

提供是高效的数据安全,备库是采用 apply redo log来实现数据同步,

物理 DG无法规避坏块或逻辑错误;逻辑 DG “ ”: 逻辑 也指出主、备

库是逻辑同步,其同步机制是利用 LogMiner技术将 redo log解析成

SQL 并 apply 至备库。另外,还需补充一种 DG 角色,级联备库

(cascaded standby),同步主库数据的同时传输日志给子级的备库

(cascaded standby可以有自己的备库)。真实的生产环境中,物理

DG应用更为广泛,但也常有物理 DG、逻辑 DG一起使用的场景,提

高数据安全性。如果对以上知识点有疑惑的读者可以翻阅官方文档

《Data Guard Concepts and Administration》一书来寻求答案,也可以

留言或邮件交流。

纵观 Oracle的不同版本,不难发现 DG技术从 11G开始就已经

有很大的改善,以下介绍两个 11G版本中较为实用的两种特性:

1、DG备库可以在 OPEN READ ONLY模式式下继续同步数据,备库可

以提供报表查询,读写分离等场景; 2、 Snapshot Standby

Database,允许 DG备库以 READ WRITE模式打开,打开前创建一个

闪回点,为数据变更、数据测试、升级测试等提供非常便捷的环境,

待使用完成后将数据库闪回并切回 Physical Standby 角色。 再举例

12c ” 新增了 Oracle Active Data Guard Far Sync”特性,是利用一个轻量

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 7: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

级数据库实例专门用于接收主库的日志并传输给备库,可实现数据

零丢失并减少主库日志传输的压力。

一 .3 Data Guard的简要安装说明

本文不着重讲解如何搭建一个 Data Guard环境,具体的实现方

法请翻阅《Data Guard Concepts and Administration》一书或通过其他

途径查找资料。但可以提醒各位记者搭建过种中的重点步骤和需要

特别注意的配置:

主库需要开启归档和 force logging模式;

主 备 库 的 参 数 文 件 中 , db_name 必 须 一 致 , 但

db_unique_name必须不同;

主备库的数据文件路径最好保持一致,这样能减少配置复杂

度,如果主备库的数据文件路径不一致,需要配置

DB_FILE_NAME_CONVERT和 LOG_FILE_NAME_CONVERT;

备库的控制文件需要特殊处理,无法直接使用主库全量备份

的控制文件,需要在主库上创建 standby controlfile供其使用;

主备库的密码(口令)文件需要一致,以 Linux环境为便,

密 码 文 件 的 格 式 为

$ORACLE_HOME/dbs/orapw$ORACLE_SID;

主库与所有备库都需要相互通信,通信工作专门的进程来完

成。监控主库日志切换和传输的成功与否,可查询

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 8: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

V$ARCHIVE_DEST_STAT.ERROR,有传输错误该字段会有显示,

可供错误排查使用;

通过 RMAN设置主库库的归档日志的自动删除规则,减少人

工维护成本。

一 .4 Data Guard实现应用的读写分离

对读多写少的应用场景,读写分离技术(真实的读写分离场景

中还会结合另一些缓存技术,常见的如 Redis、MemCache。)能很

大程度上改善系统性能,但读写分离只能减轻主库的读压力,并不

能减轻主库的写压力。因此如果是写多读多的应用场景,仅部署读

写分离是不够的,还需要利用诸如 OGG技术搭建多主多从的环境或

数据分片(sharding)或将特定数据采用 NoSQL技术来解决,这些超过

本文的范畴了,就不在此赘述了,如果也有对这方面感兴趣的读者

欢迎一起做交流和学习。

通常生产环境中,除非对数据同步的一致性有高度要求的以外,

我们建议使用最大可用或最大性能模式进行数据同步,因为最大数

据保护模式,如果备库同步失败,主库也无法对外提供服务,因此

需要谨慎使用。同时需要注意的一点是,最大可用或最大性能模式

都天然地需要面对数据延迟的问题,尤其主库的增删改特别频繁

时,产生大量日志,那么备库数据延可能更加严重,因此应用需要

提前做好相应数据延迟的时效的性配置,延迟时间小于多少某值,

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 9: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

读操作分配给备库减轻主库压力;延迟时间大于某值,读操作需要

指定回主库。另外考虑到一点,备库有多个 RFS进程并同时接收日

志文件,但应用日志是进程MRP只有一个!综上所述读写分离场景

中有以下几点需注意:

1) 主备为之前要有足够的带宽,一主多从的场景将占用大量带

宽,数据延迟加大。最好提前做足够全面的压力测试,掌握

相关的性能数据,如数据库每秒产生的日志量、服务器网卡

流量、交换机流量、备库数据滞后的监控,这些数值可提供

于带宽大小的决策!

2) 主库备的服务器配置不能相差太多,如果备库硬件配置太差,

很有可能造成数据延迟达大,导致主库压力增大,系统的整

体性能受影响。因此建议主、备库的服务器配置保持一致,

因为备库不仅要求同步数据,而且还承当前容灾的角色,万

一主备库需要切换,备库不一定能承载着生产的请求压力。

3) 要主备库之前数据延迟进行监控,超过一定的时间就需要尽

早报警,让管理员尽早处理。

一 .5 Data Guard主备延迟监控及告警

读写分离的场景中,备库是为了减轻主库的读操作压力。那么

如果备库损坏或发生数据同步中断,必将导致主库的压力增大。 因

此,主备库之间的数据同步状态和延迟监控很有必要,当发生备库

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 10: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

同步异常,需要第一时间发出告警让 DBA及时处理恢复使用。监控

工具有很多,商业软件如 IBM Tivoli,开源工具如 Zabbix。告警一般

采用邮件形式,紧急严重类的以电话形式通知告警。

有很多方法都可用于备库的运行状态和数据同步状态的:

1、 从数据库 alert日志里清晰可见接收了哪些日志,应用

了哪些日志,有哪些 log gap缺口,遇到哪些错误;

2、 “ ”写个计划任务定时往主库的表插入 当前 时间戳,备

库根据该表的最大时间戳与备库的 sysdate相比较,也

可定位出延迟情况;

3、 用于数据库自带的 V$DATA GUARD_STAGE视图做监控,

但该视图有时候并不十分准确,在某些极端环境下不

能真实地体现主库延迟情况,该视图的定位请参考:

使用的 SQL如下:

select NVL(SUM(TO_NUMBER(SUBSTR(VALUE, 11, 2)) + \

TO_NUMBER(SUBSTR(VALUE, 8, 2)) * 60 + \

TO_NUMBER(SUBSTR(VALUE, 5, 2)) * 60 * 60 + \

TO_NUMBER(SUBSTR(VALUE, 2, 2)) * 24 * 60 * 60), \

0) \

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 11: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

FROM V$DATA GUARD_STATS \

WHERE NAME = 'apply lag' \

以上,将得出备库滞后主库的时间(单位为秒)

4、 强烈建议使用该方法,新建一个函数专门查询备库的

SCN并转换成时间戳,该时间戳即为备库的最后应用

时间,最后该时间戳与库备的 sysdate做比较即可计算

出延迟情况。

示例如下:

以上,创建一个函数,用于获取当前备库的 SCN且返

回其代表的时间戳。

以上,备库调用函数获取时间戳并和备库当前时间戳。

在我们的示例中,备库滞后主库 89秒,例如我们事先设置主备

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 12: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

库最大延迟时间的预警值为 120s,那么此时不用告警,一旦超过

120s预警就触发报警条件,自动给 DBA发邮件或打电话。

一 .6 Data Guard记录常见问题及处理方

常见问题: Data Guard最常的问题就是备库磁盘空间满,导致主

备库数据同步中断。

解决思路: 定位备库的 log gap日志序列号,如果主库有,手工传

输至备库并注册至控制文件即可;如果主库磁盘、备份集均找不到

该日志该怎么办?则获取备库控制文件的 SCN,并在主库完成基于

该 SCN的增量备份,备库应用该增备份即可后重新打开数据同步功

能即可。如果获取到的 SCN已经非常久远,也可以直接重配 DG,毕

竟有的主库没开启块跟踪功能,导致增量备份耗时比全量备份更长,

做增量备份的成本更大。

防护措施: 强烈建议主备库都设置足够大的空间用于存放归档日志,

保存尽可能多的归档日志。并通过 RMAN设置主库库的归档日志的

自动删除,避免相同问题的再次发生。

一 .7 总结汇总

经过以上的阐述应该对 Oracle Data Guard技术有大致的了解了,

Oracle Data Guard 使用说明 时间 2016 作者 robo

Page 13: Oracle Data Guard 使用说明 - 网站访问报错 Data Guard使用说明 时间 2016 作者 robo 目录 1.1 编写目的 4 1.2 Data Guard概要说明 4 1.3 Data Guard的简要安装说明

Oracle Data Guard 使用说明 时间 2016 作者 robo

因其稳定、高效、简单而被广泛使用于各大生产系统中,真实的使

用过程中最常见的是由于网络中断导致同步异常或备库磁盘空间满

导致同步中断问题,使用过程中应做好监控工作,发生异常时可通

过告警系统发出报警,同时通过 RMAN来自动化维护删除归档日志

文件,这样看来 DG的维护成本就很低了。

技术无边,有不足之处还请大家能多补充指点。

Oracle Data Guard 使用说明 时间 2016 作者 robo