Oracle Active DataGuard
数据同步复制技术方案
1. 概述
Oracle Active Data Guard是Oracle 11g版本推出的新功能。该功能可以实现Oracle数据库读写分离。Active Data Guard从底层技术上实现了在日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),数据同步的效率更高、对硬件的资源要求更低。可以更大程度地发挥物理备用数据库的硬件资源的效能。
Active Data Guard用于维护 Oracle 数据库的单独、同步物理副本,从而实现 HA/DR。Active Data Guard支持高可用性(通过零数据丢失和/或自动故障切换)和灾难恢复。并且数据同步的效率更高、对硬件的资源要求更低。是一种有效可行的解决方案。
随着Oracle ADG的出现,Oracle在读写分离的支持上又得到进一步提升,可以在延迟很少的情况下提供读,而且不会出现复制错误或者数据不一致的问题。
Active Dataguard Reader Farm架构至少存在以下优势:
l 管理维护简单,DBA只要熟悉Dataguard的管理即可,无需再额外学习其他方面的新知识;
l Active Dataguard Reader Farm节点是灵活可扩展的,可以在线添加或者删除节点,并且可以线性扩展而不对生产系统造成影响;
l 可以真正做到实时查询,不会应为大事务造成同步阻塞,性能有保障;
l 没有数据类型的限制;
l 高可用性,节点的宕机都不会影响到数据库的可用性。
2. Active Data Guard基本原理
Oracle Active Data Guard 系统架构如下:
Active Data Guard 的同步是通过standby数据库对主数据库文件的不断copy,不断应用主库传输过来的redo重做日志来保持和主库的物理结构一致。standby数据库分为物理standby和逻辑standby。主备库之间走的是SSL协议,SSL使用RSA公钥密码和对称密钥加密,提供身份验证、加密和数据完整性。 Active Data Guard从底层技术上实现了在日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作。
Oracle Active Data Guard 包括一个生产数据库,也称为主数据库,以及一个或多个备用数据库,这些备用数据库是与主数据库在事务上一致的副本。Data Guard 利用重做数据保持这种事务一致性。当主数据库中发生事务时,则生成重做数据并将其写入本地重做日志文件中。通过 Oracle Active Data Guard,还将重做数据传输到备用站点上,并应用到备用数据库中,从而使备用数据库与主数据库保持同步。Oracle Active Data Guard 允许管理员选择将重做数据同步还是异步地发送到备用站点上。
备用数据库的底层技术是 Oracle Active Data Guard 重做应用(物理备用数据库)。物理备用数据库在磁盘上拥有和主数据库逐块相同的数据库结构,并且使用 Oracle 介质恢复进行更新。
3. Active Data Guard软硬件需求
3.1. 硬件及操作系统需求
系统平台 | 硬件配置 | 操作系统 | 存储异构
| |
primary 数据库 VS standby 数据库 | 同一个Data Gurid 配置中的所有oracle 数据库必须运行于相同的平台。比如inter 架构下的32 位linux 系统可以与inter 架构下的32 位linux 系统组成一组Data Guard。64 位HP-UX 也可以与32 位HP-UX 组成一组Data Guard | 不同服务器的硬件配置可以不同,比如cpu ,内存,存储设备,但是必须确保standby 数据库服务器有足够的磁盘空间用来接收及应用redo 数据 | 必须一致,不过操作系统版本可以略有差异,比如(linux as4&linux as5),primary 数据库和standby 数据库的目录路径可以不同 | 支持 |
3.2. 软件需求
l Active Data Guard作为Oracle 企业版一个特性功能,标准版不支持。而且作为Oracle软件的单独组件(类似Oracle Rac组件),需要单独收取费用。
l 同一个Data Guard 配置中所有数据库初始化参数:COMPATIBLE 的值必须相同。
l Primary 数据库必须运行于归档模式,并且务必确保在primary 数据库上打开FORCE LOGGING,以避免用户通过nologging 等方式避免写redo 造成对应的操作无法传输到standby 数据库。
l Primary 和standby 数据库均可应用于单实例或RAC架构下,并且同一个data guard 配置可以混合使用逻辑standby 和物理standby。
l Primary 和standby 数据库可以在同一台服务器,但需要注意各自的数据文件存放目录,避免重写或覆盖。
l 使用具有sysdba系统权限的用户管理primary和standby 数据库。
l 建议数据库必须采用相同的存储架构。比如存储采用ASM/OMF 的话,那不分primarty 或是standby也都需要采用ASM/OMF。
l 各服务器的时间设置,时区/时间设置需一致。
4. Active Data Guard工作模式
Oracle Active Data Guard 有MAX PERFORMANCE,MAX AVAILABILITY, MAX PROTECTION三种数据保护模式:
模式 | 数据丢失风险 | 传输 | 如果备用数据库未提交任何确认 |
最高保护 |
零数据丢失 双重故障保护 |
同步 | 仅当从备用数据库收到已将事务的重做硬化到磁盘的确认后,才向应用程序发送提交成功信号。 |
最高可用性 |
零数据丢失 单重故障保护 | 同步 快速同步 远程同步 | 仅当收到备用数据库的确认后,或超出阈值期限后,才向应用程序发送提交成功信号,两者取其先 |
最高 性能 |
可能有极小的数据丢失风险 |
异步 | 主数据库从不等待备用数据库的确认,而是直接向应用程序发送提交成功信号。 |
Oracle Active Data Guard支持多种物理架构模式,Primary 和standby 数据库均可应用于单实例或RAC架构下。目前采用较多的物理架构模式有如下两种:
主机数据库(RAC)+备机数据库(DG单机)+同磁盘阵列:
主机数据库(RAC)+备机数据库(RAC)+同磁盘阵列:
对比以上两种方案,备机部署为RAC双机方式为备机查询应用提供更好的高可用性(比如负载均衡和应用透明切块),但同时也增加日常维护的复杂程度。如果考虑能够持续稳定地向外围系统提供数据查询服务,推荐使用主备机数据库均为RAC的模式。
6. 方案特点
6.1. 高性能、高可靠性
本方案采用本地备份与远程复制相结合,最大限度的保证业务数据的安全性。结合对操作系统级和数据库级的性能优化,消除系统瓶颈,使硬件资源得到最大限度的利用。
6.2. 方便灵活
在系统中,备份数据中心的数据库系统可以切换到打开状态,不同于冷容灾模式下容灾站点的数据库系统在进行数据复制是不可用的情况。因此,备份数据中心可以通过为其它系统提供数据共享服务。如通过备份数据中心为综合查询系统提供快速的数据抽取功能,并且实现数据的抽取与生产系统完全隔离,减少对生产系统的影响。
6.3. 高效率、低负载
数据复制引擎使用基于Log的复制,复制操作集中于对数据的改变,因此将对源数据库系统、源操作系统和网络的影响最小化。数据复制引擎效率很高,同时保证了复制数据的精确性。在源数据库一端,数据复制引擎严格地遵守读一致性模式。在目标数据库一端,数据复制引擎使用 Oracle内部交易格式提交事务,在容灾端的交易执行速度远远高于标准SQL语句执行速度。同时系统保证操作次序和会话上下文的一致。
6.4. 全面 --- 数据类型、DML和DDL复制
系统支持Oracle所有的数据类型、DML和DDL复制。在复制时,系统可选择性地在用户级、对象级、命令级排除(exclude)不需要复制的内容。