本文主要是介绍【云原生进阶之数据库技术】第二章-Oracle-使用-3.3.1-Oracle Data Guard综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 Oracle DG简介
1.1 Oracle DG综述
Oracle DG,即Oracle Data Guard,是一种数据库容灾和数据保护解决方案,旨在提供高可用性和灾难恢复能力。它通过在主数据库和备用数据库之间实时复制数据来实现这一点。Data Guard的核心功能在于它能够保持主节点和备用节点之间的数据一致性,即使发生故障也能保证业务的连续性。
Oracle Data Guard是Oracle MAA(Maximum Availability Architecture)中的成员之一,也是MAA中技术要求最简单的方案之一。随着Oracle新功能的引入如Active Standby Database后,加速了Oracle Data Guard的普及。响应去I的趋势和X86架构的流行,对Oracle Data Guard的普及更起到了锦上添花的影响。
Oracle Data Guard在当下已经成为X86架构下核心数据库系统的标配,并且凭借技术要求低、成本低、数据的一致性强、实时功能、可查询等众多优点,逐渐在银行的两地三中心方案中替代基于存储复制的技术,成为目前银行、金融、电信行业的首选数据库容灾解决方案。
Data Guard的工作原理主要基于日志同步。当用户在主数据库上进行操作时,这些操作会记录在重做日志中。随后,这些日志会被传输到备用数据库,并在那里应用,以确保两个数据库的数据保持一致。这种机制使得Data Guard可以在不影响主数据库性能的情况下,实现数据的同步。
Data Guard有两种主要的实现方式:物理备用和逻辑备用。物理备用数据库是主数据库的物理备份,它会接收并应用重做日志来更新数据。而逻辑备用数据库则不同,它会在备用数据库上执行查询,并将结果集返回给用户,适用于报告和数据分析等场景。
使用Data Guard的优点包括无需额外购买硬件或软件组件即可实现数据保护,以及在主数据库出现故障时能够快速切换到备用数据库,最小化业务中断时间。此外,DBA还可以通过将某些操作分流至备库执行来减轻主库的压力,有助于构建高可用性的企业数据库应用环境。
综上所述,Oracle Data Guard为企业和组织提供了可靠的数据保护和灾难恢复解决方案,有助于确保关键业务数据的持续可用性和完整性。
1.2 STANDBY DATABASE的前世今生
1.2.1 前世(Standby Database)
- 1996年 7i
1996年Oracle发布了7.3版本,其中推出了一个具有跨时代的功能:Standby Database,此时Standby Database(备库)可以看成是主库的一个基于文件的备份。主库与备库的同步只能依赖于归档日志,而归档日志依赖于第三方工具从主库传输到备库。在备库mount状态下手动RECOVER命令来应用归档日志(RECOVER [FROM ’location’] STANDBY DATABASE)。备库只能启动到MOUNT阶段,备库端可通过激活命令将数据库从备库状态转为主库状态。
其部署非常简单,主库不需要做任何参数修改。
备库由DB_FILE_STANDBY_NAME_CONVERT和LOG_FILE_STANDBY_NAME_CONVERT参数来支持数据文件和日志文件路径名的自动转换。
备库变成主库的唯一方式就是FAILOVER。
- 1998年 8i
1998年Oracle发布了8.1.5版本,Standby Database在这个版本中得到了质的飞越,Standby Database的运维变得更加简单,Standby Database不仅仅有容灾功能,同时还引入了只读功能,使得原来在主库环境中消耗大量资源的报表业务可以移植到备库端运行。
在Manual Recovery Mode的基础上引入了Managed Recovery Mode(备库在收到归档日志后自动的进行RECOVER操作,同时引入了RECOVER MANAGED STANDBY DATABASE命令)、Read-Only Mode(可以将备库启动只读模式,可以查询数据,可以往临时表空间中写入数据,可以在任一时刻切回到manual recovery mode或者是managed recovery mode)。最大同时支持4个Managed Recovery Mode的Standby Database,Manual Recovery Mode的Standby Database理论不受限制。
在Managed Recovery Mode下备用数据库的归档日志存放在参数STANDBY_ARCHIVE_DEST指定的目录中,DB_FILE_NAME_CONVERT替换DB_FILE_STANDBY_NAME_CONVERT参数,LOG_FILE_NAME_CONVERT替换LOG_FILE_STANDBY_NAME_CONVERT参数。
同时,Oracle推出“Standby Database Concepts and Administration”专门的文档。
1.2.2 今生(Data Guard)
- 2001年 9i
2001年Oracle发布了9i版本,此版本中Standby Database的功能继续得到增强,并引入了自动管理工具(broker)等等新功能,让Standby Database迎来了脱胎换骨的感觉。Standby Database改名为Data Guard。
- 自动监控和管理(broker)使得Data guard管理变得更为简单。
- 引入切换 功能,在之前的版本中只有FAILOVER。
- 引入FAL(Fetch archive log)功能来自动解决GAP的归档日志。当备库发现缺失归档日志后,会根据FAL参数配置,主动去抓取归档日志。
- 引入STANDBY LOG FILE功能,实现了日志的实时传输,同时可以实现NO DATA LOSS。最大保护和最大可用模式必须要求standby log file存在。官方文档要求standby log file必须和源库大小一致。关于归档日志组的个数参考官方的2句话“The minimum configuration should have one more standby redo log group than the primary database.During testing, the easiest way to determine if the current standby log configuration is satisfactory is to examine the contents of the RFS process trace file and the database alert log. If messages indicate that the RFS process frequently has to wait for a group because archiving did not complete, add more standby log groups.”
- 将Managed Recovery Mode模式的备库增加到10个。
- 在原来3种备库模式上,引入Delayed Mode。延迟指延迟运用而非延迟传输。
- 引入FAL_CLIENT,FAL_SERVER, REMOTE_ARCHIVE_ENABLE,STANDBY_FILE_MANAGEMENT,ARCHIVE_LAG_TARGET等新的参数。
- 引入standby_file_management参数,实现备库库端数据文件自动添加工作。
- 多个视图增加列、新增加多个视图用于Data guard的管理(如V$DATAGUARD_STATUS)
- 引入Logical standby database
- 引入数据库保护的3种模式,最大保护、最大可用、最大性能。
- 引入级联的日志路径。
- 在physical standby databases中启用并行恢复。
- ARCn进程支持对standby redo log的备份。
- 日志传输的多个属性增加如(ARCH | LGWR [NO]AFFIRM [NO]ALTERNATE [NO]DELAY [NO]DEPENDENCY [NO]MAX_FAILURE [NO]QUOTA_SIZE [NO]QUOTA_USED [NO]REGISTER | REGISTER [=location_format] NOREOPEN SYNC | ASYNC)
- 支持自定义日志传输进程(ARCH|LGWR),默认为ARCH,
- 支持自定义网络传输模式(SYNC|ASYNC),默认为ASYNC。
- 2003年 10g
2003年Oracle发布了10G版本,此版本在9i中奠定Data guard的功能的基础上,主攻完善Data guard的管理功能。
- 引入Fast-start failover,优化原先手动failover时需要执行大量的命令。
- Data Guard环境中支持flashback database功能的使用,包括在Data Guard切换过程时和备库端运行时。大大减少主备库FAILOVER时主库重建的次数,也可以利用备库端flashback来随时还原误操作丢失的数据。
- 异步日志传输模式的优化,引入LNSn(local network server)进程来分担lgwr异常传输日志的功能,减少lgwr的负担,减少日志传输对主库性能的影响。
- 优化ARCH模式下日志传输速度,引入MAX_CONNECTIONS参数,指定多个ARCn进程来传输日志。
- 优化备库转为报表数据库,备库可以临时激活成读写的数据库供报表业务运行,在报表业务运行过程中,主库的归档日志也会同步到备库端。报表运行完成后,可能通过flashback database功能将数据库闪回到备库模式,自动的与主库同步。
- 数据库到open模式时tempfile文件的自动重建,前提是tempfile路径已经存在或者是FRA路径已经配置。
- 2007年 11g
2007年Oracle发布了11G版本,此版本让Data guard实现真正的腾飞,让Data Guard从原来作为“不出问题就想不起的功能”变成了可以为业务产生价值的功能,这所有的变换都是由于11G中引入了Active Standby Database。
- 日志传输引用压缩功能,大大提供日志传输效率,减少了日志传输延迟。
- 增强日志传输认证功能,引入了SSL功能。
- 简化Data Guard的管理。
- 物理备库数据库支持滚动升级。
- 支持异构的备库模式(需要具有相同的endine)
- 不再支持ARCH日志传输模式。
- 支持active standby database,备库可以从原来的mount阶段启动到open read only阶段,并且可以对外提供读服务。此功能是真正让Dataguard实现腾飞、大规模使用的功能,让原来一直处于备用状态的数据库和硬件资源终于可以为业务服务。
- 引用snapshot standby。
- 可以利用备库来发现写丢失。
- 增强RMAN在Data Guard的功能,支持在备库端对数据库进行备份,也支持duplicate从主库传输数据文件到备库来搭建备份环境,不再仅依赖于rman的历史备份文件。
- 支持30个备库
- FAL_CLIENT初始化参数不再需要。
- 支持主库在mount状态flush redo,将未传输到备库的日志传输到备库。
- FRA默认归档路径从LOG_ARCHIVE_DEST_10改到LOG_ARCHIVE_DEST_1。
- 在ADG下引入STANDBY_MAX_DATA_DELAY参数,最大应用延迟。
- 在ADG下主库或者备库的坏块可以利用未损坏的块来自动修复。
- 异构平台搭建DG得到进一步增强。
- 2013年 12c
2013年6月Oracle发布了12C的版本,12C的版本也是12.2最后的一个版本,如果在12C版本中选择安装哪一个版本,建议直接安装12C的版本。12C的发布可以看见Oracle引入了很多开源产品类似的功能,如sharing。在12C的版本中,Data Guard没有引入太多本质的新功能,还是在之前的版本基础上讲Data Guard与12C的新功能整合,使报表业务在Data Guard环境运行变得更简单、更容易。
- 12.1
- 增加sysdg组,专门用于Data Guard的管理。
- 实时级联备库(real-time cascade database)
- 引入far sync实例,专门用于中转日志。
- 最大可用模式下,支持LOG_ARCHIVE_DEST_n的SYNC和NOAFFIRM两个属性一起使用,减少在最大可用模式下,对主库的性能影响。
- 支持在备库端在线的移动数据文件,也支持在主库上在线移动数据文件,备库库不受任何的影响。
- GDS支持Data Guard平台。
- 在ADG模式下,支持对临时表的DML操作
- 在ADG模式下,支持序列的使用
- 在RAC下切换DG,不再需要关闭其它实例,只保留一个实例用于DG切换,可以使用新命令,ALTER DATABASE SWITCHOVER TO STANDBY;
- Oracle Data Guard切换到物理备用数据库时支持应用程序连续性。 它还支持在最大可用性数据保护模式下快速启动故障转移到物理备用数据库。
- 12.2
- 多实例日志应用(Multi-Instance Redo Apply)
- Oracle Active Data Guard(ADG)环境中的备用数据库支持Oracle Database In-Memory列存储(IM列存储)
- Oracle Active Data Guard is integrated with Oracle Sharding
- 可以在RMAN DUPLICATE命令上使用新的FAR SYNC选项来创建Oracle Data Guard far sync实例
- Oracle Diagnostic Pack与Oracle Active Data Guard集成。
- 主库上完成的密码文件更改将自动传播到备用数据库。 唯一的例外是far sync实例
- 引入STANDBY_DB_PRESERVE_STATES参数,用于物理备用数据库转换为主数据库后,是否在切换/故障转移期间将所有会话保持与备用数据库的连接。
- 可以在Oracle Data Guard环境中对新表空间和现有表空间以及现有数据库进行加密和解密。
- 引入DATA_GUARD_SYNC_LATENCY参数,能够定义在至少一个同步备用数据库确认已收到重做日志之后,主数据库在断开后续目标之前可能等待的最长时间(以秒为单位)。
- 可以使用新的PL/SQL过程检测丢失的写操作以及主数据库和物理备用数据库之间的不一致。
- 引入ENABLED_PDBS_ON_STANDBY参数,使能够指定PDB的子集,以便在CDB的物理备用数据库上进行复制。
- 18c
- 备库多实例日志应用支持BCT文件,也支持In-Memory列
- RMAN通过网络的方式刷新备库(RECOVER STANDBY DATABASE FROM SERVICE service_name)
- ADG环境中,支持全局临时表的创建。
- VDATAGUARDPROCESS替换VMANAGED_STANDBY视图。
- 数据库nologging扩展了两种新模式:Standby Nologging for Load Performance and Standby Nologging for Data Availability.
- 在ADG环境中,支持本地临时表空间的使用。
- 19C
- ADG环境中备库支持DML语句,会自动转到主库环境执行。
- ADG环境中,无效对象执行时会自动的编译。
- 备库在mount状态时,当主库使用闪回数据库时,备库会随着一起闪回。
- 主库闪回点的信息,自动同步到备库环境。
1.3 DG优缺点
每个技术都有其优缺点,下面来看看DG有哪些优缺点。
DG的优点主要有以下几点内容:
① 灾难恢复及高可用性。
② 全面的数据保护。
③ 有效利用系统资源。
④ 在高可用及高性能之间更加灵活的平衡机制。
⑤ 故障自动检查及解决方案。
⑥ 集中的、易用的管理模式。
⑦ 自动化的角色转换。
DG的缺点主要有以下几点内容:
① 由于传输整个日志文件,所以,需要较高的网络传输带宽。
② 在Oracle 11g之前的物理备库虽然可以以只读方式打开,然后执行查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,那么将延长切换的时间。从Oracle 11g开始,ADG可以在数据库打开的情况下应用日志,这极大地提高了DG的应用范围。
③ 逻辑备库不能支持某些特定的数据对象和数据类型。
④ 不支持双向复制,所以,无法应用于信息集成的场合。
⑤ 只能复制整个数据库,不能选择某个SCHEMA或表空间或表进行单独复制。
⑥ 不支持异构的系统环境,需要相同的操作系统版本和数据库版本(Oracle 11g支持部分异构平台)。
1.4 DataGuard分类
DG分为物理DG、逻辑DG。
物理DG(生产环境使用多):
- 物理DG应用的是主库的归档日志,物理DG无论从逻辑结构和物理结构都是和主库保持一致;
- 通过块拷贝方式同步,使用数据库recovery恢复功能来应用主库的更改;
- 通过接收并应用主库的 redo log 以介质恢复的方式(Redo Apply)实现同步
逻辑DG:
- 逻辑DG应用的是主库归档日志中提取的SQL语句,逻辑DG则只需保证逻辑结构一致;
- 通过接收 primary数据库的 redo log并转换成 sql语句,然后在 standby 数据库上执行 SQL 语句(SQL Apply)实现同步
参考链接
Oracle ADG 与 DG 的区别-CSDN博客
Oracle高可用解决方案:RAC、DG和OGG简介_oracle dg-CSDN博客
ORACLE DG的三种同步机制 - 知乎
Oracle DG系列:STANDBY DATABASE的前世今生-腾讯云开发者社区-腾讯云
在Oracle中,什么是DG?DG有哪些优缺点? - 墨天轮
Oracle 11g DG概念与进程详解_dg进程-CSDN博客
Oracle DG介绍(物理无实例)_数据库技术_Linux公社-Linux系统门户网站
oracle DG 简介
oracle DG 原理_oracledg-CSDN博客
【DG】DataGuard架构和部分概念整理-腾讯云开发者社区-腾讯云
这篇关于【云原生进阶之数据库技术】第二章-Oracle-使用-3.3.1-Oracle Data Guard综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!