一种异构环境中复制数据库数据的方法

文档序号:6609915阅读:259来源:国知局
专利名称:一种异构环境中复制数据库数据的方法
技术领域
本发明涉及计算机领域,具体地说是一种在异构环境中实现数据库数据复制的 方法。
2背景技术
伴随着信息化建设,用户对于数据越来越重视,对与业务的连续性要求也越来 越高, 一般都会将业务系统建立在数据库软件的基础上,并且会建立容灾系统。 在容灾系统中,需要将生产数据库的数据复制到备份数据库中,目前从存储、SAN、 操作系统,到业务层,各个层次都有自己的复制技术。
1) 基于存储的复制技术
目前主流的存储设备厂商在其存储产品上均有基于存储设备的容灾解决方案, 比如EMC的SRDF, IBM的PPRC。这种解决方案是一种数据存储的物理镜像,它将 数据在物理层面上,在两套存储设备中通过SAN制作或生成两套数据镜像,当本 地的生产系统发生故障时,备份系统主机可以连接上备份存储系统,开启业务。
2) 基于SAN的复制技术
SAN的复制技术是通过虚拟存储技术在SAN层次截获数据写操作,并进行远程 复制,所有存放在虚拟存储管理的LUN (磁盘巻)上的数据都能够自动被复制,而 且与业务、应用甚至服务器无关,大大简化了容灾设计和实施。但是与存储数据 复制类似,S認层的数据复制带宽要求更高,而且对于累积增量的保护较差,可能 因为数据溢出,因此需要更多的带宽去复制数据。
3) 基于操作系统的复制技术
有些操作系统如AIX本身就具有数据跨存储设备的镜像功能。与本机硬盘单镜 像设置的不同,这种灾备方式可以由操作系统通过SAN发起在两个存储设备间保 存两份相同的数据。当本地的生产系统发生故障时,备份系统主机可以连接上备 份存储系统,开启业务。比如IBM的GE0RM, VERITAS的Storage R印licator、Volurae R印licator等就是采用该技术。
4) 基于业务的复制技术
基于业务的数据复制技术适合三层架构的应用,在容灾中心除了存储,主机系
统外,还需要和生产中心一样的中间件服务器。基于业务的数据复制技术是以提 供相同的输入,相同的处理,来保证相同的输出,从而达到数据复制的目的。因 此,基于业务的数据复制技术,虽然交易一致性好,但是需要和业务程序开发结 合,实现复杂,不适用于已成型业务。
综上所述,基于存储的复制技术,对存储设备要求高,不能够支持异构的存储
平台和数据库主机;基于业务的复制技术,由于其与业务程序结合紧密,不适合 成熟的业务应用环境;基于SAN和操作系统的数据复制技术,其数据库处于恢复 状态,实现应用切换比较困难,比如数据库需要一个启动过程而且数据库的启动 可能由于数据不一致导致不能成功启动。
发明内容
本发明的目的是提供一种数据库数据的复制方法,解决异构平台支持、系统资 源占用和实时性的问题。
本发明提供一种基于平台软件的复制技术,具体地说是一种数据库数据的复制 方法,本发明的方法是按以下方式实现的,通过对源端数据库的日志进行分析, 获取引起源端数据库变化的SQL语句,并把这些SQL语句按照事务进行组织,然 后将这些组织好的SQL语句传输到目标端数据库,并在目标端数据库按照其在源 端数据库执行的顺序来执行这些SQL语句,实现数据库数据的复制,数据复制步 骤如下。
1) 日志获取和分析
由日志分析模块实时读取源端数据库的控制文件,并进行分析,来检查是否有 引起源端数据库改变的SQL语句执行,并将引起源端数据库改变的SQL语句保存 在一个文件中。对数据的获取是通过安装在数据库源端的代理模块定时分析数据 库重做日志来获取数据库源端的交易类型及数据的。代理通过定期检查数据库控 制文件中记录的当前SCN号来判断源端数据库是否有新的交易产生,这样避免每 次检都通过读取日志文件来判断是否有新的交易产生时造成的系统影响。在控制 文件中确认有新的交易产生时,可以同时获得当前的重做日志组,以及最新曰志 在日志文件的最新位置。代理模块根据这些信息将上次获取时记录的日志位置与 本次读取的最新位置之间的日志读取并加以分析。然后将这些数据保存在在线日 志Cache文件中,等待下一步作交易合成处理。
2) SQL语句的合成将分析后得到的SQL语句进行重组。为了提髙系统的可 控制性、保证逻辑完整性、避免数据丢失,SQL语句按照事务进行组织,以保证只
复制提交的交易SQL语句。
3)操作的传输在传输过程中数据在传输之前首先存入源端数据库的Cache, 传输进程从Cache中按照先进先出的原则读取交易数据封装为TCP/IP数据包传送 给目标端数据库的导入进程。在封装的数据包的包头部分描述了包的特征信息。 在目标端数据库,导入进程在收到传输的交易数据包后,首先根据包头描述包的 特征信息进行传输的合法性检查,判断是否传输完整,如果传输完整,则存入队 列,接着由导入进程从队列中严格按照其在源端数据库的执行顺序装载交易信息; 如果传输不完整,则给源端数据库导出进程发送一个重传请求。
当源端数据库和目标端数据库为不同数据库品牌的数据库时,可以预先在代理 上设置其数据库类型,以便当传输结束后在目标端进行SQL语句转换。
交易事务中的SQL语句存在着大量的Where子句操作,在采用标准SQL语句执 行这些操作时,系统需要首先定位目标记录所在的数据文件的位置信息,这将带 来大量的索引査询开销,当并发执行数千条指令时,系统的开销将变得非常庞大。 本发明通过行映射的方式实现记录的快速定位当从源端日志文件中读取SQL语 句时,将同时获得该语句对应记录的rowid;当该SQL语句在目标端执行时,系统 不翻译为Where子句,而是通过保存在目标端的行映射表获得对应目标端该记录 的所在位置的rowid,从而在目标端通过rowid能够直接定位于该数据需要写入的 位置,避免了大量的索引查找时间。
本发明的有益效果是1)能够支持异构环境,包括异构的服务器、异构的存 储设备、异构的操作系统、异构的数据库系统。2)采用本发明进行数据库数据的 复制,需要复制的数据远少于其他方法,节省了系统资源和网络带宽。
4

