基于Oracle数据库的逻辑数据同步技术在实践中的应用研究

时间:2023-03-10 18:35:06 网络工程毕业论文 我要投稿
  • 相关推荐

基于Oracle数据库的逻辑数据同步技术在实践中的应用研究

  摘 要:随着人们对生活质量要求的提高,随时随地的为客户提供无折扣的服务成为服务行业争相实现的目标,要实现这个目标,灾备系统建设是一个持续的话题;另外,除了越来越大的交易量,随着用户查询需求的增加,数据库负荷越来越重,甚至无法直接为客户带来查询结果,将灾备端数据库兼用作查询数据库实现双活,又可以起到有效分担压力,提高响应速度的效果。数据同步技术是灾备系统建设及数据库双活的基础和核心环节,本文介绍了某公司实施基于Oracle数据库的数据同步案例,并对测试及试运行前期存在的一些问题进行了分析和改进,取得了较好的效果,可以供同类项目参考。

基于Oracle数据库的逻辑数据同步技术在实践中的应用研究

  【关键词】容灾 双活Oracle 数据同步

  1 引言

  1.1 背景

  伴随信息化的持续推进,数据的安全和业务运行的可靠性越来越重要,灾备系统能为业务系统的高可用性和高可靠性提供有力保障。

  某公司电话销售系统是一个全国集中的系统,该系统承担超过5000座席及全国市县一级落地业务人员的访问量,系统规模及压力大,影响范围广,需要建设可靠、稳定、高效的容灾体系;并能实现在灾备端实时查询生产数据,分担生产端压力。数据同步是实现上述目标的核心及基础。

  1.2 研究思路

  以该企业实施的数据同步项目为案例,介绍了灾备体系的基础架构和基础环境,在此基础上选用了合适的数据同步产品,设计了同步方案和策略,经测试和试运行,总结过程中产生的问题,提出了解决方案并付诸实施,对同步过程持续进行监控,对比结果进行总结。

  2 数据同步技术

  数据同步技术大致可分为存储系统层、操作系统层、数据库系统层同步技术。

  2.1 存储系统层数据复制

  现在的存储设备经过多年的发展已经十分成熟。特别是中高端产品,一般都具有先进的数据管理功能。远程数据复制功能几乎是现有中高端产品的必备功能。要实现数据的复制需要在生产中心和灾备中心都部署一套这样的存储系统,数据复制功能由存储系统实现。如果距离比较近(几十公里之内)之间的链路可由两中心的存储交换机通过光纤直接连接,如果距离在100公里内也可通过增加DWDM等设备直接进行光纤连接,超过100公里的距离则可增加存储路由器进行协议转换途径WAN或INTERNET实现连接,因此从理论上可实现无限制连接。存储系统层的数据复制技术对于主机的操作系统是完全透明的,是对于将来增加新的操作平台,可不用增加任何复制软件的投资,即可完成实现复制。缺点是由于基于存储是由存储硬件厂商提供的,在兼容性方面有局限性。用户要使用同一厂商的设备,给用户造成的选择面太小,成本容易提高,并且对线路带宽的要求通常也较高。对于预算充足,存储环境不是很复杂的企业来说,选择基于存储的技术比较适合。存储系统层的数据复制基于同构的存储,各个存储厂商都有自己的复制软件,如IBM PPRC、EMC SRDF、HP Continues Access、HDS TrueCopy等。

  2.2 操作系统层数据复制

  主要通过操作系统或者数据卷管理器来实现对数据的远程复制。这种复制技术要求本地系统和远端系统的主机是同构的,其实现方式是基于主机的数据复制,容灾工作在主机的卷管理器这一层,通过磁盘卷的镜像或复制,实现数据的容灾。这种方式也不需要在两边采用同样的存储设备,具有较大的灵活性,缺点是复制功能会多少占用一些主机的CPU资源,对主机的性能有一定的影响。目前基于原厂的逻辑卷管理软件如IBM AIX LVM、HP-UINX MirrorDisk、Sun Solaris SVM等可以实现在本厂平台上的逻辑卷镜像,专业的数据复制软件提供了更大的灵活性,支持多个平台的逻辑卷镜像,其中代表性的软件是Symantec VERITAS Storage Foundation 软件。

  2.3 数据库数据复制技术

  数据库数据复制技术通常采用日志复制功能,依靠本地和远程主机间的日志归档与传递来实现两端的数据一致。这种复制技术对系统的依赖性小,有很好的兼容性。缺点是本地复制软件向远端复制的是日志文件,这需要远端应用程序重新执行和应用才能生产可用的备份数据。目前基于数据库的复制技术主要有:Oracle DataGuard、Oracle GoldenGate、DSG RealSync、Quest SharePlex、九桥DDS等。

  3 某公司数据同步方案设计

  3.1 灾备体系架构及基础环境

  容灾体系的目标是实现在线的两地三中心应用级容灾,主生产中心A及同城灾备中心C(兼查询中心)在北京,异地灾备中心B在广东。项目实施分为四个阶段,第一阶段生产中心A与同城灾备中心C的双向数据同步测试及切换演练;第二阶段实现新生产中心A与同城灾备中心C(兼查询中心)及异地灾备中心B的双向数据同步测试及切换演练;第三阶段实现两地三中心上线试运行。

  两地三中心的环境情况如下所示:

  (1) A中心:数据库主机为IBM P780,AIX6.1,存储为IBM DS8800,数据库为oracle10.2.0.5。

  (2) B中心:数据库主机为IBM P780,AIX6.1,存储为EMC VAXe,数据库为oracle10.2.0.5。

  (3) C中心:数据库主机为SUN M9000、Solaris 10,存储为HP XPS24000,数据库为oracle10.2.0.5。

  (4) 同城网带宽:2*200Mbps。

  (5) 广域网带宽:2*200Mbps。

  (6) 生产库数据量:1.6T,日志量:9G/小时(源端生成量)。

  3.2 数据同步产品

  基于以上基础条件,要求使用的数据同步产品在以下几方面有良好的支持。

  (1)支持异构的存储、操作系统和数据库管理系统。

  (2)目标数据库处于打开状态。

  (3)支持一对多、多对一,双向复制等。

  (4)所占系统资源较少。

  (5)传输的数据量小,对带宽要求不高。

  (6)支持无主键数据库表的同步。

  通过对现有市面产品功能的考察,并基于以上条件进行了初步筛选。存储层和操作系统层的复制技术不太适合该场景,他们对硬件平台和操作系统有较为严格的限制;Oracle 10g数据库DataGuard组件不支持同步过程中目标库打开;Oracle GoldenGate、Quest SharePlex无主键表同步性能较差,而系统中无主键表数量占比较高。经筛选,确定一款数据库层的数据同步软件DDS进行测试。

  3.3 同步原理

  基于数据库层的数据同步需要在源端和目标端各自安装一套软件。DDS软件其工作原理分为历史数据库同步与增量数据同步两个步骤,这个两个步骤的相互结合可实现oracle数据库的不停机在线数据迁移。

  每次同步动作由以下几个步骤组成:

  (1) 在源端软件中配置抓取进程和队列、传输进程,在目标端配置读取进程、装载进程和队列。

  (2)抓取进程分析源数据库的日志文件,抓取所需的数据变更操作,将其存储在自己专有的缓存文件中,放入到抓取队列。

  (3)由传输进程对抓取队列文件进行封装处理,压缩,将其放入到传输队列中,由传输进程将文件通过网络发送到目标服务器上。

  (4)目标服务器上的接收进程接收这些文件,根据装载队列配置进行拆分,将其放入到装载队列中。

  (5)由装载进程将这些文件中的变更应用到目标数据库中。

  (6)当历史数据同步完成时,软件根据历史同步记载的SCN号,对大于此SCN号的表的事务进行增量加载。从而使目标端数据库与生产端数据库始终保持一致,此时,生产业务系统可随时使用目标端数据库来顶替原生产数据库,从而完成了数据迁移的过程。

  DDS软件进行数据同步,在以下几方面有优势:

  (1) 通过在目标数据库的数据装载方面,不是通过主键或唯一键来实现数据记录的定位,而是自己维护一个源数据库和目标数据库的数据记录的rowid mapping表,通过rowid来实现记录的定位,因此在数据装载效率方面有不小的提高。

  (2)对传输文件进行压缩,压缩比约为1:10,可以大大减少传输量,降低带宽要求。

  但同时软件要建立和维护源、目标块之间的映射列表,当同步数据量越来越大时,映射表也变的非常庞大,读写效率随之降低。

  3.4 同步策略

  根据灾备体系架构规划以及同步软件的特性,基于灾难应急流程制定了灾备体系的数据同步策略。策略包括四个步骤:正常、生产宕机、生产恢复、生产接管。

  (1) 正常生产状态下,在A中心配置两套独立的同步策略,同时向B中心和C同步数据。

  (2) 生产中心发生灾难,B中心做为容灾中心接管业务,同时断开三个中心间的数据同步机制。

  (3) A中心的软、硬件环境恢复,但业务仍然由B中心接管,同时需要做B中心到A中心的一次数据全同步。

  (4) 在A中心接管业务后,需要做A中心到B中心和C中心的一次数据全同步。B中心和C中心的历史数据全部清空,重新从A中心同步过来。

  3.5 同步效果

  (1)前期测试,使用loadrunner工具进行压力模拟,增量同步效果,如表1所示。

  (2) 试运行期间,同步效果如下:

  全同步时间3小时13分22秒;增量同步时间,在业务高峰期3499秒;CPU资源占用低于5%,I/O资源占用低于1%,CPU资源占用低于5%;网络传输量是Oracle在线日志增量的十分之一以下。

  4 问题及分析

  4.1 问题

  在设计之初,由于对压力了解不够,仅在目标端配置一个队列进行数据加载,文件顺序加载,造成装载效率低,累计时间延迟高。

  4.2 解决方案设计及效果

  针对顺序加载的弊端,考虑将装载队列拆分为多个队列,同时启动多个装载进程装载不同的队列,提高装载效率。

  (1) 首先考虑到数据库存在多个用户,用户之间关联度小,比较适合作为拆分依据。

  (2) 其次,同一用户的不同表数据操作类型有差异,部分表数据量执行的DML操作频繁,部分表几乎没有DML操作。执行DML操作频繁的表,在同步时需要频繁查找映射表以进行更改,而非DML操作则不需要查表,将DML频繁的表单独拆分到一个队列,有利于减少其他表执行同步的等待时间,提高效率。

  (3) 再次,部分表之间存在主外键关系,这部分表在进行删除操作时,需要考虑级联删除的情形,建议拆分到同一队列,以保证统一性。

  (4) 最后,还需考虑在目标端禁用触发器,避免触发器引起的重复操作动作。如表2所示。

  基于以上考虑,将队列按用户、DML操作频繁性、主外键关联等条件拆分为19个装载队列。

  从表2可以看到,通过优化,在数据库交易数据数及数据库日志量翻倍的情况下,增量同步时间反而减少至5秒左右,优化取得了良好的效果。

  5 总结

  本文简单介绍了目前主流的数据同步技术,基于某公司现状及灾备需求,选取了数据同步产品,设计了同步策略,给出了测试及试运行期间的同步效果数据;并针对期间出现的问题进行一定深度的分析,设计解决方案,达到了一定的效果,可以供同类项目参考。

  参考文献

  [1]郭伟华.浅谈Oracle数据同步技术[J].科技资讯,2010.

  [2]罗易.存储数据复制技术在容灾系统中的应用[D].重庆大学,2008.

【基于Oracle数据库的逻辑数据同步技术在实践中的应用研究】相关文章:

数据库开题报告10-29

计算机数据库论文07-20

计算机数据库论文07-21

局域网数据库环境下数据采集及处理05-08

计算机数据库论文15篇【经典】07-20

电气自动化节能设计技术应用研究06-12

基于军网的雷达远程诊断技术研究08-10

金属学材料热处理节能新技术及应用研究论文06-25

探析改进大专院校图书馆书目数据库质量之我见06-02

基于分组技术的下一代光传送网05-29