APP下载

Oracle?Data Guard与GoldenGate技术分析对比

2023-04-29魏万琼赵旭王亦然

信息系统工程 2023年1期
关键词:容灾快照可用性

魏万琼 赵旭 王亦然

摘要:随着财务系统数据库的使用时间增长,数据库中的数据量也会增加,数据量越大也意味着数据库备份与恢复所需要的成本就越高,不仅是备份所需时间越来越长,恢复数据所需时间也随之增长;当数据库发生意外而导致数据库中的数据不可修复的时候,容灾远比备份更能快速有效的恢复生产业务的数据;在实际的使用过程中,我们也可以把容灾当做是一个活动的备份来使用,主要介绍了Oracle Data Guard和GoldenGate。

关键词:Oracle Data Guard;GoldenGate;Redo Log;Archive Log;Standby Redo Log

一、前言

财务系统作为企业关键信息系统,财务数据的保护显得尤为重要。Data Guard和GoldenGate都是数据库的容灾工具,我们在做容灾工具选型时,使用哪一个容灾工具更好,就需要清楚Data Guard和GoldenGate的工作方式,从需求去思考选择哪一款容灾工具更适合业务架构。

二、日志文件

Oracle Data Guard和GoldenGate实现数据同步都与数据库的日志文件密不可分,因此要先了解Redo Log和Archive Log,明白他们是如何使数据同步的,才能做出合适的选择。

(一) Redo Log

Redo Log也称为重做日志或者联机重做日志,重做日志由两个或多个重做日志文件组成,这些文件存储了数据库运行期间的所有操作,记录了数据库更新信息,每个Oracle数据库实例都有一个正在处于使用中的重做日志,也是数据库数据恢复的关键,更能在数据库实例发生故障时保护数据。

(二) Archive Log

Archive Log也可以称为归档日志或者归档重做日志,官方解释是将已经写满的重做日志保存到一个或多个离线日志文件,统称为归档日志,相当于重做日志文件的一个离线备份。只有数据库处于归档模式下才会产生归档日志文件,归档日志的主要价值是数据库恢复[1]。

“图1 重做日志与归档日志实际参考”中显示了重做日志文件的SEQUENCE对应了当前已经归档的文件编号,v$log视图中SEQUENCE的9、10都已经归档并可以查看到,11代表着重做日志正在记录当前数据库所有更改操作。

“图2日志归档后的实际参考”,说明当一个重做日志已经被写满或者手动切换日志后,都会生产一个归档日志。

(三) Standby Redo Log

备用重做日志用于Data Guard中,备用重做日志相当于重做日志的一个在线备份,在Data Guard最高性能模式中推荐使用备用重做日志。官方建议,创建的备用重做日志组最好比重做日志组多一组,这样备份数据库始终有一个日志处于ACTIVE状态。

三、Data Guard

(一) Data Guard简介

Oracle Data Guard是当前Oracle数据库容灾最有效的解决方案,用于保护数据库的高可用性、数据保护和灾难恢复。提供了一整套服务,来用于创建、维护、管理和监控一个或多个备用数据库。它将这些备用数据库作为主数据库的副本进行维护,防止主数据库的数据损坏。如果主数据库不可用,它就可以将任何一个备用数据库切换为主数据库,最大限度地减少停机时间;Data Guard一旦创建便会自动维护每个备用数据库。

(二) Data Guard备用数据库的三种类型

1. 物理备用数据库

物理备用数据库(Physical standby database),提供物理结构上与主数据库相同的备用数据库,相当于主数据库的副本或者是一个主数据库的克隆,与主数据保持完全相同。物理备用数据库通过重做日志应用技术与主数据保持一致,重做日志应用技术将从主数据库接收到的重做日志数据应用到物理备用数据库中。

物理备用数据库在“READ ONLY”和“MOUNTED”状态时都接收和应用重做日志的数据。

2. 逻辑备用数据库

逻辑备用数据库(Logical standby database),与主数据库相同的逻辑数据信息。逻辑备库是通过 SQL的应用与主库保持同步,将从主库接收到的重做日志里的数据内容转换为SQL语句,然后在备用数据库上执行这些SQL语句[2]。

使用逻辑备用数据库,还可以接近于不停机的升级 Oracle 数据库。因此,逻辑备用数据库也可以同时用于数据保护和数据库升级。

