DSG-RealSync Oracle数据库同步复制及容灾技术简述

时间:2024-03-03 16:42:02

 

1     为什么需要数据复制

1.1    信息系统存在的问题及需求

随着计算机应用系统的爆炸式发展,业务量迅速增加,业务种类日益复杂,企业必须管理不断增长的信息流量;随着信息量的急剧增大,核心数据的管理变得日益困难。如何安全、可靠地存储业务数据及满足未来业务数据高速增长的需要;如何有效管理日益增长的业务数据;如何实现业务数据的共享并在现有业务数据之上建立新兴的增值应用,如数据仓库、客户关系管理(CRM)等,成为了各企业建立信息系统的关键所在。

目前,各企业信息系统在数据管理领域存在着普遍的问题:

 

1.1.1 数据流通效率低下,企业信息孤岛现象严重

信息系统的建设主要是以应用为驱动的,是随着各种业务的逐渐建设的。当出现一类新的业务时,一般需要为该业务建设一套业务支撑系统,保存与该业务有关的主要数据。而这些数据可能同时也需要被其他应用所访问。从而自然就形成了各子系统应用在不同的纵向,管理着不同的业务单元或对象,各个子系统又是相互独立运行,导致形成了一个个“信息孤岛”。这些系统相互之间没有畅通的信息交流与共享,阻碍了企业信息化建设的整体进程。

 

1.1.2  数据报表、查询和数据共享效率低下

为了提高市场竞争力,提高客户满意度,企业需要更复杂的、更灵活的业务统计报告、需要深入的数据挖掘、需要实时的客户查询。而这些大量的统计、查询业务收到现有系统架构的制约,不得不降低效率标准、不得不推迟报告时间、从而导致客户服务质量降低、业务发展情况报告迟缓,业务发展情况不明等问题。

1.2   企业需要新的信息架构

因此,各企业比以往任何时候相比,管理和有效使用这些信息系统的能力高低都更能决定了长期生存和发展能力,因此比以往任何时候,企业都更关注于如下领域:

  • 提高系统运行效率,提高业务报表、提高客户服务质量,并降低客户流失率。
  • 加强企业信息流通、提高企业信息的附加值、进一步挖掘企业信息价值、迅速开发和推广新业务,创造更多收入并保持竞争能力。
  • 提高信息系统业务连续运行能力,提高数据安全保护水平。

2      DSG RealSync的技术概览

2.1   采用数据库复制技术

与传统的数据复制技术不同,DSG RealSync技术是针对数据库提供了基于逻辑的交易复制方式。该方式通过直接捕获源数据库的交易,将数据库的改变逻辑复制到目标系统数据库中,实现源系统和目标系统数据的一致性。

2.2   DSG RealSync的优势概览

该技术在复制上存在以下几个特点:

(1)按需复制

查询和统计系统往往不需要所有的原始数据,因此完全可以按需要复制数据。RealSync系统支持对指定信息的按需复制,减少存储和网络带宽的成本。

 

(2)多种同步模式

DSGRealSync支持的数据复制模式包括:

a.实时复制:实时更新保证副本系统快速反映源系统的变化,提供账单查询、话单查询等的及时性。

b.定时复制:包括每月复制、每周复制和每天复制;

c.手工复制:支持操作员指定时间对指定表进行一次完全复制;

 

(3)对生产系统的低干扰性

DSG实时数据复制技术不需要通过任何数据库的引擎来获取变更数据,而是通过数据库自身的信息获取源系统上的改变并传送给目的系统,不会对生产系统造成性能影响。

(4)系统异构,可提供更多的优化空间

源数据库系统和目的数据库系统的可异构,主要包括索引规则和存储参数(如数据块大小、回滚段等)。

因此可以在目标数据库上根据业务特点进行调整和优化,完全不受源系统的限制。

 

(5)支持的多种复制策略

RealSync可以被灵活配置,以支持各种复制策略,支持各种增值应用,如:1:1单向复制;一对多复制;多对一复制等。

 

3      RealSync工作原理概述


      如上图所示,RealSync在Data Source端和Data Target端分别安装Agent进程,Source端的Agent进程对ORACLE日志进行监控,发现改变及时对目标数据库进行更新。

