CN103870357A - 一种进行数据复制的方法及系统 - Google Patents

一种进行数据复制的方法及系统 Download PDF

Info

Publication number
CN103870357A
CN103870357A CN201210558331.8A CN201210558331A CN103870357A CN 103870357 A CN103870357 A CN 103870357A CN 201210558331 A CN201210558331 A CN 201210558331A CN 103870357 A CN103870357 A CN 103870357A
Authority
CN
China
Prior art keywords
transaction
sql statement
database system
target database
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201210558331.8A
Other languages
English (en)
Inventor
彭庆军
杜怀忠
郭强
田菁菁
李�远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Group Henan Co Ltd
Original Assignee
China Mobile Group Henan Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Group Henan Co Ltd filed Critical China Mobile Group Henan Co Ltd
Priority to CN201210558331.8A priority Critical patent/CN103870357A/zh
Publication of CN103870357A publication Critical patent/CN103870357A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明实施例涉及数据库技术领域,尤其涉及一种进行数据复制的方法及系统,用以解决现有技术中当源数据库和目标数据库处于异构环境下时,无法进行数据复制的问题,本发明实施例的方法包括:源数据库系统从日志文件中获取每条结构化查询语言SQL语句;所述源数据库系统将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。本发明实施例进行数据复制时只是复制的日志文件中的SQL语句,这种复制方式可以在异构环境下实施,解决了现有技术中当源数据库和目标数据库处于异构环境下时,无法进行数据复制的问题。

Description