图1是异构环境系统结构图
5具体实施例方式
本发明可用于异构环境的容灾系统中,作为数据复制的方法。复制过程中,通 过对源端数据库的日志进行分析,获取引起源端数据库变化的SQL语句,并把这 些SQL语句按照事务迸行组织,然后将这些组织好的SQL语句传输到目标端数据 库,并在目标端数据库按照其在源端数据库执行的顺序来执行这些SQL语句,实 现数据库数据的复制,具体复制步骤如下
a)首先进行日志分析,由日志分析模块实时读取源端数据库的控制文件,并 进行分析,来检查是否有引起源端数据库改变的SQL语句执行,并将引起源端数b) 据库改变的SQL语句保存在一个文件中;
c) 将分析后得到的SQL语句按照事务迸行组织;
d) 将组织好的SQL语句进行封装,封装成TCP/IP包,封装的数据包的包头部 分描述包的特征信息,以用于数据一致性检查;
e) 在目标端接收到传输的数据包后,首先根据包头描述的包的特征信息进行 传输的合法性检査,判断是否传输完整,如果传输完整,则存入队列中,接着严 格按照事务在源端的交易顺序在目标端数据库装载事务,即执行事务中的SQL语 句,如果传输不完整,则给源端数据库发送一个重传请求,重传有问题的事务。
步骤b)中所述的事务,其特征在于事务包含的所有SQL语句作为一个整体, 或者全部执行完成,或者全部不执行。
步骤d)中所述的在目标端执行SQL语句,进一步包括,在目标端数据库接收 到事务后,根据目标端数据库软件的类型,将从源端传送过来的SQL语句转换成 能够在目标端数据库执行的SQL语句。
实施例
本发明的方法是在数据库层面进行数据复制,针对数据库提供基于逻辑的交易 复制方式,通过直接捕获源端数据库的交易,将数据库的改变逻辑复制到目标端 数据库中,实现源端数据库和目标端数据库数据的一致性,
复制过程中,在进行日志分析时,对于update和insert语句,同时获得该语 句所执行的具体数据库数据记录的rowid,在目标端数据库执行这些SQL语句时, 直接在对应的目标端数据库记录的rowid上执行,不再需要执行复杂的定位操作, 可以最大限度减少系统资源的开销。
首先进行日志分析,由日志分析模块实时读取源端数据库的控制文件,并进行 分析,来检查是否有引起源端数据库改变的SQL语句执行,并将引起源端数据库 改变的SQL语句保存在一个文件中。对数据的获取是通过安装在数据库源端的代 理模块定时分析数据库重做日志来获取数据库源端的交易类型及数据的。代理通 过定期检查数据库控制文件中记录的当前SCN号来判断源端数据库是否有新的交 易产生,这样避免每次检都通过读取日志文件来判断是否有新的交易产生时造成 的系统影响。在控制文件中确认有新的交易产生时,可以同时获得当前的重做曰 志组,以及最新日志在日志文件的最新位置。代理模块根据这些信息将上次获取 时记录的日志位置与本次读取的最新位置之间的日志读取并加以分析。然后将这 些数据保存在在线日志Cache文件中,等待下一步作交易合成处理。
然后将分析后得到的SQL语句进行重组。为了提高系统的可控制性、保证逻辑 完整性、避免数据丢失,SQL语句按照事务进行组织,以保证只复制提交的交易 SQL语句。
接着进行数据的传输。在传输过程中数据在传输之前首先存入源端数据库的 Cache,传输进程从Cache中按照先进先出的原则读取交易数据封装为TCP/IP数 据包传送给目标端数据库的导入进程。在封装的数据包的包头部分描述了包的特 征信息。在目标端数据库,导入进程在收到传输的交易数据包后,首先根据包头 描述包的特征信息进行传输的合法性检查,判断是否传输完整,如果传输完整, 则存入队列,接着由导入进程从队列中严格按照其在源端数据库的执行顺序装载 交易信息;如果传输不完整,则给源端数据库导出进程发送一个重传请求。
当源端数据库和目标端数据库为不同厂商的数据库产品时,可以预先在代理上 设置其数据库类型,以便当传输结束后在目标端进行SQL语句转换。转换功能可 以通过修改嵌套代码来实现。
交易事务中的SQL语句存在着大量的Where子句操作,在采用标准SQL语句执 行这些操作时,系统需要首先定位目标记录所在的数据文件的位置信息,这将带 来大量的索引查询开销,当并发执行数千条指令时,系统的开销将变得非常庞大。 本发明通过行映射的方式实现记录的快速定位当从源端日志文件中读取SQL语 句时,将同时获得该语句对应记录的rowid;当该SQL语句在目标端执行时,系统 不翻译为Where子句,而是通过保存在目标端的行映射表获得对应目标端该记录 的所在位置的rowid,从而在目标端通过rowid能够直接定位于该数据需要写入的 位置,避免了大量的索引查找时间。
权利要求
1、一种异构环境中复制数据库数据的方法,特征在于,通过对源端数据库的日志进行分析,获取引起源端数据库变化的SQL语句,并把这些SQL语句按照事务进行组织,然后将这些组织好的SQL语句传输到目标端数据库,并在目标端数据库按照其在源端数据库执行的顺序来执行这些SQL语句,实现数据库数据的复制,数据复制步骤如下1)日志获取和分析由日志分析模块实时读取源端数据库的控制文件,分析检查引起源端数据库改变的SQL语句执行,如果有,就将引起源端数据库改变的SQL语句保存在一个文件中;对数据的获取是通过安装在数据库源端的代理模块定时分析数据库重做日志来获取数据库源端的交易类型及数据的,代理通过定期检查数据库控制文件中记录的当前SCN号来判断源端数据库是否有新的交易产生,这样避免每次检都通过读取日志文件来判断是否有新的交易产生时造成的系统影响,在控制文件中确认有新的交易产生时,可以同时获得当前的重做日志组,以及最新日志在日志文件的最新位置,代理模块根据这些信息将上次获取时记录的日志位置与本次读取的最新位置之间的日志读取并加以分析,然后将这些数据保存在在线日志Cache文件中,等待下一步作交易合成处理;2)SQL语句的合成将分析后得到的SQL语句进行重组,为了提高系统的可控制性、保证逻辑完整性、避免数据丢失,SQL语句按照事务进行组织,以保证只复制提交的交易SQL语句;3)操作的传输在传输过程中数据在传输之前首先存入源端数据库的Cache,传输进程从Cache中按照先进先出的原则读取交易数据封装为TCP/IP数据包传送给目标端数据库的导入进程,在封装的数据包的包头部分描述了包的特征信息,在目标端数据库,导入进程在收到传输的交易数据包后,首先根据包头描述包的特征信息进行传输的合法性检查,判断是否传输完整,如果传输完整,则存入队列,接着由导入进程从队列中严格按照其在源端数据库的执行顺序装载交易信息;如果传输不完整,则给源端数据库导出进程发送一个重传请求;4)当源端数据库和目标端数据库为不同数据库品牌的数据库时,预先在代理上设置其数据库类型,当传输结束后在目标端进行SQL语句转换。
2、根据理要求l所述的方法,特征在于,交易事务中采用标准SQL语句执行 Where子句操作,系统查询定位目标记录所在的数据文件的位置信息是通过行映射的方式实现记录的快速定位当从源端日志文件中读取SQL语句时,将同时获得该语句对应记录的rowid;当该SQL语句在目标端执行时,通过保存在目标端的行 映射表获得对应目标端该记录的所在位置的rowid,从而在目标端通过rowid直接 定位于该数据需要写入的位置。
全文摘要
本发明公开了一种在异构环境中实现数据库数据复制的方法,该方法是通过对源端数据库的日志进行分析,获取引起源端数据库变化的SQL语句,并把这些SQL语句按照事务进行组织,然后将这些组织好的SQL语句传输到目标端数据库,并在目标端数据库按照其在源端数据库执行的顺序来执行这些SQL语句,实现数据库数据的复制。该方法能够适应异构环境,对源端和目标端的存储设备、服务器、操作系统和数据库软件没有同构要求。该方法具有适用性好,占用系统资源和网络带宽资源少的优点。
文档编号G06F11/14GK101187888SQ20071011509
公开日2008年5月28日 申请日期2007年12月11日 优先权日2007年12月11日
发明者王守昊, 苑鸿剑 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1