当应用系统在Data Source端向数据库进行任何操作时时,这些信息都将在Redo Log中保存,RealSync Agent通过对实时获取的Log日志进行分析,获得本次操作的交易指令和交易数据,然后将这些交易指令和交易数据经过格式转化生成DXF数据格式,并实时通过网络传送到Data Target系统。

DataTarget系统的RealSyncAgent接收数据库包,经过校验码检查,确认正确的数据库包后,调用Oracle函数按照交易的先后顺序在DataTarget系统中执行该交易。

 

4      日志抓取(Data Capture)

RealSync对数据的抓取是通过安装在Data Source端的Agent模块定时分析Oracle Redo Log来获取Data Source端的交易类型及数据的。

RealSyncAgent在判断Data Source端的Oracle系统是否有新的交易产生时是通过定期检查Oracle Controlefile中记录的当前SCN号来判断的,这样避免每次检都通过读取log文件来判断否有新的交易产生时造成的系统影响。

在Controle file中确认有新的交易产生时,可以同时获得当前的Redo Log 组,以及最新日志在日志文件的最新位置。

RealSyncAgent模块根据这些信息将上次抓取时记录的日志位置与本次读取的最新位置之间的Log读取并加以分析。然后将这些数据保存在Online Log Cache文件中,等待下一步作交易合成处理。

RealSync的优势: 

与其他类似日志复制产品相比,RealSync对日志进行分析,得到交易信息再进行传送;而其他类似产品不对日志作分析,传送全部日志,然后在目标端通过日志作Recover, 这样一来,不仅传送数据量大,而且目标端数据库不能打开。

5      日志分析(Analyze)

Oracle数据库的所有更改都记录在日志中,其中记录了对数据库中的每一个变化。

当我们候需要需要了解数据库中所作的交易时,一个最有效实用而又低成本的方法就是分析Oracle数据库的日志文件。

RealSyncAgent中集成了DSG的优秀日志分析功能,该功能完全不同于oracle提供的Logminer日志分析工具,在性能和功能上都大大提高,主要体现在系统性能的优化上,大幅度提高日志分析的速度,使得对于高并发业务系统的复制成为可能。按照RealSync的日志分析设计目标,每秒能够分析的日志量达到10M/s。

RealSync通过对日志的分析,得到该数据库中的每个SQL指令,并将这些SQL指令生成DXF(DSG Extend Format)格式的表达方式。

DXF格式是DSG公司的专有技术,该技术是DSG公司用来表达SQL指令的方式,该数据格式能够通过DSG的专有转换算法能够直接转换为ORACL的内部数据表达格式,从而在分析和转载时需要最小的转化,提高分析和装载速度,减少资源占用、丰富能够表达的各种数据类型。

6     交易合成(Synthesize)

通过ORACLE REDO LOG分析的交易指令存在如下的几个特点:

(1)这些指令是交叉出现的,属于一个交易(Transaction)的多条SQL指令是非连续存储的,多个交易的SQL之间是相互穿插的;

(2)Redo log中记录了所有的commit的交易以及没有commit的交易;

 

所以,为了提高系统的可控制性、保证逻辑完整性、避免数据丢失,最好将复制的最小单位为一个交易(Transaction),而不是以单个SQL指令为复制单位,这样在DataTarget端的交易装载更加容易控制。

 

同时,对于复制的数据而言,只有那些Commit的数据对于DataTarget端系统是有意义的,而对于那些Rollback的数据无需复制到Data target系统上。

 

所以RealSync在复制过程中不是复制每个SQL语句,而是对抓取的数据进行交易整合后以交易(Transaction)为单位进行复制,同时只复制COMMIT的交易。

如上图所示,在Online Log Cache文件中,包括Commit的交易,没有Commit的交易和Rollback的交易。交易合成模块首先按照交易序号对SOL语句进行划分,每个交易包含多条SOL语句。然后,以交易为单位进行处理,将已经Commit的交易,传至传输处理模块;将未提交的交易保存在本地,一旦通过日志得知保存的未提交交易已提交,立即将该交易发送到传输处理模块;对Rollback的交易作丢弃处理。

RealSync的优势: 