3. 快照备用数据库

快照备用数据库(Snapshot Standby Database)是完全可以更新数据的备用数据库,也就是说快照备用数据库可对外提供读写功能。

快照备用数据库也可以正常从主数据库接收和归档重做日志数据。与物理或逻辑备用数据库不同的是,在关闭使用快照备用数据库所做的任何数据更新之前,是不会应用接收到的重做日志数据。直到快照备用数据库转换回物理备用数据库之后,才会应用接收到的重做日志数据[3]。

快照备用数据库适用于对主数据库有需求,但又不想在主数据库上发生任何更改的时候,将物理备用数据库转换为快照备用数据库后,可以临时将备用数据库当主数据使用。请注意,由于快照备用数据库接收到的重做数据在转换回物理备用之前不会应用,因此从主数据库故障中恢复所需的时间与需要应用的重做数据量成正比。

(三) Data Guard三种数据保护模式

1.最大可用性模式

在不会损害主数据库的可用性之下提供数据保护。事务提交后,等数据写入重做日志或归档日志,并将日志同步到至少一个备用数据库后才算完成工作。如果主数据库没有写入到至少一个备用数据库,这种情况就与最高性能模式一样来运行,从而保障主数据库的可用性,直到它再次将重做数据写入并同步的备用数据库才能以最大可用性模式运行[4]。

最大可用性模式可以确保数据的零丢失,除非主数据库和备用数据库同时出现故障。

2.最高性能模式

也是Data Guard默认保护模式。在不影响主数据库性能的情况下提供数据保护。只要主数据库的事务正常提交就代表事务已经完成。主数据库的重做日志数据也会被写入一个或多个备用数据库;它允许备用数据库与主数据库的数据写入有时间差,因此主数据库性能不会受到备用数据库的影响。

最高性能模式提供的数据保护低于最大可用性模式,如果主数据库的事务及相关数据没有发送到备库,这些事务数据可能会被丢失,不能保证数据的零损失。

3.最大保护模式

最大保护模式可以确保在主数据库发生故障时不会发生数据丢失。事务所需数据必须在事务提交之前同步到至少一个备用数据库上的在线重做日志和备用重做日志。为了确保不会发生数据丢失,如果主数据库没有将数据同步到至少一个备用数据库,主数据库将会自动关闭,不再继续处理事务。

最大保护模式虽然可以保证备用数据库零数据丢失,但是会影响主数据库的可用性。

(四) Data Guard的三种服务介绍

1.重做传输服务

控制重做日志数据从主数据库到一个或者多个备用数据库的自动传输,管理和解决因为网络故障导致归档重做日志文件中的任何间隙问题,自动检测备用数据库丢失或者损坏的归档重做日志文件,并自动从主数据库或者另一个备用数据库检索替换归档重做日志文件。

2.申请服务

申请重做备用数据库上的数据以保持与主数据库的事务同步。可以从归档的重做日志文件中应用重做数据,或者启用实时应用,直接从备用重做日志文件填充它们,而不需要先在备用数据库存档重做数据。

3.角色转换服务

通过数据库切换和故障转移来实现主备之间的角色转换,在主备之间角色切换后,确保数据没有丢失;角色转换一般用于主数据库的计划维护;故障转移只有在主数据库发生故障时才会执行故障转移,并且故障转移会后,备用数据库直接转换为主数据库。

四、GoldenGate

Oracle GoldenGate作为大多数用户的关键业务系统容灾、数据复制、数据同步的首选解决方案,被Oracle公司归到中间件产品中。

它提供了日志的双向数据复制,甚至将多个主数据库的数据都采集操同一个备用数据库,用作数据存储或者数据分析。可以满足零宕机时间数据库的升级和迁移,实现亚秒级近实时数据的同步。

GoldenGate的主要进程

1.Manager进程

控制进程,负责启动、监控和维护Extract、Pump、Replicate进程,创建事件、错误和阈值报告等。

2.Extract进程

Extract运行在主数据库,负责从主数据库的重做日志和归档日志文件中捕获DML或者DDL操作的数据;Extract将捕获的数据变化转换为一种GoldenGate专有格式的文件记录到Trail文件中,如果数据库某个事物并没有提交更改,而是执行了回滚操作,Extract在写入Trail文件之前将丢弃该事务的操作。

3.Pump进程

Pump进程运行在主数据库,负责将主数据库的追踪文件以数据块形式通过TCP/IP协议发送到备用数据库,一个备用数据库至少对应一个Pump进程。

Replicate进程

Replicate进程运行在备用数据库,负责读取Pump进程发送过来的追踪文件内容,并将追踪文件重构 DML 或 DDL 操作,然后应用到备用数据库中。

Extract和Replicate内部都有checkpoint机制,周期性检查记录读写位置,保证进程重启或者系统宕机后,GoldenGate能够恢复到以前状态,保障数据不会有损失[5]。

五、Data Guard与GoldenGate区别

(一)从数据同步上分析

GoldenGate是捕获重做日志或归档日志中的DML语句和DDL语句,然后再到备用数据库执行,来实现数据同步。这个就与Data Guard的逻辑备用数据库很相似,但是,在都使用Oracle产品的情况下会使用Data Guard的物理备用数据库。

Data Guard容灾主要是通过将整个重做日志或归档日志文件同步到物理备用数据库,去应用归档日志文件来实现数据同步,物理备用数据库可以实现和主数据库的完全一致。

GoldenGate有个需要注意的地方,如果要捕获DDL语句,就需要在主数据库建立一个Oracle全库级的Trigger来捕捉DDL操作到中间表,Extract去读取中间表的DDL语句,并与DML语句根据CSN排序,通过这个方式来实现DDL操作的同步。

作为灾备Data Guard的稳定性是高于GoldenGate的,如果只是实现容灾功能,首推Data Guard。

(二)从备用数据库对外服务上分析

GoldenGate的备用数据库处于OPEN WRITE状态,能够正常对业务系统和用户提供读写功能,但是要实现主备数据库数据一致,就需要GoldenGate的双向复制功能,主数据库和备用数据库双向同步数据,不然就无法保障容灾功能。

Data Guard的备用数据库处于MOUNTED或者OPEN WRITE状态下都能实现数据同步,但备用数据库只有在READ ONLY状态时,才能对外提供短时间的查询服务。

(三)从主备切换上分析

GoldenGate可以实现即时切换。

Data Guard的主备之间的角色切换。

当出现意外事故,主数据库不可恢复的情况下,GoldenGate接管时间小于Data Guard,甚至可以实现即时接管。

(四)从类型与版本选择上分析

GoldenGate可以在不同类型、不同版本之间进行数据库复制。

Data Guard仅运行在Oracle数据库中。

(五)从运维角度上分析

Data Guard维护简单,一旦配置完成后就很少出现问题。GoldenGate就需要使用它的命令方式来检查和维护,对管理人员也有更高的技术要求。

(六)从配置结构上分析

GoldenGate可以实现一主一备、一主多备、多主一备、主备之间的双向复制等多种结构。Data Guard可以实现一主对一备或者一主对多备的结构。

六、结语

现在数据库中存储的数据越来越多元化,数据可用范围也越来越广,无论是从商业价值还是研究价值,数据都很重要。那么数据的保护也就越来越重要,容灾是每个数据库都需要考虑的保护技术。

参考文献

[1]戴冠平.叱咤风云:GoldenGate企业级运维实战[M].清华大学出版社,2012.

[2]Database Online Documentation Library 11g Release 2 (11.2)之Data Guard Concepts and Administration

[3]Database Online Documentation Library 11g Release 2 (11.2)之Data Guard Broker

[4]Database Online Documentation Library 11g Release 2 (11.2)之Database Administrator's Guide

[5]GoldenGate Administering Oracle GoldenGate for Windows and UNIX

(作者单位:魏万琼、王亦然,中国石油勘探开发研究院西北分院计算机技术研究所、中国石油天然气集团有限公司物联网重点实验室; 赵旭,中国石油勘探开发研究院西北分院计划财务处)

猜你喜欢

容灾快照可用性
基于文献计量学的界面设计可用性中外对比研究
EMC存储快照功能分析
基于辐射传输模型的GOCI晨昏时段数据的可用性分析
关于建筑企业容灾备份系统方案的探讨
创建磁盘组备份快照
基于中兴软交换的电力通信网络容灾系统建设
基于数据容灾技术在企业信息系统中的应用研究
数据恢复的快照策略
空客A320模拟机FD1+2可用性的讨论
一张“快照”搞定人体安检