CN104809199B - 一种数据库同步的方法和装置 - Google Patents
一种数据库同步的方法和装置 Download PDFInfo
- Publication number
- CN104809199B CN104809199B CN201510201728.5A CN201510201728A CN104809199B CN 104809199 B CN104809199 B CN 104809199B CN 201510201728 A CN201510201728 A CN 201510201728A CN 104809199 B CN104809199 B CN 104809199B
- Authority
- CN
- China
- Prior art keywords
- target
- database
- server
- data
- target side
- 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.)
- Active
Links
Abstract
本发明实施例涉及数据库技术领域,尤其涉及一种数据库同步的方法和装置,用于实现当某个目标数据库发生变化时,其它目标数据库的数据同步进程不会被影响。本发明实施例中,由于源端服务器连接目标端服务器,目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,而不需要重启源端服务器,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步进程也不会受影响。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据库同步的方法和装置。
背景技术
电子商务日益深入人心,实时交易系统的数据量也与日俱增,然而单一数据库的处理能力有限,因此需要基于源数据库,按照业务或功能建立多个目标数据库,从而降低对源数据库的访问压力。当源数据库中的某个数据表发生变化时,需要保证关注该数据表的目标数据库中的该数据表与源数据库中的该数据表发生一致的变化,因此需要一个同步装置来实现目标数据库与源数据库之间数据的同步。
现有技术中实现目标数据库与源数据库之间数据同步的方法为:设立一独立服务器,同时连接源数据库和目标数据库;通过该独立服务器实时获取源数据库产生的数据变更事件;并将其转化为标准结构化查询语句(Structured Query Language,简称SQL),并传输至目标数据库。
但是现有技术中目标数据库经常会有多个,当上述方案通过一个独立服务器连接多个目标数据库时,由于目标数据库会经常发生变化,如新增或修改目标数据库等,此时,在上述方案中需要重启该独立服务器,进而导致其他目标数据库同步数据的进程受影响。
综上所述,亟需一种数据库同步的方法和装置,用于实现多个目标数据库与源数据之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步进程不会受影响。
发明内容
本发明实施例提供一种数据库同步的方法和装置,用于实现多个目标数据库与源数据之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步进程不会受影响。
本发明实施例提供一种数据库同步的方法,包括以下步骤:
源端服务器实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件对应一个全局标识号;
源端服务器接收目标端服务器发送的请求消息;其中,请求消息中携带目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;目标端服务器配置有目标数据库的配置参数;
源端服务器根据第一全局标识号,将第一全局标识号之后的数据变更事件携带于响应消息中,并将响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
本发明实施例提供一种数据库同步的装置,包括源端服务器,与源端服务器连接的目标端服务器,源端服务器,包括:
第一处理单元,用于实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件对应一个全局标识号;
接收单元,用于接收目标端服务器发送的请求消息;其中,请求消息中携带目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;目标端服务器配置有目标数据库的配置参数;
第二处理单元,用于根据第一全局标识号,将第一全局标识号之后的数据变更事件携带于响应消息中;
发送单元,用于将响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
本发明实施例中,源端服务器实时捕获源数据库产生的数据变更事件;源端服务器接收目标端服务器发送的请求消息,并根据请求消息将已同步的数据变更事件的第一全局标识号之后的数据变更事件携带于响应消息中发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作;其中,目标端服务器配置有目标数据库的配置参数。
进一步由于目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的系统架构示意图;
图2为本发明实施例提供的一种数据库同步的方法流程示意图;
图3为本发明实施例还提供一种数据库同步的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例适用的系统架构示意图。该系统架构中可包括多个源数据库101、源端服务器102、多个目标端服务器103、多个目标数据库104,图1中仅示意性示出了一种系统结构示意图,较佳的,本发明实施例中的源端服务器102也可为多个,用于减轻该源端服务器102所承受的负荷。
本发明实施例中源端服务器可连接一个源数据库,也可连接多个源数据库,源端服务器可连接一个目标端服务器,也可连接多个目标端服务器,每个目标端服务器可连接多个目标数据库,也可每个目标端服务器仅连接一个目标数据库。
本发明实施例用于实现源数据库101与目标数据库104之间的数据同步。
基于图1所示的系统架构,图2示出了本发明实施例提供的一种数据库同步的方法,包括以下步骤:
步骤201,源端服务器实时捕获源数据库产生的数据变更事件。
其中,每条数据变更事件对应一个全局标识号。
方式一:源端中继服务器无需连接源数据库,实时获取的源数据库保存的归档日志文件,解析该归档日志文件,从而间接获取源数据库产生的数据变更事件。如老版本的DB2和Oracle数据库。
方式二:源端中继服务器直接连接源数据库,实时获取源数据库产生的数据变更事件。如新数据库MySql、11.2以上版本的Oracle数据库。
具体来说,源数据库中产生一条数据库变更记录,即该源数据库产生的数据变更事件。每条数据变更事件唯一对应一个全局标识号。
步骤202,源端服务器接收目标端服务器发送的请求消息。
其中,请求消息中携带目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;目标端服务器配置有目标数据库的配置参数。
具体来说,本发明实施例中的第一全局标识号即指目标端服务器对应连接的目标数据库已同步的日期最新的数据变更事件的全局标识号,举个例子,假设当前目标数据库的某个数据表已同步的全局标识号为0000至0015,则可见0015为已同步的数据变更事件中日期最新的数据变更事件的全局标识号,因此,0015即为该为该数据表对应的第一全局标识号。本发明实施例中为了后续引用方便,在此引入第一全局标识号概念,该概念不对本发明实施例具有限定作用。
步骤203,源端服务器根据第一全局标识号,将第一全局标识号之后的数据变更事件携带于响应消息中,并将响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
较佳的,所述目标端服务器对所述目标数据库执行同步操作,具体包括:
所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为所述目标数据库的操作语言所对应格式的数据变更事件,并对所述目标数据库执行同步操作。
又由于源端服务器实时捕获数据变更事件,并将其发送给目标端服务器,且目标端服务器根据目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应格式的数据变更事件,并对目标数据库执行同步操作,因此,目标数据库与源数据库结构或类型不一致时,如源数据库为关系型数据库,目标数据库为非关系型数据库时,目标端服务器可根据目标数据库的类型对数据变更事件进行转换,从而实现了源数据库与目标数据库的同步,进而实现了源数据库与目标数据库结构类型不同时的数据同步。
具体实施中,源数据库连接源端服务器,源端服务器连接目标端服务器,目标端服务器连接目标数据库。当多个源数据库连接至一个源端服务器时,该源端服务器接收所有源数据库产生的数据变更事件。数据变更事件是指由源数据库系统自动记录的对该源数据库进行的所有操作的原始REDO日志。每个数据变更事件均会唯一对应一个全局标识号。
上述步骤201中,源端服务器捕获源数据库产生的数据变更事件,进一步,每条数据变更事件对应一个全局标识号。
具体来说,数据变更事件记录源数据库的数据变更操作记录。每条数据变更事件包括对源数据操作的操作类型、操作参数等。操作类型包括增加、删除、修改等;操作参数包括操作时间、该条由数据变更事件解析而来的数据变更事件对应的全局标识号、源数据库的库名、源数据库中进行操作的数据表的表名、进行操作的数据表的各字段的名称,以及该字段的值等。
较佳的,数据变更事件为二进制形式,源端服务器将多条数据变更事件形成的二进制数据流进行储存,源端服务器将数据变更事件分别存储至硬盘和缓存区。
上述步骤202中,与源端服务器连接的目标端服务器配置有目标数据库的配置参数,配置参数包括与该目标端服务器连接的所有目标数据库标识号、目标数据库的类型等。而且源端服务器至少连接两个目标端服务器。
较佳的,目标端服务器中预先配置有与该目标端服务器对应连接的目标数据库的配置参数,接着目标端服务器加载完成该配置参数之后,目标端服务器向源端服务器发送注册请求,以便进行登录。本发明实施例也支持在目标端服务器的正常运行过程对预先配置的目标数据库的配置参数进行修改,修改之后需对应的该目标端服务器进行设置或重启。
较佳的,当目标数据库发生变动时,如增加、修改或升级某个目标数据库,则仅需对应增加、修改或重启与该新增目标数据库连接的目标端服务器,并对应增加或更改该目标端服务器中的该目标数据库对应的配置参数,之后将该发生变动的目标数据库的配置参数对应加载在与该发生变动的目标数据库连接的目标端服务器中。当该发生变动的目标端服务器参数加载完并进行重启之后,该发生变动的目标端服务器会向源端服务器进行注册。较佳的,目标端服务器每次重启后,均执行注册过程。具体注册过程为:
源端服务器接收目标端服务器发送的注册请求,其中,注册请求是该目标端服务器启动时,加载完与该目标端服务器连接的目标数据库的配置参数之后发送的;源端服务器向该目标端服务器发送注册响应,以使该目标端服务器与源端服务器建立连接。
当发生变动的目标端服务器在源端服务器中注册成功之后,源端服务器与该目标端服务器即建立连接,该发生变动的目标数据库即可与源数据之间进行数据同步。该过程中源端服务器以及与该源端服务器连接的其它目标端服务器均未进行重启。进而与该未进行重启的目标端服务器连接的目标数据库的数据同步进程也不会中断,从而实现多个目标数据库与源数据之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步进程不会被延迟。
具体实施中,目标端服务器向源端服务器发送请求消息,较佳的,该目标端服务器可实时向源端服务器发送请求消息。且,较佳的,目标端服务器发送该请求消息还包括该目标端服务器标识号。
上述步骤203中,源端服务器根据第一全局标识号,确定出第一全局标识号之后的数据变更事件,并将第一全局标识号之后的数据变更事件携带于响应消息中。
较佳的,源端服务器实时捕获源数据库产生的数据变更事件之后,源端服务器将数据变更事件分别存储至硬盘和缓存区,当源端服务器的缓存区包括第一全局标识号时,源端服务器根据第一全局标识号,从缓存区将第一全局标识号之后的数据变更事件携带于响应消息中;当源端服务器的缓存区不包括第一全局标识号时,源端服务器根据第一全局标识号,从硬盘和缓存区将第一全局标识号之后的数据变更事件携带于响应消息中。
具体来说,由于源端服务器的缓存区内存有限,因此仅能存储一部分数据变更事件,基于此,当源端服务器从源数据库中捕获到新的数据变更事件时,可将该数据变更事件同时存储至缓存区和源端服务器的硬盘中。将数据存储至缓存区的速度比将数据存储至硬盘的速度快,但硬盘的容量相对较大,因此硬盘中可持久化存储较多的数据,而缓存区中存储到一定量的数据后,新接收的数据会将历史数据覆盖。
进而,当目标端服务器是新增的,或中断一段较长时间之后再次恢复运行时,所需同步的数据变更事件的全局标识号所对应的时间较早时,可先从硬盘中读取需同步的数据变更事件的全局标识号至硬盘中存储的最新的全局标识号之间的数据变更事件,之后接着从缓存区读取剩余的最新的数据变更事件。然而当目标端服务器处于正常持续工作状态时,由于目标端服务器每隔一较小时间则进行一次同步,因此目标端服务器所需同步的数据变更事件均位于源端服务器的缓存区,进而源端服务器直接从缓存区读取数据变更事件数据流即可。
举个例子,假设硬盘中存储的数据变更事件的全局标识号为从0001至0200,而缓存区由于存储空间有限,且缓存区的存储速度较快,因此缓存区所存储的数据变更事件的全局标识号可为从0180至0250。进一步,当源端服务器接收到目标端服务器发送的请求消息之后,请求消息中携带目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号,第一全局标识号为0150,则源端服务器先从硬盘中确定出第一全局标识号0150至硬盘中最新的数据0200的数据变更事件,接着从缓存区确定出0200至缓存区中最新的数据0250的数据变更事件。并将0150至0250的数据变更事件携带于响应消息中,并将响应消息发送给目标端服务器。
可看出,源端服务器将数据变更事件分别存储至硬盘和缓存区,一方面当目标端服务器为新增或因故中止一段时间之后,均可从源端服务器中的硬盘和缓存区中获取所有历史数据变更事件,从而实现了目标数据库与源数据库之间数据同步的完整性,即避免了因源端服务器的缓存区存储空间有限而造成的部分历史数据变更事件丢失的问题。另一方面,处于持续正常工作状态的目标端服务器从源端服务器的缓存区获取数据变更事件,由于缓存区的存储和读取速度均较快,因此,提高了目标数据库与源数据库之间数据同步的效率。
进一步,本发明实施例中的源端服务器仅对源数据库中产生的原始数据变更事件进行了一次读取操作,之后多个目标端服务器均通过访问源端服务器从而获得数据变更事件,提高了数据同步操作的效率,另一方面避免了多个目标数据库进行数据同步时多次对源数据库进行访问,从而减轻了源数据库的负荷,避免了源数据库性能急剧下降,提高了数据同步的效率。另一方面,本发明中,源端服务器对数据变更事件进行读取,目标端服务器对目标数据库执行数据同步操作,由于功能分离,从而降低了单台服务器的负荷,提高了数据同步的效率。
上述步骤203中,源端服务器根据第一全局标识号,将第一全局标识号之后的数据变更事件携带于响应消息中,并将响应消息发送给目标端服务器之后,较佳的,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应格式的数据变更事件,并对目标数据库执行同步操作。
由于源端服务器将实时捕获数据变更事件,该数据变更事件为一中立的二进制格式,可进而通过目标端服务器转换为其它多种格式,如SQL语句、SDK语句等。目标端服务器具有格式转换功能,当目标端服务器接收到该二进制格式的数据变更事件之后,可根据目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应格式的数据变更事件,并对目标数据库执行同步操作。因此,目标数据库与源数据库结构或类型不一致时,如源数据库为关系型数据库,目标数据库为非关系型数据库时,目标端服务器可根据目标数据库的类型对数据变更事件进行转换,从而实现了源数据库与目标数据库的同步,进而实现了源数据库与目标数据库结构类型不同时的数据同步。
较佳的,本发明实施例的源数据库和目标数据库之间的关系可为以下几种:
(1)源数据库和目标数据库之间可为同类型且同版本数据库,如源数据库为DB2-v9,目标数据库为DB2-v9;
(2)源数据库和目标数据库可为同类型但不同版本数据库,如源数据库为DB2-v9,目标数据库为DB2-v10;
(3)源数据库和目标数据库可为不同类型,如源数据库为DB2,目标数据库为MySql;
(4)源数据库和目标数据库可为结构不一致的异构数据库,如源数据库为关系型数据库DB2,而目标数据库为非关系型数据库,非关系型数据库如MongoDB、Redis等;
(5)较佳的,目标数据库还可为一些非数据库形式的联机系统,如目标数据库的形式可为消息队列、索引文件更新模块等。
较佳的,本发明实施例中的源数据库为关系型数据库,通过本发明实施例所提供的方法可实现异构数据库之间的数据同步。
较佳的,数据变更事件为二进制格式;当该目标端服务器对应连接的目标数据库为关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为SQL语句,并对目标数据库执行同步操作;
当该目标端服务器对应连接的目标数据库为非关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为软件开发工具包(Software Development Kit,简称SDK)语句,并对目标数据库执行同步操作。
具体实施中,本发明实施例中目标端服务器至少连接两个目标数据库,源端服务器也可连接多个源数据库,本发明实施例可实现将多个源数据库中的数据同步至多个目标数据库中。
较佳的,配置参数包括目标数据库标识号、目标数据库的类型;目标端服务器至少连接两个目标数据库,请求消息中还携带该目标数据库标识号;响应消息中还携带该目标数据库标识号,以使目标端服务器根据该目标数据库标识号确定出该目标数据库,并根据该目标数据库的类型,将第一全局标识号之后的数据变更事件转换为该目标数据库的操作语言所对应格式的数据变更事件,并对该目标数据库执行同步操作。
具体来说,当目标端服务器至少连接两个目标数据库时,目标端服务器中可配置与该目标端服务器连接的所有目标数据库的配置参数,目标端服务器可对应构造一条包含所有目标数据库需同步的全局标识号的请求消息,也可分别构造多条请求消息,其中每条请求消息中均携带一个目标数据库的标识号,以及该目标数据库对应的第一全局标识号。
进一步,当同一个目标端服务器所连接的两个目标数据库的类型或结构不同时,目标端服务器可分别将获取的每个目标数据库所对应的待同步的数据变更事件分别转换为该目标数据库的操作语言所对应格式的数据变更事件,并对每个与该目标端服务器连接的目标数据库执行同步操作。
从上述内容可以看出:由于目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
图3示例性示出了本发明实施例还提供一种数据库同步的装置的结构示意图。
基于相同构思,本发明实施例还提供一种数据库同步的装置,如图3所示,该数据库同步的装置,包括与源数据库300连接的源端服务器301,与源端服务器301连接的目标端服务器302,源端服务器301包括第一处理单元303、接收单元304、第二处理单元305、发送单元306。该装置中的目标端服务器302也可连接非数据库类型的系统,如联机系统、或文档类需获取源数据库中的数据内容的文件均可。该数据库同步的装置中的目标端服务器302与目标数据库307连接:
第一处理单元,用于实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件对应一个全局标识号;
接收单元,用于接收目标端服务器发送的请求消息;其中,请求消息中携带目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;目标端服务器配置有目标数据库的配置参数;
第二处理单元,用于根据第一全局标识号,将第一全局标识号之后的数据变更事件携带于响应消息中;
发送单元,用于将响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
较佳的,所述目标端服务器,具体用于:
根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为所述目标数据库的操作语言所对应格式的数据变更事件,并对所述目标数据库执行同步操作。
又由于源端服务器将实时获取的数据变更事件解析为数据变更事件,并发送给目标端服务器,且目标端服务器根据目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应格式的数据变更事件,并对目标数据库执行同步操作,因此,目标数据库与源数据库结构或类型不一致时,如源数据库为关系型数据库,目标数据库为非关系型数据库时,目标端服务器可根据目标数据库的类型对数据变更事件进行转换,从而实现了源数据库与目标数据库的同步,进而实现了源数据库与目标数据库结构类型不同时的数据同步。
较佳的,配置参数包括目标数据库标识号、目标数据库的类型;
目标端服务器至少连接两个目标数据库,请求消息中还携带该目标数据库标识号;
响应消息中还携带该目标数据库标识号,以使目标端服务器根据该目标数据库标识号确定出该目标数据库,并根据该目标数据库的类型,将第一全局标识号之后的数据变更事件转换为该目标数据库的操作语言所对应格式的数据变更事件,并对该目标数据库执行同步操作。
较佳的,接收单元,还用于:
接收目标端服务器发送的注册请求,其中,注册请求是该目标端服务器启动时,加载完与该目标端服务器连接的目标数据库的配置参数之后发送的;
发送单元,还用于:
向该目标端服务器发送注册响应,以使该目标端服务器与源端服务器建立连接。
较佳的,目标端服务器,具体用于:
数据变更事件为二进制格式;
当该目标端服务器对应连接的目标数据库为关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为SQL语句,并对目标数据库执行同步操作;
当该目标端服务器对应连接的目标数据库为非关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为SDK语句,并对目标数据库执行同步操作。
较佳的,第一处理单元,还用于:
将数据变更事件分别存储至硬盘和缓存区;
第二处理单元,具体用于:
当源端服务器的缓存区包括第一全局标识号时,第二处理单元根据第一全局标识号,从缓存区将第一全局标识号之后的数据变更事件携带于响应消息中;
当源端服务器的缓存区不包括第一全局标识号时,第二处理单元根据第一全局标识号,从硬盘和缓存区将第一全局标识号之后的数据变更事件携带于响应消息中。
从上述内容可以看出:由于目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据库同步的方法,其特征在于,包括以下步骤:
源端服务器实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件对应一个全局标识号;所述数据变更事件为二进制形式;
所述源端服务器接收目标端服务器发送的请求消息;其中,所述请求消息中携带所述目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;所述目标端服务器配置有所述目标数据库的配置参数;
所述源端服务器根据所述第一全局标识号,将所述第一全局标识号之后的数据变更事件携带于响应消息中,并将所述响应消息发送给所述目标端服务器,以使所述目标端服务器对所述目标数据库执行同步操作;
其中,所述源端服务器至少连接两个目标端服务器;所述目标端服务器具有格式转换功能;
所述目标端服务器对所述目标数据库执行同步操作,包括:
所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为所述目标数据库的操作语言所对应格式的数据变更事件,并对所述目标数据库执行同步操作。
2.如权利要求1所述的方法,其特征在于,所述配置参数包括目标数据库标识号、目标数据库的类型;
所述目标端服务器至少连接两个目标数据库,所述请求消息中还携带该目标数据库标识号;
所述响应消息中还携带该目标数据库标识号,以使所述目标端服务器根据该目标数据库标识号确定出该目标数据库,并根据该目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为该目标数据库的操作语言所对应格式的数据变更事件,并对该目标数据库执行同步操作。
3.如权利要求1所述的方法,其特征在于,还包括:
所述源端服务器接收目标端服务器发送的注册请求,其中,所述注册请求是该目标端服务器启动时,加载完与该目标端服务器连接的目标数据库的配置参数之后发送的;
所述源端服务器向该目标端服务器发送注册响应,以使该目标端服务器与所述源端服务器建立连接。
4.如权利要求1所述的方法,其特征在于,所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为所述目标数据库的操作语言所对应格式的数据变更事件,并对所述目标数据库执行同步操作,具体包括:
所述数据变更事件为二进制格式;
当该目标端服务器对应连接的目标数据库为关系型数据库时,所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为结构化查询语句SQL语句,并对所述目标数据库执行同步操作;
当该目标端服务器对应连接的目标数据库为非关系型数据库时,所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为软件开发工具包SDK语句,并对所述目标数据库执行同步操作。
5.如权利要求1至4中任一权利要求所述的方法,其特征在于,所述源端服务器实时捕获源数据库产生的数据变更事件之后,还包括:
所述源端服务器将所述数据变更事件分别存储至硬盘和缓存区;
所述源端服务器根据所述第一全局标识号,将所述第一全局标识号之后的数据变更事件携带于响应消息中,具体包括:
当所述源端服务器的所述缓存区包括所述第一全局标识号时,所述源端服务器根据所述第一全局标识号,从所述缓存区将所述第一全局标识号之后的数据变更事件携带于响应消息中;
当所述源端服务器的所述缓存区不包括所述第一全局标识号时,所述源端服务器根据所述第一全局标识号,从所述硬盘和所述缓存区将所述第一全局标识号之后的数据变更事件携带于响应消息中。
6.一种数据库同步的装置,其特征在于,包括源端服务器,与所述源端服务器连接的目标端服务器,所述源端服务器,包括:
第一处理单元,用于实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件对应一个全局标识号;所述数据变更事件为二进制形式;
接收单元,用于接收目标端服务器发送的请求消息;其中,所述请求消息中携带所述目标端服务器对应连接的目标数据库已同步的数据变更事件的第一全局标识号;所述目标端服务器配置有所述目标数据库的配置参数;
第二处理单元,用于根据所述第一全局标识号,将所述第一全局标识号之后的数据变更事件携带于响应消息中;
发送单元,用于将所述响应消息发送给所述目标端服务器,以使所述目标端服务器对所述目标数据库执行同步操作;
其中,所述源端服务器至少连接两个目标端服务器;所述目标端服务器具有格式转换功能;
所述目标端服务器,具体用于:
根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为所述目标数据库的操作语言所对应格式的数据变更事件,并对所述目标数据库执行同步操作。
7.如权利要求6所述的装置,其特征在于,所述配置参数包括目标数据库标识号、目标数据库的类型;
所述目标端服务器至少连接两个目标数据库,所述请求消息中还携带该目标数据库标识号;
所述响应消息中还携带该目标数据库标识号,以使所述目标端服务器根据该目标数据库标识号确定出该目标数据库,并根据该目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为该目标数据库的操作语言所对应格式的数据变更事件,并对该目标数据库执行同步操作。
8.如权利要求6所述的装置,其特征在于,所述接收单元,还用于:
接收目标端服务器发送的注册请求,其中,所述注册请求是该目标端服务器启动时,加载完与该目标端服务器连接的目标数据库的配置参数之后发送的;
所述发送单元,还用于:
向该目标端服务器发送注册响应,以使该目标端服务器与所述源端服务器建立连接。
9.如权利要求6所述的装置,其特征在于,所述目标端服务器,具体用于:
所述数据变更事件为二进制格式;
当该目标端服务器对应连接的目标数据库为关系型数据库时,所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为结构化查询语句SQL语句,并对所述目标数据库执行同步操作;
当该目标端服务器对应连接的目标数据库为非关系型数据库时,所述目标端服务器根据对应连接的目标数据库的类型,将所述第一全局标识号之后的数据变更事件转换为软件开发工具包SDK语句,并对所述目标数据库执行同步操作。
10.如权利要求6至9中任一权利要求所述的装置,其特征在于,所述第一处理单元,还用于:
将所述数据变更事件分别存储至硬盘和缓存区;
所述第二处理单元,具体用于:
当所述源端服务器的所述缓存区包括所述第一全局标识号时,所述第二处理单元根据所述第一全局标识号,从所述缓存区将所述第一全局标识号之后的数据变更事件携带于响应消息中;
当所述源端服务器的所述缓存区不包括所述第一全局标识号时,所述第二处理单元根据所述第一全局标识号,从所述硬盘和所述缓存区将所述第一全局标识号之后的数据变更事件携带于响应消息中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510201728.5A CN104809199B (zh) | 2015-04-24 | 2015-04-24 | 一种数据库同步的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510201728.5A CN104809199B (zh) | 2015-04-24 | 2015-04-24 | 一种数据库同步的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104809199A CN104809199A (zh) | 2015-07-29 |
CN104809199B true CN104809199B (zh) | 2018-11-16 |
Family
ID=53694021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510201728.5A Active CN104809199B (zh) | 2015-04-24 | 2015-04-24 | 一种数据库同步的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104809199B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105208078A (zh) * | 2015-08-13 | 2015-12-30 | 飞狐信息技术(天津)有限公司 | 一种文件存储系统及方法 |
CN105279285B (zh) * | 2015-11-23 | 2018-07-24 | 上海斐讯数据通信技术有限公司 | 一种关系型数据库与非关系型数据库的同步系统及方法 |
CN107153644B (zh) * | 2016-03-02 | 2021-06-04 | 创新先进技术有限公司 | 一种数据同步方法及装置 |
CN106302473B (zh) * | 2016-08-18 | 2019-09-17 | 深圳市金证科技股份有限公司 | 一种SQL Server数据库的复制维护方法及系统 |
CN107766554A (zh) * | 2017-11-02 | 2018-03-06 | 山东浪潮通软信息科技有限公司 | 一种数据处理方法、装置及系统 |
CN108595451A (zh) * | 2017-12-04 | 2018-09-28 | 阿里巴巴集团控股有限公司 | 业务请求处理方法及装置 |
CN109063196B (zh) * | 2018-09-03 | 2021-08-27 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN109558448B (zh) * | 2018-10-10 | 2021-04-06 | 北京海数宝科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110362632B (zh) * | 2019-07-22 | 2022-11-15 | 无限极(中国)有限公司 | 一种数据同步方法、装置、设备及计算机可读存储介质 |
CN112948346B (zh) * | 2019-11-26 | 2023-05-02 | 马上消费金融股份有限公司 | 数据库的切换方法、装置、设备及计算机可读存储介质 |
CN111800460A (zh) * | 2020-05-27 | 2020-10-20 | 深圳壹账通智能科技有限公司 | Ldap服务节点的数据同步方法、装置、设备及存储介质 |
US11461315B2 (en) * | 2020-12-03 | 2022-10-04 | International Business Machines Corporation | Batch job performance improvement in active-active architecture |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101038591A (zh) * | 2007-04-11 | 2007-09-19 | 华为技术有限公司 | 数据库同步方法及系统 |
CN103026355A (zh) * | 2010-03-18 | 2013-04-03 | 诺宝公司 | 数据库管理系统 |
CN104407945A (zh) * | 2014-12-26 | 2015-03-11 | 北京奇虎科技有限公司 | 数据备份的方法、装置及系统 |
-
2015
- 2015-04-24 CN CN201510201728.5A patent/CN104809199B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101038591A (zh) * | 2007-04-11 | 2007-09-19 | 华为技术有限公司 | 数据库同步方法及系统 |
CN103026355A (zh) * | 2010-03-18 | 2013-04-03 | 诺宝公司 | 数据库管理系统 |
CN104407945A (zh) * | 2014-12-26 | 2015-03-11 | 北京奇虎科技有限公司 | 数据备份的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104809199A (zh) | 2015-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104809199B (zh) | 一种数据库同步的方法和装置 | |
CN104809201B (zh) | 一种数据库同步的方法和装置 | |
CN104809202B (zh) | 一种数据库同步的方法和装置 | |
CN108255653B (zh) | 一种产品的测试方法及其终端 | |
US9116968B2 (en) | Methods and apparatus related to graph transformation and synchronization | |
CN109034993A (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN104809200B (zh) | 一种数据库同步的方法和装置 | |
US10733176B2 (en) | Detecting phantom items in distributed replicated database | |
US20190034465A1 (en) | Blockchain logging of data from multiple systems | |
CN109101627A (zh) | 异构数据库同步方法及装置 | |
CN107766575B (zh) | 读写分离的数据库访问方法及装置 | |
US9020949B2 (en) | Method and system for centralized issue tracking | |
JP2023546249A (ja) | トランザクション処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
CN107832407A (zh) | 用于生成知识图谱的信息处理方法、装置和可读存储介质 | |
CN103927314B (zh) | 一种数据批量处理的方法和装置 | |
CN106933703A (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
CN111931220B (zh) | 区块链网络的共识处理方法、装置、介质及电子设备 | |
CN111221831B (zh) | 一种对广告效果数据实时处理的计算系统 | |
US20230275771A1 (en) | Pre-execution of block chain transaction in parallel during block consensus | |
CN108564463A (zh) | 一种银行异常交易冲正方法及系统 | |
CN109799948A (zh) | 一种数据存储方法及装置 | |
CN109062592A (zh) | 一种游戏数值同步的方法及系统 | |
WO2023060046A1 (en) | Errors monitoring in public and private blockchain by a data intake system | |
CN114138894A (zh) | 一种分布式事务数据同步方法、装置、设备及可读存储介质 | |
US10089350B2 (en) | Proactive query migration to prevent failures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |