利用GoldenGate实现灾备
2018-11-09
GoldenGate工作原理
传统的数据库级数据备份在遇到灾难性恢复时,往往会造成数据的丢失。想要实现实时的数据备份需要花费较大的硬件成本。
GoldenGate数据复制,可以实现在不引进其他多种类软硬件产品的同时满足数据的实时备份,确保数据中心的数据安全,从而降低运维的复杂度和资本的投入。
在主系统出现故障时,灾备系统可迅速恢复和切换,可以最大限度的降低数据的丢失。
GoldenGate采用的工作原理为数据复制。它分单向数据复制和双项复制模式。
图1 单项数据复制
图2 双项数据复制
单向数据复制:利用Capture进程在源端读取Log,确定需要进行的操作(增、删、改),并通过Capture队列将相关操作指令传送到目标端。目标端的Deliver进程用于接受相关内容,通过Replicate进程创建同步所需的SQL语句,并在目标端执行,如图1所示。
双向数据复制:源端和目标端为Capture进程和Deliver进程,两端互为源/目的数据复制对象,如图2所示。
在配置双向数据复制时,需要通过命令行向两边的数据库中加入跟踪表。当Capture进程读到一个交易中有针对跟踪表的更新,Capture进程就知道这个交易是由复制进程产生的并且把这笔交易忽略掉。
如果没有针对跟踪表的更新,Capture进程就知道这个交易是由应用程序产生的并且把这笔交易读取出来。
GoldenGate的优点
GoldenGate四大优点:
1.实时性:源数据端的新请求或事务,目标端会马上捕获并转换,在极短的时间内传递给目标数据库,完成数据的同步。
2.持续可用性:
GoldenGate的运行即使遇到计划或非计划的服务中断,也不影响系统的可用性,在服务恢复正常时,数据同步会继续进行。
3.多元化:GoldenGate不仅支持Oracle数据库,还支持目前的各类主流数据库、主流平台等,使平台更加的灵活。
支持的操作系统包括Windows、Linux、Unix、AIX等。支持的Oracle、DB2、MS SQL Server、MySQL、Sybase、其他ODBC兼容数据库等。
4.高性能,低影响:Gold
enGate能够支持每秒数千的事务处理,同时对源系统和目标系统的性能影响极小。
GoldenGate关键进程介绍
Manager进 程: 是GoldenGate的控制进程,运行在源端和目标端,用于启动、监控、重启GoldenGate其他进程,报告错误等。
Extract进程:运行在源端,负责从源数据库表或者日志中捕获数据库。所有提交的事务相关的日志会被以事务为单元顺序记录到Trail文件,Extract进程也有其内部的Checkpoint机制,周记性记录读写位置。
Checkpoint机制是为了在Extract进程崩溃后重新启动Extract进程后,GoldenGate可以恢复到之前Checkpoint状态,从而从这个点继续运行。Extract是通过上面的Trail文件和Checkpoint来保证数据的完整性。
Pump进程:Pump进程运行在数据库源端,主要是在将源端产生的本地Trail文件,然后把Trail以数据块形式通过TCP/IP发送到目标端。如果不使用Trail文件,Extract进程会抽取完数据以后,直接投递到目标端,生成远程Trail文件。
Trail文件:Extract抽取完数据后会将对应的事务信息转化为GoldenGate专有格式文件Trail,Trail文件主要是为了防止单点故障,事务信息持久化,并且使用Checkpoint机制记录其读写位置,如果故障发生,则数据可以根据Checkpoint记录的位置来重传。
Server collector进程:Server collector 进 程主要是把Extract或Pump进程投递过来的数据组装成远程的Trail文件,Server collector不需要我们对其进程任何配置。
Replicat进程:Replicat进程运行在目标端,主要是通过读取目标端的Trail文件内容然后将其解析为对应的dml和ddl语句,最后应用到目标数据库中。
Replicat进程也有其内部的Checkpoint机制,保证重启后可以从上次记录的位置开始恢复从而保证数据一致性和安全性。
GoldenGate应用案例及场景
1.查询业务分离:遇到大型数据库应用时,我们经常遇到由于较大数据量的查询业务,导致资源消耗较多,应用较慢。
利用GoldenGate单向复制技术,我们可以建立一套完整的实时查询系统,实现查询业务的分离,减少查询对业务系统的影响。
2.容灾备份:GoldenGate的数据复制,实现了生产系统的业务操作实时传递到备份系统中,有了生产数据的实时复制,可以保证应用系统7*24小时不间断运行。
当生产环境出现紧急事件或要进行例行维护时,可将应用切换到复制数据库中。例行维护结束时,可将备份系统的数据复制回生产系统中,确保生产系统数据的完整性。
3.负载均衡:通过GoldenGate一对多的复制,可复制多个版本的数据源,可将不同的用户分配到不同的数据源,从而实现数据库的负载均衡。
4.异地备份和区域数据同步:GoldenGate通过LAN或WAN进行实时复制,将生产数据库中的数据拷贝到需要的地方,也可在远程数据库间进行复制。
使用中的注意事项
双向复制中,最主要的问题是需要防止数据的循环应用和防止数据发生冲突。
在GoldenGate中,需要从两方面进行预防循环应用的问题:
(1)防止Extract进程抓取Replicat进程的SQL操作。
(2) 使 Extract进 程识别本地Replicat执行的DML事务,并进行忽略。Oracle 10G及以上的数据库需要在Extract进程加入 参 数 :TRANLOGOPTIONS EXCLUDEUSER
如果是Oracle 9i或之前的版本,需要配置tracetable。
对于数据冲突,由于是双向复制,那么当两端都对同一数据进行操作时,就会发生冲突。
比如,同时对某行数据进行修改,修改的操作将会被覆盖(视lag以及事务的先后);再比如两端插入或删除相同键值的数据。
对于这类数据冲突,最好是在业务应用层解决。比如,可以划分两端数据库应用的业务范围,一部分数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和on delete cascade约束。此外,也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进行区分。
总结:利用GoldenGate的数据复制原理,我们可以建立灵活的应用方案,如一对一复制、一对多复制、多对多复制、多对一复制、双向复制等。各种类型的复制可以实现不同业务场景的需求,我们要理解并掌握GoldenGate的数据复制原理,帮助我们建立起系统灾备的解决方案。