一种进行数据复制的方法及系统
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种进行数据复制的方法及系统。
背景技术
随着应用系统的不断发展,系统对于数据库的依赖与日俱增,目前无论金融、政府、石化、电力、教育、医疗还是企业系统,无一例外的出现了数据库的身影,目前应用系统都需要通过数据库来保证交易的完整性以及交易完成的效率,而数据库复制技术为保证各单位的总部和各分部的数据一致提供了支持。
在进行数据复制时会涉及到多种技术,如:SAN(Storage Area Network,即存储区域网络)、NAS(Network Attached Storage,网络附加存储)技术、远程镜像技术、基于IP的SAN的互连技术、快照技术等。
但是,现有的数据库复制技术主要是基于存储和网络的底层复制,仅适用于同构环境,即要求主备系统的两端主机、操作系统、数据库版本等环境要求一致,在异构环境下无法进行复制。
综上,当源数据库和目标数据库处于异构环境下时,无法进行数据复制。
发明内容
本发明实施例提供一种数据复制的方法及系统,用以解决现有技术中存在的当源数据库和目标数据库处于异构环境下时,无法进行数据复制的问题。
本发明实施例提供的一种进行数据复制的方法,包括:
源数据库系统从日志文件中获取每条结构化查询语言SQL语句;
所述源数据库系统将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
较佳地,所述源数据库系统根据以下步骤将需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统:
针对一个需要复制的交易,所述源数据库系统将该交易对应的SQL语句存储到该交易对应的软件的内存中;
所述源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统。
较佳地,所述源数据库系统根据以下步骤将每个交易对应的SQL语句存储到对应软件的内存中:
所述源数据库系统通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中;
所述源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统,包括:
针对一个软件,所述源数据库系统按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述SQL语句封装成一个数据包后发送给目标数据库系统。
本发明实施例提供的一种进行数据复制的方法,包括:
目标数据库系统接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
所述目标数据库系统将所述数据包中的每个交易对应的SQL语句装载到目标数据库中。
较佳地,针对一个数据包,所述目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句装载到所述目标数据库中该数据包对应的软件的内存中:
针对该数据包中的一个交易,所述目标数据库系统根据配置文件将该交易对应的SQL语句分发到该交易对应的内存队列中;
所述目标数据库系统将该数据包中的每个交易对应的SQL语句装载到目标数据库中,包括:
所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中。
较佳地,针对一个数据包,所述目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句分发到对应的内存队列中:
所述目标数据库系统通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中;
所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中,包括:
针对一个内存队列,所述目标数据库系统按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的SQL语句装载到所述目标数据库中。
较佳地,所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,包括:
所述目标数据库系统在从所述内存队列中读取接收的交易对应的SQL语句时,若内存出错,则中断读取;
所述目标数据库系统将所述内存队列中的交易对应的SQL语句记录到内存错误文件中,在内存恢复正常后,将所述内存错误文件的交易对应的SQL语句存储到对应的内存队列中;
所述目标数据库系统继续从所述内存队列中读取中断前未读取的交易对应的SQL语句,并装载到所述目标数据库中。
本发明实施例提供的一种进行数据复制的系统,包括:
获取模块,用于从日志文件中获取每条结构化查询语言SQL语句;
发送模块,用于将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
本发明实施例提供的一种进行数据复制的系统,包括:
接收模块,用于接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
装载模块,用于将所述数据包中的每个交易对应的SQL语句装载到目标数据库中。
本发明实施例中源数据库系统从日志文件中获取每条结构化查询语言SQL语句,并将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统,由于本发明实施例进行数据复制时只是复制的日志文件中的SQL语句,这种复制方式可以在异构环境下实施,解决了现有技术中当源数据库和目标数据库处于异构环境下时,无法进行数据复制的问题。
附图说明
图1为本发明实施例进行数据复制时源数据库系统的操作流程图;
图2为本发明实施例进行数据复制时目标数据库系统的操作流程图;
图3为本发明实施例进行数据复制的方法流程图;
图4为本发明实施例以交易为单位对数据进行复制的示意图;
图5为本发明实施例按照交易顺序对数据进行复制的示意图;
图6为本发明实施例提供的进行数据复制的源数据库系统结构图;
图7为本发明实施例提供的进行数据复制的目标数据库系统结构图。
具体实施方式
本发明实施例中源数据库系统从日志文件中获取每条结构化查询语言SQL语句,并将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统,由于本发明实施例进行数据复制时只是复制的日志文件中的SQL语句,这种复制方式可以在异构环境下实施,解决了现有技术中当源数据库和目标数据库处于异构环境下时,无法进行数据复制的问题。
下面结合说明书附图对本发明实施例作进一步详细描述。
本发明实施例是基于对日志文件中结构化查询语言(Structured QueryLanguage,SQL)语句的复制,在复制过程中不是复制每个SQL语句,而是对抓取的数据进行交易整合后以交易(Transaction)为单位进行复制,这种基于逻辑的复制方式使得源数据库系统对数据的装载更加容易控制。
如图1所示,为本发明实施例进行数据复制时源数据库系统的操作流程图,包括以下步骤:
S101:源数据库系统从日志文件中获取每条结构化查询语言SQL语句;
S102:源数据库系统将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
在具体实施过程中,可以通过在源数据库系统,如Oracle系统,安装Agent进程,利用该Agent进程对日志文件进行监控,在发现日志有改变时及时对目标数据库进行更新。当应用系统在源数据库端对数据库进行操作时,操作信息都将在Redo Log(重做日志)中保存,可以通过Agent进程对实时获取的RedoLog日志进行分析,获得本次操作的交易对应的每条SQL语句,然后将这些交易数据进行装载,并通过网络传送到源数据库系统,具体的,可以将这些交易数据封装成数据包后通过TCP/IP协议传递给目标数据库系统;在装载中,可以采用DXF数据格式的装载方式,该数据格式可以直接转换为Oracle的内部数据表达格式,有利于提高装载速度,减少资源占用。
较佳地,步骤S102中需要复制的交易为已提交的交易。
这里的交易是指作为单个逻辑工作单元执行的一系列操作,已提交(commit)的交易是指记录到源数据库中的交易。
在具体实施过程中,由于在Oracle Redo Log中,属于一个交易的多条SQL指令是非连续存储的,多个交易的SQL之间是相互穿插的,为了提高数据库系统的可控性,保证数据复制的逻辑完整性,最好在复制时以一个交易为单位进行复制,这样可以使数据在目标数据库系统的装载更加容易控制。
对于复制的数据而言,只有那些已提交(commit)的数据对于目标数据库系统是有意义的,而对于那些撤回(Rollback)的数据无需复制到目标数据库。另外,在进行数据复制时,还可以只复制交易操作的结果数据,具体地,可以对从日志文件中获取的SQL语句以交易为单位进行合成处理,并过滤掉交易过程中产生的过程数据,只保留结果数据,再从保留的结果数据中选择已提交的交易数据。
较佳地,步骤S101中源数据库系统从日志文件中获取每条SQL语句,包括:
源数据库系统确定最新日志在日志文件的最新位置,并获取最新日志以及最近一次获取SQL语句时确定的最新位置与本次确定的最新位置之间的日志所对应的每条SQL语句。
在具体实施过程中,可以通过Agent进程定期检查Oracle控制文件(Controle file)中记录的当前系统修改号(system change number,SCN)来判断Oracle系统是否有新的交易产生,在确认有新的交易产生时,可以同时获得当前的Redo Log组,以及最新日志在日志文件的最新位置,通过Agent进程读取获得的Redo Log组中的最新日志,以及,上次获取SQL语句时记录的最新位置与本次获得的最新位置之间的日志,然后,对获得的日志进行分析,得到获得的日志所对应的每条SQL语句。
较佳地,步骤S102中,源数据库系统根据以下步骤将需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统:
针对一个需要复制的交易,源数据库系统将该交易对应的SQL语句存储到该交易对应的软件的内存中;
所述源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统。
较佳地,源数据库系统根据以下步骤将每个交易对应的SQL语句存储到对应软件的内存中:
源数据库系统通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中;
源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统,包括:
针对一个软件,源数据库系统按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述SQL语句封装成一个数据包后发送给目标数据库系统。
在具体实施过程中,为避免交易传输过程中磁盘输入输出(Input/Output,I/O)拖慢同步复制效率,可以采用基于内存数据的传输方式。具体地,在传输之前可以通过Agent进程查询配置文件的同步数据列表,如mapping.ini文件,判断合成出来的交易所对应的软件,把分析得到的SQL语句以交易为单位按照交易顺序存入源数据库系统中对应软件的内存队列中,采用传输进程(Export Process),如各套软件的sender进程,从本地软件的内存队列中按照交易顺序读取数据,并将读取的数据封装为TCP/IP数据包传送给目标数据库系统;这里,每套软件对应一个数据包,各套软件的sender进程将数据包并行发送给目标数据库系统;这里,可以根据SCN来确定交易顺序。
本实施例与其它数据复制技术相比,只需进行一次日志文件的获取及分析,将分析出来的SQL语句,通过配置列表分发到各软件的内存中,减少了重复的工作,降低了系统资源占用,可以有效提高整个数据复制系统的性能;此外,本实施例采用从内存到内存的传输方式,可以减少I/O资源消耗,提高容灾复制的速度,实现对数据的实时复制。
如图2所示,为本发明实施例进行数据复制时目标数据库系统的操作流程图,包括以下步骤:
S201:目标数据库系统接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
S202:目标数据库系统将接收的数据包中的每个交易对应的SQL语句装载到目标数据库中。
这里,与图1中源数据库系统的操作相对应,本实施例中一个数据包中的交易与一个软件对应,可以并行接收不同软件对应的不同的数据包,在具体实施过程中,由于接收的不同的数据包对应不同的软件,可以将每个数据包分发到对应软件的内存队列中。
这里,目标数据库系统接收的数据包的包头(Header)部分描述了包的大小,在具体实施过程中,目标数据库在接收到数据包后,首先比较包头描述的包的大小与接收的实际数据包的大小进行比较,判断数据是否传输完整,若传输完整则进行下面的装载等操作,若传输不完整,则通知源数据库系统对数据进行重新传输。
较佳地,步骤S202中,针对一个数据包,目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句装载到目标数据库中该数据包对应的软件的内存中:
针对该数据包中的一个交易,目标数据库系统根据配置文件将该交易对应的SQL语句分发到该交易对应的内存队列中;
目标数据库系统将该数据包中的每个交易对应的SQL语句装载到目标数据库中,包括:
目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中。
较佳地,针对一个数据包,目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句分发到对应的内存队列中:
目标数据库系统通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中;
目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中,包括:
针对一个内存队列,目标数据库系统按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的SQL语句装载到目标数据库中。
在具体实施过程中,针对接收的一个数据包,还可以对该数据包中的交易进行分队,将该数据包中的交易分发到该数据包对应软件的不同内存队列中,具体地,可以通过Agent进程查询配置文件,如cfg.queue文件,判断该数据包中每个交易对应的内存队列,将每个交易按照交易顺序分发到对应的内存队列中,还可以跟不同队列对应的loader进程相关联,通过loader进程按照交易顺序从内存读取交易数据,即交易对应的SQL语句,并将读取的交易数据装载到目标数据库中;
这里的交易顺序可以根据SCN确定,保证交易的先后顺序,也即严格按照源数据库的交易执行顺序在目标数据库进行加载,可以保证数据复制的准确性。
较佳地,目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,包括:
目标数据库系统在从内存队列中读取接收的交易对应的SQL语句时,若内存出错,则中断读取;
目标数据库系统将内存队列中的交易对应的SQL语句记录到内存错误文件中,在内存恢复正常后,将内存错误文件的交易对应的SQL语句存储到对应的内存队列中;
目标数据库系统继续从内存队列中读取中断前未读取的交易对应的SQL语句,并装载到所述目标数据库中。
在具体实施过程中,可以通过EMON进程监控内存环境,当内存出错时,如出现内存泄漏、内存读写越界、内存重复放释、空指针引用等,将此时内存中的交易数据写入内存错误文件里,在内存恢复正常后,再从内存错误文件里读取交易数据到内存中,并继续进行数据装载,进一步地,可以记录内存出错时处理的交易的SCN,在内存恢复正常后,根据记录的SCN继续装载数据。在这个过程中,若发现数据损坏或数据不一致,可以通过EMON进程获得错误数据的最小的SCN和最大的SCN,并通知源数据库系统将最小的SCN和最大的SCN对应的交易以及它们之间的SCN对应的交易发送过来,目标数据库系统在接收到源数据库系统再次发送的交易数据后,再对接收的数据进行装载,完成整个数据复制操作。
如图3所示,为本发明实施例进行数据复制的方法流程图,包括:
S301:源数据库系统从日志文件中获取每条SQL语句,并将获取的SQL语句以交易为单位进行合成;
S302:源数据库系统通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中;
S303:针对一个软件,源数据库系统按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述交易对应的SQL语句封装成一个数据包后发送给目标数据库系统;
S304:目标数据库系统接收源数据库系统发送的数据包后,针对一个数据包,通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中;
S305:针对一个内存队列,目标数据库系统按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的每个交易对应的SQL语句装载到目标数据库中。
如图4所示,为本发明实施例以交易为单位对数据进行复制的示意图,在具体实施过程中,本实施例通过将获取的SQL语句合成交易,然后以交易为单位对数据进行基于逻辑的复制,可以有效减少数据传输中的错误,在传输时,采用基于内存的传输方式,将需要复制的交易分发到各软件的内存队列中,由目标数据库系统进行接收并分发到目标数据库系统的内存队列中,从内存队列中读取交易数据并装载到目标数据库中。
如图5所示,为本发明实施例按照交易顺序对数据进行复制的示意图,在进行数据复制过程中,按照源数据库端的交易执行顺序在目标数据库端进行装载,严格的I/O顺序是保证系统逻辑正确的关键因素,在具体实施过程中,可以通过交易的SCN号来对交易进行排序,并严格保证源数据库端先提交(Commit)的交易在目标数据库端先装载,具体地,可以通过传输进程(Export Process),如sender进程,从各软件的内存队列中按照交易顺序读取交易数据,并封装为TCP/IP数据包,传送给目标数据库端的输入(Import)进程,如Agent进程,Agent进程在收到传输的交易数据包后,首先存入内存队列(Queue),然后由每个内存队列关联的loader进程从内存Queue中严格按照交易的顺序读取并装载交易信息。
基于同一发明构思,本发明实施例中还提供了一种与进行数据复制的方法对应的进行数据复制的系统,由于该系统解决问题的原理与本发明实施例进行数据复制的方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。
如图6所示,为本发明实施例提供的进行数据复制的源数据库系统结构图,包括:
获取模块61,用于从日志文件中获取每条结构化查询语言SQL语句;
发送模块62,用于将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
较佳地,所述发送模块62具体用于:针对一个需要复制的交易,将该交易对应的SQL语句存储到该交易对应的软件的内存中,在将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统。
较佳地,所述发送模块62具体用于:
通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中,并针对一个软件,按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述SQL语句封装成一个数据包后发送给目标数据库系统。
如图7所示,为本发明实施例提供的进行数据复制的目标数据库系统结构图,包括:
接收模块71,用于接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
装载模块72,用于将所述数据包中的每个交易对应的SQL语句装载到目标数据库中。
较佳地,所述装载模块72具体用于:
针对一个数据包,根据配置文件将该数据包中每个交易对应的SQL语句分发到交易对应的内存队列中,并分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中。
较佳地,所述装载模块72具体用于:
针对一个数据包,通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中,并针对一个内存队列,按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的SQL语句装载到所述目标数据库中。
较佳地,所述装载模块72还用于:在从所述内存队列中读取每个交易对应的SQL语句时,若内存出错,则中断读取;
所述系统还包括:
内存错误处理模块73,用于在内存出错时,将内存队列中的交易对应的SQL语句记录到内存错误文件中,在内存恢复正常后,将该内存错误文件的交易对应的SQL语句存储到对应的内存队列中;
所述装载模块72还用于:
在所述内存错误处理模块将所述内存错误文件的交易对应的SQL语句存储到对应的内存队列中后,继续从所述内存队列中读取中断前未读取的交易对应的SQL语句,并装载到所述目标数据库中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种进行数据复制的方法,其特征在于,该方法包括:
源数据库系统从日志文件中获取每条结构化查询语言SQL语句;
所述源数据库系统将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
2.如权利要求1所述的方法,其特征在于,所述源数据库系统从日志文件中获取每条SQL语句,包括:
所述源数据库系统确定最新日志在日志文件的最新位置,并获取最新日志以及最近一次获取SQL语句时确定的最新位置与本次确定的最新位置之间的日志所对应的每条SQL语句。
3.如权利要求1所述的方法,其特征在于,所述需要复制的交易为已提交的交易。
4.如权利要求1所述的方法,其特征在于,所述源数据库系统根据以下步骤将需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统:
针对一个需要复制的交易,所述源数据库系统将该交易对应的SQL语句存储到该交易对应的软件的内存中;
所述源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统。
5.如权利要求4所述的方法,其特征在于,所述源数据库系统根据以下步骤将每个交易对应的SQL语句存储到对应软件的内存中:
所述源数据库系统通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中;
所述源数据库系统将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统,包括:
针对一个软件,所述源数据库系统按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述SQL语句封装成一个数据包后发送给目标数据库系统。
6.一种进行数据复制的方法,其特征在于,该方法包括:
目标数据库系统接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
所述目标数据库系统将所述数据包中的每个交易对应的SQL语句装载到目标数据库中。
7.如权利要求6所述的方法,其特征在于,针对一个数据包,所述目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句装载到所述目标数据库中该数据包对应的软件的内存中:
针对该数据包中的一个交易,所述目标数据库系统根据配置文件将该交易对应的SQL语句分发到该交易对应的内存队列中;
所述目标数据库系统将该数据包中的每个交易对应的SQL语句装载到目标数据库中,包括:
所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中。
8.如权利要求7所述的方法,其特征在于,针对一个数据包,所述目标数据库系统根据以下步骤将该数据包中每个交易对应的SQL语句分发到对应的内存队列中:
所述目标数据库系统通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中;
所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中,包括:
针对一个内存队列,所述目标数据库系统按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的SQL语句装载到所述目标数据库中。
9.如权利要求7所述的方法,其特征在于,所述目标数据库系统分别从每个内存队列中读取接收的交易对应的SQL语句,包括:
所述目标数据库系统在从所述内存队列中读取接收的交易对应的SQL语句时,若内存出错,则中断读取;
所述目标数据库系统将所述内存队列中的交易对应的SQL语句记录到内存错误文件中,在内存恢复正常后,将所述内存错误文件的交易对应的SQL语句存储到对应的内存队列中;
所述目标数据库系统继续从所述内存队列中读取中断前未读取的交易对应的SQL语句,并装载到所述目标数据库中。
10.一种进行数据复制的系统,其特征在于,该系统包括:
获取模块,用于从日志文件中获取每条结构化查询语言SQL语句;
发送模块,用于将获取的SQL语句中需要复制的交易对应的SQL语句封装成数据包发送给目标数据库系统。
11.如权利要求10所述的系统,其特征在于,所述发送模块具体用于:
针对一个需要复制的交易,将该交易对应的SQL语句存储到该交易对应的软件的内存中,在将每个软件的内存中的SQL语句封装成一个数据包后,将封装的数据包发送给目标数据库系统。
12.如权利要求11所述的系统,其特征在于,所述发送模块具体用于:
通过查询配置文件,判断每个交易对应的软件,并将每个交易对应的SQL语句按照交易顺序分发到对应软件的内存中,并针对一个软件,按照交易顺序读取该软件中需要复制的交易对应的SQL语句,将所述SQL语句封装成一个数据包后发送给目标数据库系统。
13.一种进行数据复制的系统,其特征在于,该系统包括:
接收模块,用于接收源数据库系统发送的需要复制的交易对应的SQL语句封装成的数据包;
装载模块,用于将所述数据包中的每个交易对应的SQL语句装载到目标数据库中。
14.如权利要求13所述的系统,其特征在于,所述装载模块具体用于:
针对一个数据包,根据配置文件将该数据包中每个交易对应的SQL语句分发到交易对应的内存队列中,分别从每个内存队列中读取接收的交易对应的SQL语句,并装载到目标数据库中。
15.如权利要求14所述的系统,其特征在于,所述装载模块具体用于:
针对一个数据包,通过查询配置文件,判断该数据包中每个交易对应的内存队列,将该数据包中每个交易对应的SQL语句按照交易顺序分发到对应的内存队列中,并针对一个内存队列,按照交易顺序读取该内存队列中的每个交易对应的SQL语句,并将读取的SQL语句装载到所述目标数据库中。
16.如权利要求14所述的系统,其特征在于,所述装载模块还用于:在从内存队列中读取接收的交易对应的SQL语句时,若内存出错,则中断读取;
所述系统还包括:
内存错误处理模块,用于在内存出错时,将所述内存队列中的交易对应的SQL语句记录到内存错误文件中,在内存恢复正常后,将所述内存错误文件的交易对应的SQL语句存储到对应的内存队列中;
所述装载模块还用于:
在所述内存错误处理模块将所述内存错误文件的交易对应的SQL语句存储到对应的内存队列中后,继续从所述内存队列中读取中断前未读取的交易对应的SQL语句,并装载到所述目标数据库中。
CN201210558331.8A 2012-12-17 2012-12-17 一种进行数据复制的方法及系统 Pending CN103870357A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210558331.8A CN103870357A (zh) 2012-12-17 2012-12-17 一种进行数据复制的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210558331.8A CN103870357A (zh) 2012-12-17 2012-12-17 一种进行数据复制的方法及系统

