Oracle GoldenGate+DXP 技术实现关键业务系统容灾的解决方案*

2020-12-23 06:12宰旭昕许广文
通信技术 2020年10期
关键词:日志关键补偿

宰旭昕,康 凯,许广文

(公安部户政管理研究中心,北京 100070)

0 引言

为保证关键业务系统的安全平稳运行,确保各类一线业务正常办理及相关信息准确、安全,在北京两个数据中心建立安全有效的关键业务系统和相应的容灾备份系统。当部署关键业务的主机房发生重大故障导致业务无法办理、数据安全受到影响的情况下,备份环境可立即启用,保障业务的正常办理和数据的完整、准确与鲜活。

1 设计思路

1.1 备份环境

考虑到该关键业务系统的技术路线和应用的继承性,灾备系统采用同等架构的设计,数据结构相同,搭建为物理独立的灾备系统环境,保持原有数据抓取、传输、入库以及对账的数据维护机制,通过数据同步工具保证主备系统之间的数据同步,业务应用模式和新增需求开发模式不变。

1.2 数据初始化及同步

1.2.1 Oracle GoldenGate 技术

Oracle GoldenGate 简称OGG。OGG 是一款实时访问、捕捉日志变化数据且在异构平台之间进行数据传输的产品,主要用于同构、异构数据平台之间的数据同步[1]。

(1)Oracle GoldenGate 主要特点。第一,高性能。实时读取数据库日志,由特定程序在占用源数据库极少资源的情况下,实现大量数据快速实时复制,以实现多并发执行。第二,高可靠性。数据的同步以交易为单位,使数据同步保证一致性。第三,灵活性。支持一对一、一对多、多对一、多对多和双向复制等。如图1 所示,通过在跟踪文件(trail文件)中临时存储数据,OGG 将数据源和目标分离开来以提供异构支持。这种分离的架构支持每个模块(捕获、路由、转换和交付4 个模块)独立执行自己的任务,实现了高性能、高可靠和灵活性。第四,安全性。具有数据压缩和加密功能,减少对数据传输带宽的压力,同时大大提高了数据传输的安全性[2]。第五,断点传输。OGG 生成了一种新的文件格式trail 文件,而trail 文件能够防止产生单点故障,将事务信息持续化,具有checkpoint 机制来记录当前读写位置,当出现故障时,通过checkpoint记录的位置能够重新准确传输数据[3]。第六,OGG支持在异构操作系统下、异构数据库中进行同步,支持主流的操作系统和数据库平台[4],主要支持的异构环境如图2 所示。

图1 OGG 分离架构

图2 OGG 支持的异构环境

(2)Oracle GoldenGate 工作原理。OGG 工作原理如图3 所示。首先由捕获进程(Capture Process)对源数据库的在线日志或归档日志进行读取并解析[5],对涉及SQL 变更表操作的语句或者相关变化信息转换为OGG 自定义的中间格式存放于队列文件。传送进程将队列文件通过网络传送到目标数据,然后由捕获进程进行checkpoint,记录当前完成捕捉的log 位置。检查点的存在可使出现问题时从检查点位置继续复制[6]。投递进程从接收到的队列中读取数据变化情况,创建相关的数据库语句,通过数据库的本地接口执行。成功执行后更新检查点,记录完成复制的信息[6]。

图3 OGG 工作原理

(3)Oracle GoldenGate 应用。综上所述,OGG是一种能够支持异构环境的数据库复制技术,源端与目标端可以是不同的硬件平台、操作系统、数据库平台以及数据库版本。OGG 执行数据库复制过程中,目标端数据库可以是打开运行的状态,可以支持任何数据库的读写操作。OGG 具有高性能、高可靠、安全性以及断点续传等特性。OGG 能够支持Oracle 数据库中的数据复制容灾,可以满足关键业务灾备系统业务数据备份的需求。

1.2.2 数据初始化

应用服务器搭建Cloud Foundy 的PaaS 云平台环境,数据库服务器搭建Oracle 库,实现主系统至备库的历史数据初始化功能,并使用ETL 工具(Informatica)完成数据初始化。通过批量数据入库的方式加载数据。按照目前网络环境条件下每天800 万行(含照片类数据)计算,需要人工干预,且需要分批次进行,无法一次性完成所有类型数据的加载。

1.2.3 数据增量同步

在完成初始化后,使用实时增量数据同步工具Oracle GoldenGate 完成日常增量数据的同步。通过判断新增数据增量方式,主要按照日志方式,按照实时提取主库增量信息维护至备库。增量维护支持周期调整、数据变化调整、增量维护监控以及故障诊断等功能。数据同步架构,如图4 所示。

图4 数据同步架构

1.2.4 数据同步监控

在灾备库中实现新增数据同步监控和对账管理功能。按照周期维护至备库,需要对每个批次维护信息进行数据同步监控,包括数据维护监控、数据维护增量统计、同步故障报警以及故障分析解决等功能。

1.3 数据安全

为保证确保数据传输的安全与可靠,主要实现如下功能。

(1)数据获取安全。利用防火墙等技术对Oracle 访问的IP、端口进行保护,防止源数据维护视图被非法访问。

(2)数据传输安全。使用SSL 加密传输通道进行数据传输,保证数据传输安全性。

(3)数据传输可靠:确保传输过程不丢包以及传输验证等可靠性保护功能;

(4)断点续传,即支持断点续传。

(5)大文件传输,即支持大文件传输。

(6)智能路由,即对网络上的传输节点实现智能路由。

1.4 灾备系统切换要求

单节点出现问题时,业务切换至另一节点,必要时可做服务降级,保证关键业务系统中的主要业务正常服务。所有业务应用在能够在4 h 内切换至灾备系统,数据维护管理应用在48 h内切换至灾备系统。

2 备库的搭建

2.1 基础环境准备

OGG 可实现异构库之间的数据同步,在此选用HPE 的服务器,数据库依旧使用Oracle 数据库,版本略有不同,使用版本略有新特性的Oracle 12C。GoldenGate 安装运行需要调用Oracle 的数据库产品的类库文件,所以安装GoldenGate 的系统用户在系统的Oracle:dba 用户组中也可以直接使用系统Oracle 用户进行安装。为数据安全,隐藏数据库相关配置信息,硬件配置参照主环境进行配置,支撑环境基本信息如表1 所示。

表1 环境配置信息

2.2 数据库准备

2.2.1 源 端

在主环境AIX7.1 操作系统上为Oracle 用户环境增加参数“LIBPATH”:

LIBPATH=/goldengate:$ORACLE_HOME/lib:/usr/libOGG 要求源数据库必须处于归档以及强制日志模式,且需要开启数据库表的附加日志(开启数据库表的附加日志会导致数据库日志大大增加)。

2.2.2 目标端

在HP-UNIX 操作系统为Oracle 用户环境增加参数“SHLIB_PATH”:

SHLIB_PATH=/goldengate:$ORACLE_HOME/lib:/usr/lib

2.3 Oracle GoldenGate 安装注意事项

2.3.1 Oracle Goldengate 用户权限

两端数据库建立OGG 数据库用户GoldenGate,如果对用户权限要求不严格,可以直接授予DBA权限,否则需要赋予GoldenGate 用户CONNECT、ALTER ANY TABLE、ALTER SESSION、CREATE SESSION、FLASHBACK ANY TABLE、SELECT ANY DICTIONARY、SELECT ANY TABLE、RESOURCE以及DROP ANY TABLE 等权限。

2.3.2 数据库归档日志要求

OGG 要求源数据库必须处于归档以及强制日志模式,且需要开启数据库表的附加日志(开启数据库表的附加日志会导致数据库日志大大增加,用户级别的附加日志和表级别的附加日志可以在最后配置,即启动同步服务前一步进行配置)。

2.3.3 配置存储空间

为OGG 创建文件系统,也可在现有文件系统中建立一个目录。OGG 对于安装目录没有任何限制,OGG 软件本身占用不到200 MB 空间。

2.3.4 数据队列存储空间

需要在共享阵列上为OGG 软件划分一定的存储空间来存储OGG 队列。

OGG 存储空间的计算方法大致如下:

3 灾备数据库中的问题及解决方案

3.1 关键问题

3.1.1 OGG 进程时间延迟

关键业务系统主备库的OGG 正常运行后,只需要进入/oracle/ogg 目录,运行./ggsci 进入OGG管理控制台,在控制台输入info all,即可查看当前查看配置在服务器上的所有进程的信息,包括Program(所属进程)、Status(运行状态)、Group(进程名称)、lag at Chkpt(延迟时间)以及Time Since Chkpt(检查点信息)。

在数据同步过程中发现,OGG 进程的检查点总是存在延迟时间较长的问题。使用info all 命令发现EXT2 抽取进程的延迟过高,持续居高不下,最高超过1 000 h,详细信息如下:

3.1.2 数据差异

对主库与备库中的数据进行数据对账工作,发现存在大量的差异数据。目前,备库和主库存在约7 500 万数据差异,其中主要包括A 信息1 000 万、B 信息约5 400 万、C 信息1 100 万和D 信息1.6 万。数据差异情况如表2 所示。

3.2 关键问题分析

经综合分析认为,在关键业务数据中存在BLOB 字段类型数据。因业务原因,时常会有大批量数据上报,而当日增量超过400 万时,OGG 延时明显持续增高。延迟不断增长会造成以下问题:一是数据抽取过程中,影响抽取的速度和质量,而在修复这个延迟的过程中,切换到下一个文件又将导致两边数据量不一致;二是随着延迟增高,待同步数据累计增多,OGG 中的trail 文件会越来越大,给主库的归档造成了大量的存储资源占用,同时trail文件的增大和延迟修复所做的切换将造成备库与主库的差异数据增多,因此在备库进行数据分析业务时,数据无法达到完整、准确和鲜活的要求。

综上所述,在大型灾备系统进行数据同步的过程中,OGG 在进行大规模BLOB 字段类型数据同步时性能存在问题。一是数据同步效率降低,增量数据过大时存在很高的延迟;二是数据质量下降,BLOB 字段类型数据会出现缺失,如照片存在半张脸问题,OGG 在数据同步时保证了数据表的行数一致,却丢失了某些字段信息;三是维护难度较大,没有可操作的图形化界面;四是OGG 数据同步对DDL 语句进行同步,当主库的表结构发生变化时,备库相应的表的同步会停止,当需要进行字段修改时需要先停止进程。

3.3 数据对账

在缺少数据对账方式的情况下,发现数据维护存在问题会比较麻烦。只能通过人工定时对各类数据进行统计来发现问题,或是等上层应用反馈错误时才倒查出数据维护中的问题,导致工作十分被动。使用OGG进行数据对账补偿操作非常烦琐且复杂,为减少关键业务系统备库与主库数据差异,需在原有数据维护机制基础上增加数据对账和差异数据补偿机制,开展数据对账及差异数据补偿工作,保障数据的完整性、一致性和鲜活性。

3.3.1 DXP 数据传输运行平台

DXP 数据传输运行平台通过Web 浏览器客户端监控、管理以及维护系统,快速全面掌握数据差异情况,可在备份系统、主备数据库和其他类型的冗余数据系统中实现数据一致性。在数据不同步时,它能够快速、自动发现差异数据,且不会中断数据库可用性,不再需要运行复杂的查询并投入大量的人力资源,在某些情况下可节省数周的时间,可根据需要设置检查频率在主备数据库之间执行定期检查,无需使任一系统、数据库脱机,且对正常运行的业务无影响。

(1)DXP 数据传输运行平台特点。第一,高效。超速多线程融合,提升数据处理速度;多缓存容器,减少锁开销,提升采集效率;多协同辅助线程,缩短整体数据处理时间;根据CPU 数量计算线程池,CPU 利用率达到最大化,提高对计算机硬件的利用率。第二,灵活。支持数据不断变化的实时数据库,支持跨网络跨机房的比对,对硬件和网络资源的影响低。第三,易操作。自动分批比对数据,实现总量、条目以及数据项的差异数据落地;系统由于断网导致运行中断、断电出现服务宕机等,系统恢复后可自动完成恢复操作,减少人工干预。

(2)DXP 数据传输运行平台工作原理。DXP数据传输运行平台在初始对账(或行散列)步骤中,利用查询从源表和目标表检索行。如果源数据库与目标数据库属于不同的类型,列将转换为标准化的数据类型格式,以进行准确比较。默认情况下,在比较行时,会以值一一对应的方式比较主键的所有列,而对所有非键列使用散列值,用于计算散列值独特的数字签名缩小通过网络传输以进行比较的数据,保持高效和准确,但是并不能绝对确定两行列值是否相同。为完全确保发现不同步的行,DXP 数据传输运行平台可配置为以列一一对应的方式比较非键行而不使用散列,在不断变化的环境中确认行状态,从而确保结果准确,执行确认处理的线程与初始比较步骤并行执行,但每行的确认直到超出指定的复制延迟阈值后才执行。这一步的最后会给出对队列中的行的评估结果。DXP 数据传输运行平台通过表结构比对识别结构化差异、数据量比对识别数量差异以及数据项比对识别信息内容差异,支持表、视图以及自定义SQL 等方式。

(3)DXP 数据传输运行平台应用。DXP 数据传输运行平台是对OGG 在数据对账和补偿方面的补充,支持多种数据源和多种比对方式,适用于各种网络。多样化完全基于Web 方式实现配置、管理和监控,可高效处理大量数据,支持数据不断变化的实时数据库,支持跨网络跨机房的比对,对硬件和网络资源的影响低,可用来对关系型数据库和列存储数据库中的数据进行比对和同步,实现其备份系统、主从数据库和其他类型的冗余数据系统中实现数据一致性,能够实现关键业务数据对账及差异补偿,确保数据的安全、可靠,满足业务方面的需求调度方式。

3.3.2 数据对账

使用DXP 数据传输运行平台在识别出差异数据后,实现差异数据修复、查看差异数据报告以及基于个性化配置的数据补齐过程,确保两端数据的一致性。在进行数据对账前,要对数据建立哈希索引和主键,通过哈希验证主键是否重复,确认在数据对账补偿过程中唯一性是否破坏。哈希值能够在逻辑上确保数据的唯一性,选择差异数据表中的某个字段作为主键,通过主键的功能索引和唯一性特点加快数据库的运行速度,对大规模数据和多个数据库比对开展数据对账工作,验证数据一致性。

3.3.3 环境搭建

关键业务系统的主备库部署于不同的数据中心,需要进行两个中心的防火墙安全策略的开通。在备份环境的支撑平台上新建两台虚拟机(系统版本为Windows2012 R2,CPU8C,内存32 GB,存储300 GB)作为DXP 数据传输运行平台的基础支撑环境。使用主库和备库上已经存在的数据库账号作为数据对账基础账号,权限为CONNECT、RESOURCE 和CREATE VIEW。在备库中,新建数据库账户SJDZ_DXP 及默认表空间384 GB,作为对账差异数据中间存储池。部署环境如图5 所示。

图5 主备库环境部署

3.3.4 数据对账补偿步骤

在原有数据同步机制基础上增加数据对账和差异数据补偿机制,根据数据差异情况定期进行数据对账补偿,能够保障备库与主库数据的一致性。

(1)通过Web 浏览器,用户可以连接到数据对账服务器,并配置备库与主库数据对账任务及其关联对象。在配置相应的数据对账任务后,即可等待任务执行。

(2)使用Web 浏览器手动执行数据对账任务或用周期调度自动执行数据对账任务,根据数据差异数量和资源使用情况,按批次进行数据补偿工作。数据对账补偿过程如图6 所示。

图6 数据对账补偿过程

(3)完成任务后,可以通过使用Web 界面或直接查看文件来分析对账报告和不同步报告,然后根据日常数据维护情况分析数据差异,制定关键业务数据对账补偿周期。数据差异分析合并,如图7所示。

3.3.5 数据对账补偿结果

本次以存在差异数据最多的一类数据对账补偿工作为例,按数据上报单位分别制定数据对账补偿计划,将某一数据字段作为主键。数据对账计划执行时间受数据量、字段数量和字段属性不同的影响,所消耗的时间不同。其中,差异数据最少为11 586 559 条,对账耗时5 分59 秒,差异数量1 458 392 条,差异存储耗时3 分46 秒,差异补偿耗时29 分25 秒;差异数据最多为46 797 874条,对账耗时23分31秒,差异数量44 26 995 条,差异存储耗时18 分35 秒,差异补偿耗时10 小时35 分19 秒。

图7 数据差异分析合并

关键业务主备系统中比对的总数据量大约625 016 662 条,对账总耗时8 小时零9 分,差异总数量111 827 873 条,差异存储总耗时7 小时,差异补偿总耗时506 小时43 分。综上所述,DXP 数据传输运行平台一共运行25 天4 小时完成此次对比任务。经测试无对账差错,补偿完整率为100%。

3.4 保障机制

经前期验证,通过数据对账补偿方式已将备库差异数据对账补偿,制定保障机制如图8 所示。

图8 数据对账补偿保障机制

(1)在DXP 数据传输平台创建定时数据对账任务,将关键业务主备系统的A 信息、B 信息、C信息以及D 信息4 类关键业务数据按数据上报单位分批进行对账;

(2)根据数据对账结果,形成差异数据;

(3)创建数据补偿任务,将A 信息、B 信息、C 信息以及D 信息4 类关键业务数据按数据上报单位分批进行补偿;(4)根据数据差异情况,设置定时数据对账补偿周期为30 天。

3.5 解决方案优点

3.5.1 OGG+DXP 技术行业案例

Oracle GoldenGate+DXP 技术保证了对业务系统持续性的访问,提供了对业务持续性的高度支持,满足跨地域、跨网络的各种复杂复制需求。无论从网络资源占用、执行效率和对系统性能影响等方面考虑,它都具有独特的优势,可以满足实时切换的备份需求和在业务发展过程中对数据安全的需求,以最短的时间缩小数据差异率直到数据统一,更好地完善了数据维护的工作内容,提高了数据维护方面的完整性、准确性以及鲜活性。

3.5.2 RPO、RTO 均达到最优化

OGG+DXP 技术实现了主备数据库中数据的一致性,当主环境出现问题时,业务即刻切换至备份环境,保证主要业务系统正常运行。本次案例中,业务应用可在4 小时内切换至灾备系统,数据维护管理应用可在48 小时内切换至灾备系统,实现了最短时间内恢复业务办理,在实现业务连续性和准确性具有重要意义。需要说明的是,该关键业务容灾系统建设达到了RTO 和RPO 最优化。

4 结语

当前关键业务系统运行稳定、日渐成熟,业务数据维护形成了相对稳定、可靠的工作机制并对外提供查询服务。在北京建立关键业务主备库及数据对账补偿机制,一旦主数据库宕机,备数据库将能立即接管主数据库工作,继续提供服务,保证业务系统不间断,数据维护、数据服务等工作正常运行,保障业务的连续性、高可用性以及数据的完整、准确、鲜活。本次案例中的Oracle GoldenGate+DXP 技术符合该行业对数据和业务的高要求,对相关行业在实现关键业务系统容灾方面有一定的借鉴价值。

猜你喜欢
日志关键补偿
硝酸甘油,用对是关键
一名老党员的工作日志
高考考好是关键
扶贫日志
雅皮的心情日志
雅皮的心情日志
解读补偿心理
谈电力客户无功补偿运行管理中的难点
基于自学习补偿的室内定位及在客流分析中的应用
蒋百里:“关键是中国人自己要努力”