RealSync是以交易为单位进行传输的,而不是以SOL语句为单位进行传输的,更容易保证数据的一致性和完整性。

7      交易传输

RealSync技术为了保证数据传输的安全、可靠,在传输处理上作了特殊的处理与支持:

(1)      数据在传输之前首先存入Data Source端的Cache,传输进程(Export Process)从Cache中读取交易数据封装为TCP/IP数据包传送给Data target端的Import进程。

 


(2)在data target端,Import进程在收到传输的交易数据包后,首先存入Queue,然后由Load进程从Queue中严格按照交易的顺序装载交易信息。

如上图所示,负责传输的进程(Export Process)从本地队列中按照先进先出的原则抓取需要传输的交易,将交易数据封装成一个数据包后通过TCP/IP协议传递给对端系统。在封装的数据包的包头部分描述了包的大小。

对端系统在接受到传来的数据包后,首先根据包头描述的包大小进行传输的合法性检查,判断是否传输完整。

8      数据装载

在传统的复制技术中,常用的数据装载方式是采用Oracle 的SQL接口,通过Insert、Update、Delete等SQL语句实现数据的装载。这种方式在通用性上很好,但关键在于性能问题非常突出。

SQL语句的执行需要经过parse、plan、格式转换等过程,造成大量的系统开销。尤其是update和Delte操作的大量Where子句操作需要进行复杂的查询定位任务,从而导致装载性能低下,对处理能力的要求比生产系统的还高。

DSGRealSync在设计之初就定位于电信级大数据量系统的应用,因此在装载性能上进行了大幅度的改善,使得装载端的性能和处理能力需求降至最低。

在其中DSG RealSync采用了两个关键的技术提高了装载速度:

(1)采用DXF数据格式的装载;

(2)采用Rowidmapping的方式实现快速定位;

8.1   用DXF数据格式的装载:

DXF(DSG Extend Format)格式是DSG公司的专有技术,该技术是DSG公司用来表达SQL指令的方式,该数据格式能够通过DSG的专有转换算法能够直接转换为ORACL的内部数据表达格式,从而在分析和转载时需要最小的转化,提高分析和装载速度,减少资源占用、丰富sql语句的表达方式。

Oracle数据库系统在设计上提供了4个层次的接口,其中包括User层,SQL层,Transformation层和I/O层。其结构为:

在这四层当中,当采用SQL接口进行数据装载时,调用的是User层,

而DSG RealSync通过DXF数据格式装载时,调用I/O层直接将数据通过Oracle的最底层函数写入系统中,所以DSG RealSync在装载层上有一定优势;

 

8.2   Row mapping实现快速定位

对于交易中的操作,存在着大量的Where子句操作,在采用标准SQL语句执行这些操作时,系统需要首先定位目标记录所在的数据文件的位置信息,这将带来大量的索引查询开销,当并发执行数千条指令时,系统的开销将变得非常庞大。

DSGRealSync工具不采用该方式实现装载数据的定位,而是通过ROW Mapping的方式实现记录的快速定位:

 

当RealSync从源端Log文件中读取交易数据时,将获得该交易对应记录的所在位置,用rowid表示为rowid_ds;

当该交易在目标端装载时,系统不翻译为Where子句,而是去通过保存在目标端的row mapping表获得对应目标端该记录的所在位置rowid,记录为rowid_dt。

从而在目标端装载时通过rowid能够直接定位于该数据需要写入的位置。避免了大量的索引查找时间。

每条记录的row mapping信息是在该记录执行insert操作、sql loader或首次批量同步时建立起来的。

RealSync的优势: 

DSG扩展格式DXF(DSG Extend Format)是RealSync产品的一个核心技术,是一种最高效率表示ORACLE记录的数据格式,该格式只需要经过最小的转换过程就能够装载到ORACLE数据库中,并且装载效率非常高。

n  无需标准SQL语句执行的复杂过程

n  加快装载速度

n  对于Update,Delete等带Where子句的交易,可以大幅度提高装载速度

9      OPS/RAC的支持