Publications (1)

Publication Number Publication Date
CN103870357A true CN103870357A (zh) 2014-06-18

Family

ID=50908917

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210558331.8A Pending CN103870357A (zh) 2012-12-17 2012-12-17 一种进行数据复制的方法及系统

Country Status (1)

Country Link
CN (1) CN103870357A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679841A (zh) * 2015-02-11 2015-06-03 北京京东尚科信息技术有限公司 一种消费端数据流复制方法及系统
CN105045678A (zh) * 2015-07-09 2015-11-11 小米科技有限责任公司 数据库恢复方法及装置
CN105574020A (zh) * 2014-10-14 2016-05-11 阿里巴巴集团控股有限公司 一种数据库操作方法和装置
CN106302473A (zh) * 2016-08-18 2017-01-04 深圳市金证科技股份有限公司 一种SQL Server数据库的复制维护方法及系统
CN106484568A (zh) * 2016-09-30 2017-03-08 郑州云海信息技术有限公司 一种数据灾难备份方法及其系统
CN108288996A (zh) * 2018-04-18 2018-07-17 惠州学院 基于无人机拍摄视频高保真远程传送方法、装置、存储介质及电子设备
CN110597891A (zh) * 2018-06-12 2019-12-20 武汉斗鱼网络科技有限公司 MySQL聚合为PostgreSQL数据库的设备、系统、方法、存储介质
TWI712879B (zh) * 2018-10-29 2020-12-11 開曼群島商創新先進技術有限公司 容災資料處理方法、裝置、設備及系統
CN112783903A (zh) * 2019-11-07 2021-05-11 北京沃东天骏信息技术有限公司 生成更新日志的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187888A (zh) * 2007-12-11 2008-05-28 浪潮电子信息产业股份有限公司 一种异构环境中复制数据库数据的方法
US20080147596A1 (en) * 2006-12-18 2008-06-19 Mckenna William Method and system for improving sql database query performance
CN101944114A (zh) * 2010-09-16 2011-01-12 深圳天源迪科信息技术股份有限公司 内存数据库和物理数据库间的数据同步方法
CN102110161A (zh) * 2011-02-24 2011-06-29 中兴通讯股份有限公司 备份、恢复多业务数据库的方法及装置
CN102393860A (zh) * 2011-12-06 2012-03-28 方正国际软件有限公司 数据库数据迁移系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080147596A1 (en) * 2006-12-18 2008-06-19 Mckenna William Method and system for improving sql database query performance
CN101187888A (zh) * 2007-12-11 2008-05-28 浪潮电子信息产业股份有限公司 一种异构环境中复制数据库数据的方法
CN101944114A (zh) * 2010-09-16 2011-01-12 深圳天源迪科信息技术股份有限公司 内存数据库和物理数据库间的数据同步方法
CN102110161A (zh) * 2011-02-24 2011-06-29 中兴通讯股份有限公司 备份、恢复多业务数据库的方法及装置
CN102393860A (zh) * 2011-12-06 2012-03-28 方正国际软件有限公司 数据库数据迁移系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105574020B (zh) * 2014-10-14 2020-02-21 阿里巴巴集团控股有限公司 一种数据库操作方法和装置
CN105574020A (zh) * 2014-10-14 2016-05-11 阿里巴巴集团控股有限公司 一种数据库操作方法和装置
CN104679841B (zh) * 2015-02-11 2018-06-08 北京京东尚科信息技术有限公司 一种消费端数据流复制方法及系统
CN104679841A (zh) * 2015-02-11 2015-06-03 北京京东尚科信息技术有限公司 一种消费端数据流复制方法及系统
CN105045678A (zh) * 2015-07-09 2015-11-11 小米科技有限责任公司 数据库恢复方法及装置
CN105045678B (zh) * 2015-07-09 2018-10-26 小米科技有限责任公司 数据库恢复方法及装置
CN106302473A (zh) * 2016-08-18 2017-01-04 深圳市金证科技股份有限公司 一种SQL Server数据库的复制维护方法及系统
CN106302473B (zh) * 2016-08-18 2019-09-17 深圳市金证科技股份有限公司 一种SQL Server数据库的复制维护方法及系统
CN106484568A (zh) * 2016-09-30 2017-03-08 郑州云海信息技术有限公司 一种数据灾难备份方法及其系统
CN108288996A (zh) * 2018-04-18 2018-07-17 惠州学院 基于无人机拍摄视频高保真远程传送方法、装置、存储介质及电子设备
CN110597891A (zh) * 2018-06-12 2019-12-20 武汉斗鱼网络科技有限公司 MySQL聚合为PostgreSQL数据库的设备、系统、方法、存储介质
CN110597891B (zh) * 2018-06-12 2022-06-21 武汉斗鱼网络科技有限公司 MySQL聚合为PostgreSQL数据库的设备、系统、方法、存储介质
TWI712879B (zh) * 2018-10-29 2020-12-11 開曼群島商創新先進技術有限公司 容災資料處理方法、裝置、設備及系統
CN112783903A (zh) * 2019-11-07 2021-05-11 北京沃东天骏信息技术有限公司 生成更新日志的方法和装置
CN112783903B (zh) * 2019-11-07 2024-04-05 北京沃东天骏信息技术有限公司 生成更新日志的方法和装置

Similar Documents

Publication Publication Date Title
CN103870357A (zh) 一种进行数据复制的方法及系统
US11397709B2 (en) Automated configuration of log-coordinated storage groups
US10296606B2 (en) Stateless datastore—independent transactions
US10621049B1 (en) Consistent backups based on local node clock
AU2012273366B2 (en) Managing replicated virtual storage at recovery sites
US10303795B2 (en) Read descriptors at heterogeneous storage systems
CN108681569B (zh) 一种数据自动分析系统及其方法
Ruscio et al. Dejavu: Transparent user-level checkpointing, migration, and recovery for distributed systems
CN114127693A (zh) 虚拟存储系统中的数据恢复
JP5496839B2 (ja) 複製データベースのハイブリッド・レプリケーションのための装置、コンピュータ実装方法及びコンピュータ・ソフトウエア・プログラム
Li Alluxio: A virtual distributed file system
Grover et al. Data Ingestion in AsterixDB.
CN114041112A (zh) 虚拟存储系统架构
CN101187888A (zh) 一种异构环境中复制数据库数据的方法
US20140067884A1 (en) Atomic incremental load for map-reduce systems on append-only file systems
Crawl et al. A provenance-based fault tolerance mechanism for scientific workflows
AU2012273366A1 (en) Managing replicated virtual storage at recovery sites
CN104714858A (zh) 数据备份方法及装置、数据恢复方法及装置
CN103838847A (zh) 一种面向海云协同网络计算环境的数据组织方法
JP6987340B2 (ja) データベースのデータ変更要求処理方法及び装置
Srinivasa et al. Guide to high performance distributed computing
CN103412739A (zh) 一种基于地震数据处理的数据传输方法及系统
US11537455B2 (en) Schema management using an event stream
CN114510531A (zh) 数据库同步方法、装置、电子设备和存储介质
Ross et al. Storage systems and input/output: Organizing, storing, and accessing data for scientific discovery. report for the doe ascr workshop on storage systems and i/o.[full workshop report]

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140618