PDF下载
Goldengate在构建油田高可用数据库环境中的应用研究

蒋红龙 顾娟

大庆油田勘探开发研究院勘探开发数据研究室

摘要: 本文在对Oracle Goldengate克隆技术的研究基础上,简单介绍了Goldengate的工作原理和技术优势,结合大庆油田统建系统在实际应用中存在的性能问题,提出了基于Goldengate技术的Oracle数据库容灾及读写分离的高可用应用方案,通过Goldengate将生产主库数据实时同步到应用备库,主库完成数据采集汇总,备库提供查询和第三方开发访问服务,真正做到读写分离,负载均衡,在实际应用中取得良好效果。
关键词: Goldengate;负载均衡;读写分离;高可用;实时同步
DOI:10.12721/ccn.2022.157067
基金资助:
文章地址:

1、问题的提出

随着信息化技术的迅猛发展,油田数据中心的数据量快速增长,企业各级管理者和技术人员要求数据库要提供24小时不间断服务,对数据库的高可用性提出挑战。所谓高可用,就是尽量减少系统不能提供服务的时间。因此,传统单库服务模式应该是数据库系统高可用的最大风险,为了保证高可用,增加容灾冗余灾备库是最好的途径。在主库出现灾难时,冗余库可以接替服务,不至于整个系统瘫痪。在主备节点都正常的情况下,可以实现读写业务分离,做到负载均衡,避免单库模式的拥堵问题。

2、Oracle Goldengate

2.1 Goldengate概述

Oracle Goldengate是Oracle公司出品的能够在不同操作系统平台异构数据库系统之间实时同步复制数据的软件,它提供异构环境下大交易量数据的实时捕捉、变换、投递。可以灵活地在不同类型的数据库间实现数据的同步操作。它为任何企业提供了一个单一的能够实现秒级容灾备份的平台。

2.2 Goldengate工作原理

Goldengate主要是通过捕捉进程抽取源端的redo log 或者 archive log获取数据变化, 生成特有格式的trail队列文件,然后pump进程通过TCP/IP协议将trail文件投递到目标端,捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制;目标端通过replicate还原进程读取trail文件,生成对应的sql语句,并在目标端数据库执行,从而将数据还原到目标端数据库。

2.3 Goldengate的相关进程

2.3.1Manager进程

Manager进程是Goldengate的核心进程,不论源端还是目标端只能有一个Manager进程,它负责启动、关闭、监控其他进程的健康状态,报告错误事件、分配数据存储空间,发布阀值报告等。

2.3.2 Extract进程

Extract 进程运行在源端数据库,负责从源端日志中捕获数据的变化,然后将捕获到的变化写到本地trail文件。 它利用其内在的checkpoint机制,周期性的记录其读写的位置,实现断点同步。

2.3.3 Pump进程

Pump进程运行在源端数据库, 其作用是将源端产生的本地trail文件通过TCP/IP 协议发送到目标端。

2.3.3 Replicat进程

Replicat进程运行在目标数据库端 ,负责读取源端传送到目标端的trail文件中的内容,并将其解析为DML或DDL语句, 然后应用到目标数据库中。

2.4 Goldengate的优势

2.4.1 支持异构平台和跨操作系统的实时数据复制

Goldengate几乎支持目前行业里所有主流的操作系统和数据库系统,兼容性极强。

2.4.2 拓扑结构灵活

Goldengate支持一对一、一对多、多对一、多对多和双向复制等。

2.4.3 低延迟高性能的实时数据复制

Goldengate可以实现亚秒级的数据复制,几乎没有延迟,并且有自己的checkpoint机制,支持断点续传,不影响生产库的运行,日志捕获不依赖源数据库的触发器和规则,对源数据库性能影响非常小。

2.4.4 支持数据过滤和转换

Goldengate可以自定义基于表和行的过滤规则,可以对实时数据执行灵活影射和变换。

3、Goldengate在油田数据中心的应用

3.1 实施背景和体系架构

随着大数据时代的来临,油田数据中心的数据业务迅速发展,尤其是近年来中石油统建项目在各大油田相继推广实施,在上线初期,由于数据量较少,性能尚能满足要求,可是随着数据量的不断增加,加上建立在其上的应用服务系统越来越多,用户和数据访问量大幅增加,数据库负载越来越大,性能问题越来越突出,严重影响系统的正常运行。为了解决这一问题,我们新建了一个应用数据库,它包含所有历史数据。而生产库中只保留近一年的数据,满足新数据的采集和汇总上报业务,应用库即作为生产库的容灾备份,同时也为广大业务人员提供数据查询分析服务,主要以数据仓库OLAP模式提供服务,生产库新生成的数据通过Goldengate实时同步到应用库,不但实现了负载均衡和读写分离,还实现了双活服务。1.png图3.1  系统体系架构

3.2 技术特点

在实施过程中,我们在源端和目标端采用单向复制多进程并发模式,根据数据表的数据变化频度和其它业务特点,将数据表分成几组,每组创建一个extract进程、pump进程、replicate进程,这种多进程并发模式有两个优点,一是同步效率高;二是由于各进程相对独立,一组表中出现同步问题,不影响其它进程的数据同步,因此可以减轻运维的压力。2.png

图3.2 源端进程情况                                                                 图3.3 目标端进程情况

4、结论

Goldengate作为业内成熟的距容灾与复制产品,经过多年的发展和完善,已经成为业内的标准之一,在使用Goldengate之前,随着数据量和用户业务的激增,我们的生产库不堪重负,性能下降严重,在服务高峰期经常出现严重堵塞,用户无法访问数据库,严重影响系统运行。通过使用Goldengate克隆技术构建双活的数据库服务架构,日常查询统计分析工作都在备库上完成,大大减轻生产库压力。而且当生产主库出现问题时,也可快速切换到备库,缩短故障恢复时间,初步形成了高可用的数据库环境,为今后油田数据中心数据库实现更为复杂的容灾保护方案进行了大胆的探索和尝试。

参考文献

[1] 51CTO博客.Goldengate介绍.https://blog.51cto.com/lqding/1694724 2015-09-14

[2] 人人文库.Goldengate容灾解决方案.https://www.renrendoc.com/paper/87619309.html 2020-06-24 

作者简介:蒋红龙,男,1967年9月出生,2006年7月毕业于吉林大学计算数学专业,理学硕士,现就职于大庆油田勘探开发研究院数据研究室,高级工程师,从事数据库管理工作。