OracleOPS/RAC是一种多实例同时打开同一个数据库的技术,每个实例共享同一份数据文件和控制文件(控制文件可能有多个,但是内容相同,为每个实例所共享)。一个例外是,每个实例的Redo Log都专属于该实例(如下图所示),但每个实例的所有Redo Log都必须能够被其他实例访问。所有实例的Redo Log一般都保存在共享磁盘中(裸设备或集群文件系统)。

在OPS/RAC的环境下,RealSync Agent需要安装在OPS/RAC一个节点上,RealSync Agent通过控制文件得到每个实例的Redo Log配置,并实时跟踪每个实例的Redo Thread产生的日志,分析日志并将提交的交易发送的目标系统。

在OPS/RAC环境下,多个实例共用一套SCN,每个实例对数据的修改都会引起SCN的递增改变,RealSync通过SCN在目标端顺序提交交易,来保证数据库的一致。

10数据完整性保证

RealSync复制软件保证数据的一致性和完整性的保证主要通过以下几个方面:

 

保证交易先后顺序: 

保证交易的先后顺序:严格按照源端Transaction执行顺序在目标端加载,严格的I/O顺序是保证系统逻辑正确的关键因素,RealSync通过对Transaction的SCN号进行判断,并严格保证源系统上先Commit的交易在目标端也是先装载。

 

检查日志跟踪的连续性: 

检查日志跟踪的连续性:RealSync在每次log读取结束时,都将记录当前读取的日志的Sequence No,Block No和最后读取的Offset,当下次读取文件时,总是需要检查是否和上次读取的位置严格连续,从而保证对日志分析的完整性。

 

数据一致性检查: 

数据一致性检查:RealSync提供数据一致性检查工具,用来比较源端的记录和目标端的记录是否完全一致。如果出现数据不一致,RealSync将对不一致的部分进行修复。

 

11数据初始化装载

当系统在初始化过程,或需要重新完成批量数据复制时,RealSync提供海量数据的高速复制功能:

DSG复制功能是对数据实行导出、导入的方式实现的,但该实现不是通过oracleexport和import工具,而是利用DSG RealSync中内置的XEXP/XIMP工具实现的。

其过程不是对数据库底层的存储数据块进行复制,而是将源系统上的已有数据记录从datafile中直接读取并解析成为DXF数据格式,在利用XIMP将DXF数据批量快速装载到Data target系统上。

RealSync调用Oracle的I/O层的API接口批量读取一张表(Table)的记录(每次读多少条是由操作员设定的RealSync系统的Buffer决定的,如果一次读不完,则分为多次读取),然后将读取的记录转化为DXF格式,再将DXF格式表示的一批记录传送到目标端的RealSync Agent进程,目标端进程再调用ORACLE的I/O层的API接口将数据批量写入目标系统中。

对于一个数据库而言,其中有许多张表(Table),RealSync依次将每张表的所有数据按照上述原理复制到目标系统中。

对于xexp导出过程不是通过Oracle的标准select接口,所以其导出速度非常快。

同时,在采用DSG RealSync实现批量数据装载时,还无需停止源系统上的业务流程。那么RealSync是如何处理在导出过程中新改变的数据的复制呢?

因此,RealSync还支持第二阶段的增量数据复制:

当上个步骤的大批量数据完成后,RealSync再将步骤一过程中新增加的交易重新复制到目标系统。

在过程的工作原理是通过跟踪和分析从上个步骤开始时的所有redo.log信息,从Log文件中分析和翻译出这段时间内新增加的记录,然后再将记录在目标系统上插入。

如果在该过程中复制的数据在目标表中已经存在,则RealSync将首先删除目标系统中的该记录,同时插入新复制的记录。

在这两个过程执行过程中,生产系统的业务可以保持运行状态。无需中断业务。


 

 

12选择性复制支持

因为根据业务逻辑,很多情况下无需对所有的数据表信息进行复制,而只需要复制那些需要的表的信息,这样可以减少存储和网络带宽的成本。同时,SmartE支持水平和垂直分割。在水平分割方面可以只复制那些满足预先定义的条件的记录。在垂直分割方面允许设置对指定表的指定列进行复制。

 

13支持的复制结构

RealSync可以被灵活配置,以支持各种复制策略,支持各种增值应用。如:

 

单向复制:

从一个数据库向另一个数据库复制;

 

双向复制:

两个数据库进行互相复制;

 

广播复制:

由一个数据库向多个数据库复制;

 

集中复制:

由多个数据库向一个数据库复制;

 

级联复制:

由A数据库向B数据库复制,同时又由B数据库向C数据库进行复制。

 

14产品规格

特性 

描述 

工作方式

Transaction-Based数据复制

目标系统支持的操作

目标系统支持Read-Write操作

支持数据库版本

Oracle 8.0.6 ~ Oracle 9i版本

支持数据类型

支持Oracle 7 Data Type

支持复制操作类型

DML语句

可选择性复制

选择整库、user、表为复制单位

支持的硬件平台

Sun, HP, IBM, x86

支持的操作系统

Solaris, AIX, HP-UX, Linux,Windows NT/2000

支持的存储系统

EMC,IBM,HDS、HP、SUN以及其它通用的SCSI/FC存储系统

支持多种复制结构

一对一,双向,一对多,多对一

复制时间间隔

可灵活设置

最大距离

没有限制

对系统性能的影响

对主系统CPU占用率<5%。

15模块组成

RealSync for Production Server

安装在源系统(Data Source)上运行数据库实例的服务器上,每台服务器配置一个License;

该模块中又包含以下功能:

n  Analyzer Module:日志分析模块

n  Synthisizer Module:交易合成模块

n  Exporter Module:数据传输(输出端)模块

n  XEXP Module:用于从已有的Table中批量导出数据,用于系统初始化

 

RealSync for Destination Server

安装在复制目标系统(Data Target)上运行数据库实例的服务器上,每台服务器配置一个License;

该模块中又包含以下功能:

n  Importer Module:数据传输(输入端)模块

n  Loader Module:交易合成模块

n  XIMP Module:用于从已有的Table中导出数据的批量装载,用于系统初始化

 

 

RealSync management console

管理控制界面;

 

16典型的FAQ 

是否支持异构平台恢复? 

支持,如将HP-UX上的Oracle恢复到IBM AIX上。传统复制技术,无论是EMC SRDF, IBM PPRC 、HP Business Copy XP、VERITAS VVR或者Oracle DataGuard等都不能支持异构平台的复制。

 

支持的Oracle版本? 

支持Oracle 8.0.6 以上版本,并支持不同Oracle版本间复制。

 

持哪些复制模式?

支持一对一,双向,一对多,多对一,和级联复制。

 

对网络带宽的占用,对源系统资源的占用如何? 

RealSync使用基于Log的复制,复制操作集中于对数据的改变。因此,对源数据库系统、源系统和网络的影响较小。根据Oracle在比较其DataGuard与EMC SRDF之间的差别时,提出EMC SRDF的数据复制量为DataGuard的7倍。而RealSync的复制数据量比DataGuard更小。

 

RealSync支持源系统和目标系统间的最大距离? 

RealSync是基于TCP/IP的复制系统,借助现有的网络技术,距离没有限制。

 

RealSync正常工作要求的最小网络带宽? 

由于RealSync直接读取Oracle的Online Redo Log,复制操作集中于数据的改变,对网络带宽要求较低,对网络带宽的最小要求也根据源系统的数据更新频率而不同。


17成功案例客户名录

自从DSG迪思杰(北京)数码技术有限公司于2002年在国内成立以来, DSG 产品和DMP架构已经得到了业界人士的广泛认可,并且在电信、*、证券、*、军队等行业已经得到了广泛的应用。

中国电信:电信总部、江苏电信、重庆电信、江西电信、广西电信、*电信、青海电信、海南电信、贵州电信、甘肃电信、宁夏电信以及电信北方事业部;

中国移动:江西移动、广西移动;

中国网通:辽宁网通、周口通信、沧州通信;

中国联通:广东联通、江苏联通、天津联通、辽宁联通、山东联通、陕西联通、四川联通;

*机构:信息产业部(含浙江、江苏、陕西、黑龙江、福建、江西、甘肃、吉林、宁夏和重庆等信产部直属机构)、河北省地方税务局、上海市松江区财政局、广州*等

证券行业:银河证券、长江证券;

军队及其它:海军某部、火箭研究院、陆军某部、杭州电力;