CN105095364B - 一种数据同步系统和方法 - Google Patents
一种数据同步系统和方法 Download PDFInfo
- Publication number
- CN105095364B CN105095364B CN201510363927.6A CN201510363927A CN105095364B CN 105095364 B CN105095364 B CN 105095364B CN 201510363927 A CN201510363927 A CN 201510363927A CN 105095364 B CN105095364 B CN 105095364B
- Authority
- CN
- China
- Prior art keywords
- data
- message queue
- database
- server
- compressed
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步系统,适于将源数据库中的数据同步到目标数据库,该系统包括消息队列生产者服务器、第一消息队列服务器、第二消息队列服务器和消息队列消费者服务器,其中:所述消息队列生产者服务器适于根据预定的捕获策略捕获源数据库的变化数据,对捕获的变化数据进行编码和压缩后,写入到第一消息队列服务器中的第一消息队列;所述第一消息队列服务器适于将第一消息队列中的消息发送给第二消息队列服务器中的第二消息队列;所述消息队列消费者服务器适于对第二消息队列中的编码和压缩后的变化数据进行解压缩及解码,并根据解压缩和解码后的变化数据对目标数据库中的数据进行更新。本发明还公开了相应的数据同步方法。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种数据同步系统和方法。
背景技术
随着业务与用户规模的不断增加,传统的单一互联网数据中心(Internet DataCenter,IDC)机房已不能满足企业的发展需求,跨地域的互联网数据中心建设由此产生,多活的异地数据中心需要有数据实时性和一致性的解决方案,而业界现有方案(例如SQLServer数据库自身的数据复制方案、MySQL数据同步方案等),没法满足需求。
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,被广泛应用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案,采用基于快照的事务复制,主数据库服务器生成快照,备份库服务器读取并加载该快照,然后不停地从主数据库服务器复制事务日志。但是,基于快照的事务复制已不能满足跨互联网数据中心进行数据同步时高性能、低延时需求。另外,现有方案复制时,数据库表都必须有主键,没有建主键不能同步,但现实中有高速写表的应用场景,这类场景不需要主键(可以使数据插入更快),可见现有方案并不能适应这类场景。
因此,需要一种高性能、低延时的跨互联网数据中心进行数据同步的方案。
发明内容
为此,本发明提供一种新的数据同步系统和方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种数据同步系统,适于将源数据库中的数据同步到目标数据库,该系统包括消息队列生产者服务器、第一消息队列服务器、第二消息队列服务器和消息队列消费者服务器,其中:消息队列生产者服务器包括:数据捕获单元,适于根据预定的捕获策略捕获源数据库的变化数据;压缩单元,适于对捕获的变化数据进行编码和压缩;写消息队列单元,适于将编码和压缩后的变化数据作为消息写入到第一消息队列服务器中的第一消息队列;消息队列服务器适于将第一消息队列中的消息发送给第二消息队列服务器;第二消息队列服务器适于将接收到的消息写入到第二消息队列服务器中的第二消息队列;消息队列消费者服务器包括:读消息队列单元,适于从第二消息队列中读取消息,得到编码和压缩后的变化数据;解压缩单元,适于对编码和压缩后的变化数据进行解压缩及解码;数据更新单元,适于根据解压缩和解码后的变化数据对目标数据库中的数据进行更新。
可选地,在根据本发明的数据同步系统中,捕获策略包括:数据库触发器、变更数据捕获服务和应用程序级捕获。
可选地,在根据本发明的数据同步系统中,消息队列生产者服务器还包括捕获策略分配单元,捕获策略分配单元适于:为数据变化源头已知的数据分配应用程序级的捕获策略;为数据变化源头未知且实时性要求高的数据分配数据库触发器的捕获策略;以及为数据变化源头未知且实时性要求低的数据分配变更数据捕获服务的捕获策略。
可选地,在根据本发明的数据同步系统中,压缩单元还适于:判断变化数据的大小是否大于第一阈值;如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
可选地,在根据本发明的数据同步系统中,第一阈值为4kb-10kb。
可选地,在根据本发明的数据同步系统中,压缩单元还适于:当消息队列生产者服务器的网络带宽占用比例小于或等于第二阈值时,通过Gzip程序对变化数据进行编码和压缩;当消息队列生产者服务器的网络带宽占用比例大于第二阈值时,通过7-zip程序对变化数据进行编码和压缩。
可选地,在根据本发明的数据同步系统中,第一消息队列服务器和第二消息队列服务器之间具有多条通信链路,第一消息队列服务器还适于根据预定策略从多条通信链路中选择一条或者一条以上的链路进行消息的传输。
根据本发明的一个方面,提供一种数据同步方法,适于将源数据库中的数据同步到目标数据库,该方法包括:根据预定的捕获策略捕获源数据库的变化数据;对捕获的变化数据进行编码和压缩;将编码和压缩后的变化数据作为消息写入到第一消息队列;将第一消息队列中的消息发送给第二消息队列;从第二消息队列中读取信息,得到编码和压缩后的变化数据;对编码和压缩后的变化数据进行解压缩及解码;根据解压缩和解码后的变化数据对目标数据库中的数据进行更新。
可选地,在根据本发明的数据同步方法中,捕获策略包括:数据库触发器、变更数据捕获服务和应用程序级捕获。
可选地,在根据本发明的数据同步方法中,根据预定的捕获策略捕获源数据库的变化数据的步骤包括:为数据变化源头已知的数据分配应用程序级的捕获策略;为数据变化源头未知且实时性要求高的数据分配数据库触发器的捕获策略;以及为数据变化源头未知且实时性要求低的数据分配变更数据捕获服务的捕获策略。
可选地,在根据本发明的数据同步方法中,对捕获的变化数据进行编码和压缩的步骤包括:判断变化数据的大小是否大于第一阈值;如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
可选地,在根据本发明的数据同步方法中,第一阈值为4kb-10kb。
可选地,在根据本发明的数据同步方法中,对捕获的变化数据进行编码和压缩的步骤还包括:当网络带宽占用比例小于或等于第二阈值时,通过Gzip程序对变化数据进行编码和压缩;当网络带宽占用比例大于第二阈值时,通过7-zip程序对变化数据进行编码和压缩。
可选地,在根据本发明的数据同步方法中,第一消息队列和第二消息队列之间具有多条通信链路,第一消息队列还适于根据预定策略从多条通信链路中选择一条或者一条以上的链路进行消息的传输。
根据本发明实施例的一个技术方案,在进行数据库同步时,引入了基于消息队列的同步技术,能够满足跨IDC数据同步时高性能、低延时需求。
根据本发明实施例的其他技术方案,面对不同类型的源数据库数据,采用与其适应的数据捕获策略,数据捕获方式灵活多样,数据捕获速度得到了提高。
根据本发明实施例的其他技术方案,将变化数据进行压缩来减少传送数据的大小,能够获得更好的传输速度和性能,另外还可以根据变化数据的大小来确定是否进行所述压缩,以及根据网络带宽占用比例来确定所采用的压缩程序,使得数据压缩方案更加适应于系统工作状况。
根据本发明实施例的其他技术方案,还可以配置消息队列的路由分发,实现网络传输的优先策略和冗余策略,在某路电信级骨干网络延时较高或故障时,实现实时切换,选择最佳通信链路,实现了高可用。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例数据同步系统100的示意图;
图2示出了根据本发明一个实施例的消息队列生产者服务器110的示意图;
图3示出了根据本发明一个实施例的消息队列消费者服务器140的示意图;以及
图4示出了根据本发明一个实施例的数据同步方法400的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明通过消息队列实现数据同步,消息队列(Message Queue,MQ)是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。
消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。
目前,主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。系统V消息队列是随内核持续的,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被删除。因此系统中记录消息队列的数据结构(structipc_ids msg_ids)位于内核中,系统中的所有消息队列都可以在结构msg_ids中找到访问入口。例如,每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该消息队列的大量信息,包括消息队列键值、用户ID、组ID、消息队列中消息数目等等,甚至记录了最近对消息队列读写进程的ID。
图1示出了根据本发明一个实施例的数据同步系统100的示意图。如图1所示,数据同步系统100包括:消息队列生产者服务器110、第一消息队列服务器120、第二消息队列服务器130和消息队列消费者服务器140。第一消息队列服务器120中设置有第一消息队列,第二消息队列服务器130中设置有第二消息队列。
随着企业业务和规模不断增加,需要建立跨地域的互联网数据中心,即数据同步系统100,以实现将源数据库中的数据同步到目标数据库。源数据库位于第一数据库服务器中,第一数据库服务器可以是多个服务器组成的分布式服务器系统,源数据库可以包括多个的数据库,例如数据库11、数据库12,数据库13……,且这些数据库可以分别存储不同类型的数据;目标数据库位于第二数据库服务器中,第二数据库服务器可以是多个服务器组成的分布式服务器系统,目标数据库可以包括多个的数据库,例如数据库21、数据库22,数据库23……,且这些数据库可以分别存储不同类型的数据。
要实现数据同步,首先,消息队列生产者服务器110捕获源数据库的变化数据,并将变化数据进行编码和压缩,作为消息写入第一消息队列服务器120中的第一消息队列,经由第一消息队列服务器120将消息发送给第二消息队列服务器130中的第二消息队列。
图2示出了根据本发明一个实施例的消息队列生产者服务器110的示意图。
如图2所示,消息队列生产者服务器110包括数据捕获单元112、压缩单元116和写消息队列单元118。
数据捕获单元112根据预定的捕获策略捕获源数据库的变化数据。其中,捕获策略可以包括数据库触发器、变更数据捕获服务(Change Data Capture,CDC)和应用程序级捕获。这里,对各种捕获策略的优缺点分析如下:
应用程序级的捕获,适用于动态库动态表的业务场景,因为数据库和数据表都是随业务增加动态增加的,并且数据的分割依据业务场景而定,所以只有在应用程序级才能知道何时增/删/改数据,优点是捕获速度快,不影响数据库性能。触发器适用于固定的表,优点是不侵入应用。CDC捕获介于上述两者之间,不侵入应用,但捕获速度比触发器慢。
由于有多个捕获策略,消息队列生产者服务器110还可以包括捕获策略分配单元114。捕获策略分配单元114根据数据变化的源头来分配适合的捕获策略。对于数据变化源头已知的数据可以分配应用程序级的捕获策略,例如,应用程序级的捕获策略适用于数据库中有大量数据,而变更的数据只有几处。对于数据变化源头未知的可以分配数据库触发器或者变更数据捕获服务的捕获策略。而数据变化源头未知的数据一般包括实时性要求高的数据和实时性要求低的数据。对实时性要求高的数据分配数据库触发器的捕获策略,例如,数据库数据变化较快的。对实时性要求低的数据分配变更数据捕获服务的捕获策略,例如,数据库数据变化较慢的。
与现有技术采用单一的数据捕获策略相比,在本发明实施例中,面对不同类型的源数据库数据,采用与其适应的数据捕获策略,数据捕获方式灵活多样,数据捕获速度进一步得到了提高。
压缩单元116根据数据捕获单元捕获的变化数据,对变化数据进行编码和压缩。根据实践经验,对太小的数据块进行压缩效果不好,甚至适得其反。因此,根据本发明的一个实施例,在对变化数据进行编码和压缩前,还对变化数据的大小进行判断。例如,判断变化数据的大小是否大于第一阈值,例如,第一阈值为4kb-10kb。如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
对数据进行压缩时,还可以根据实际情况使用合适的压缩程序进行压缩。例如,当消息队列生产者服务器110的网络带宽占用比例小于或等于第二阈值(例如80%)时,说明当前可用的网络带宽还够用,网络数据传输能力强,因此,可以采用压缩比较低的压缩程序,例如通过Gzip程序对变化数据进行编码和压缩,从而能够节省服务器CPU资源的消耗。当消息队列生产者服务器110的网络带宽占用比例大于第二阈值时,说明当前可用的网络带宽比较缺乏,网络数据传输能力不强,因此,可以采用压缩比较高的压缩程序,例如通过7-zip程序对变化数据进行编码和压缩。
应当理解的是,上面对数据压缩的方式仅仅是示意性的,可以根据系统的具体情况,进一步选择合适的压缩方式。本发明不受限于数据压缩方式的具体形式,所有可以实现数据压缩的方式都在本发明的保护范围内。
写消息队列单元118将编码压缩后的变化数据作为消息写入到第一消息队列服务器120中的第一消息队列。第一消息队列服务器120将第一消息队列中的消息发送给第而第二消息队列服务器130。其中,第一消息队列服务器120和第二消息队列服务器130一般设置在不同的城市,每一个城市设置多台消息队列服务器,例如,第一消息队列服务器集群和第二消息队列服务集群。
根据一种实施方式,第一消息队列服务器120和第二消息队列服务器130之间具有多条通信链路,第一消息队列服务器120在发送信息时支持多源多目标。因此,在进行消息传输时,第一消息队列服务器120还可以根据预定策略从多条通信链路中选择一条或者一条以上的链路进行消息的传输。例如,第一消息队列服务器设置在石家庄,第二消息队列服务器设置在北京,通常情况下消息可以由石家庄服务器直接发送给北京的服务器。但是,如果由石家庄服务器到北京服务器的通信链路出现故障了,此时,石家庄的服务器可以将消息发送到设置在例如济南的服务器,再由济南的服务器将信息发送到北京的服务器。因此,在某条通信链路出现故障时,可以实时切换通信链路,自动选择通信最快的链路,实现高可用。
设置在另一个城市的第二消息服务器130会将接收到的消息写入到第二消息队列,消息队列消费者服务器140根据接收的消息得到变化数据,并将变化数据解压缩及解码,对目标数据库进行更新。
图3示出了根据本发明一个实施例的消息队列消费者服务器140的示意图。
如图3所示,消息队列消费者服务器140包括读消息队列单元142、解压缩单元144和数据更新单元146。
读消息队列单元142从第二消息队列中读取消息,得到编码压缩后的变化数据。解压缩单元144根据上述数据,对编码和压缩后的变化数据进行解压缩及解码。最后,数据更新单元146根据解压缩和解码后的变化数据对目标数据库中的数据进行更新。另外,变化数据在目标数据库进行同步时,消息队列消费者服务器增加了提前通知机制,更加实用。
应当理解的是,上面对数据解压缩和解码的方式可以有多种。因此,本发明不受限于数据解压缩方式的具体形式,所有可以实现数据解压缩的方式都在本发明的保护范围内。
根据本发明实施例的技术方案,在进行数据库同步时,引入了基于消息队列的同步技术,消息传送速度快、消息路由灵活(比如多路的实现),能够满足跨IDC数据库同步时高性能、低延时的需求。
根据本发明的技术方案,面对不同的源数据库数据,采用多种数据捕获策略,数据捕获速度得到提高。将变化数据进行压缩,减少传送数据的大小,获得更好的传输速度和性能。采用多条通信链路,支持多源多目标,实现实时切换,选择最佳通信链路,实现高可用。
图4示出了根据本发明示例性实施例的数据同步方法400的流程图。本发明的数据同步方法可以将该数据同步源数据库中的数据同步到目标数据库中,该方法始于步骤S410。
在步骤S410中,根据预定的捕获策略捕获源数据库的变化数据。
捕获策略可以包括:数据库触发器、变更数据捕获服务和应用程序级捕获。此时,根据不同的数据源头分配不同的捕获策略,例如,为数据变化源头已知的数据分配应用程序级的捕获策略,为数据变化源头未知且实时性要求高的数据分配数据库触发器的捕获策略,为数据变化源头未知且实时性要求低的数据分配变更数据捕获服务的捕获策略。
随后,在步骤S420中,对捕获的变化数据进行编码和压缩。在压缩之前,要判断变化数据的大小是否大于第一阈值。如果变化数据的大小超过第一阈值,例如,第一阈值为4kb-10kb,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
对数据进行压缩时,根据实际情况使用合适的压缩程序进行压缩。例如,当网络带宽占用比例小于或等于第二阈值(例如80%)时,通过Gzip程序对变化数据进行编码和压缩。当网络带宽占用比例大于第二阈值(例如80%)时,通过7-zip程序对变化数据进行编码和压缩。
应当理解的是,上面对数据压缩的方式仅仅是示意性的,可以根据系统的具体情况,进一步选择合适的压缩方式。本发明不受限于数据压缩方式的具体形式,所有可以实现数据压缩的方式都在本发明的保护范围内。
随后,在步骤S430中,将编码和压缩后的变化数据作为消息写入到第一消息队列。
随后,在步骤S440中,将第一消息队列中的消息发送给第二消息队列。
随后,在步骤S450中,从第二消息队列中读取信息,得到编码和压缩后的变化数据。
随后,在步骤S460中,对编码和压缩后的变化数据进行解压缩及解码。
应当理解的是,对数据解压缩和解码的方式可以有多中。因此,本发明不受限于数据解压缩方式的具体形式,所有可以实现数据解压缩的方式都在本发明的保护范围内。
随后,在步骤S470中,根据解压缩和解码后的变化数据对目标数据库中的数据进行更新。
根据本发明的技术方案,面对不同的源数据库数据,采用多种数据捕获策略,数据捕获速度得到提高。将变化数据进行压缩减少传送数据的大小,获得更好的传输速度和性能。采用多条通信链路,支持多源多目标,实现实时切换,选择最佳通信链路,实现高可用。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
A11:如A8所述的方法,其中所述对捕获的变化数据进行编码和压缩的步骤包括:判断变化数据的大小是否大于第一阈值;如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。A12:如A11所述的方法,其中所述第一阈值为4kb-10kb。A13:如A8所述的方法,其中所述对捕获的变化数据进行编码和压缩的步骤还包括:当网络带宽占用比例小于或等于第二阈值时,通过Gzip程序对变化数据进行编码和压缩;当网络带宽占用比例大于第二阈值时,通过7-zip程序对变化数据进行编码和压缩。A14:如A8所述的方法,其中所述第一消息队列和第二消息队列之间具有多条通信链路,第一消息队列还适于根据预定策略从所述多条通信链路中选择一条或者一条以上的链路进行消息的传输。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (12)
1.一种数据同步系统,适于将源数据库中的数据同步到目标数据库,该系统包括消息队列生产者服务器、第一消息队列服务器、第二消息队列服务器和消息队列消费者服务器,消息队列生产者服务器与第一数据库服务器连接,消息队列消费者服务器与第二数据库服务器连接,源数据库位于第一数据库服务器中,目标数据库为第二数据库服务器中,源数据库和目标数据库均包括多个存储不同类型的数据的数据库,其中:
所述消息队列生产者服务器包括:
数据捕获单元,适于根据预定的捕获策略捕获源数据库的变化数据;
压缩单元,适于对捕获的变化数据进行编码和压缩;
写消息队列单元,适于将编码和压缩后的变化数据作为消息写入到第一消息队列服务器中的第一消息队列;
所述第一消息队列服务器适于将第一消息队列中的消息发送给第二消息队列服务器;
所述第二消息队列服务器适于将接收到的消息写入到第二消息队列服务器中的第二消息队列;
所述消息队列消费者服务器包括:
读消息队列单元,适于从第二消息队列中读取消息,得到编码和压缩后的变化数据;
解压缩单元,适于对编码和压缩后的变化数据进行解压缩及解码;
数据更新单元,适于根据解压缩和解码后的变化数据对目标数据库中的数据进行更新;
其中所述第一消息队列服务器和第二消息队列服务器分离设置,且二者之间具有多条通信链路,所述第一消息队列服务器还适于根据预定策略从所述多条通信链路中选择一条或者一条以上的链路进行消息的传输。
2.如权利要求1所述的系统,其中所述捕获策略包括:
数据库触发器、变更数据捕获服务和应用程序级捕获。
3.如权利要求2所述的系统,其中所述消息队列生产者服务器还包括捕获策略分配单元,所述捕获策略分配单元适于:
为数据变化源头已知的数据分配应用程序级的捕获策略;
为数据变化源头未知且实时性要求高的数据分配数据库触发器的捕获策略;以及
为数据变化源头未知且实时性要求低的数据分配变更数据捕获服务的捕获策略。
4.如权利要求1所述的系统,其中所述压缩单元还适于:
判断变化数据的大小是否大于第一阈值;
如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
5.如权利要求4所述的系统,其中所述第一阈值为4kb-10kb。
6.如权利要求1所述的系统,其中所述压缩单元还适于:
当消息队列生产者服务器的网络带宽占用比例小于或等于第二阈值时,通过Gzip程序对变化数据进行编码和压缩;
当消息队列生产者服务器的网络带宽占用比例大于第二阈值时,通过7-zip程序对变化数据进行编码和压缩。
7.一种数据同步方法,适于将源数据库中的数据同步到目标数据库,源数据库位于第一数据库服务器中,目标数据库为第二数据库服务器中,源数据库和目标数据库均包括多个存储不同类型的数据的数据库,该方法包括:
根据预定的捕获策略捕获源数据库的变化数据;
对捕获的变化数据进行编码和压缩;
将编码和压缩后的变化数据作为消息写入到第一消息队列;
将第一消息队列中的消息发送给第二消息队列;
从第二消息队列中读取信息,得到编码和压缩后的变化数据;
对编码和压缩后的变化数据进行解压缩及解码;
根据解压缩和解码后的变化数据对目标数据库中的数据进行更新;
其中所述第一消息队列和第二消息队列分离设置,二者之间具有多条通信链路,第一消息队列还适于根据预定策略从所述多条通信链路中选择一条或者一条以上的链路进行消息的传输。
8.如权利要求7所述的方法,其中所述捕获策略包括:
数据库触发器、变更数据捕获服务和应用程序级捕获。
9.如权利要求8所述的方法,其中所述根据预定的捕获策略捕获源数据库的变化数据的步骤包括:
为知道数据变化源头的数据分配应用程序级的捕获策略;
为不知道数据变化源头中实时性要求高的数据分配数据库触发器的捕获策略;以及
为不知道数据变化源头中实时性要求低的数据分配变更数据捕获服务的捕获策略。
10.如权利要求7所述的方法,其中所述对捕获的变化数据进行编码和压缩的步骤包括:
判断变化数据的大小是否大于第一阈值;
如果变化数据的大小超过第一阈值,则对变化数据进行编码和压缩,否则不对变化数据进行编码和压缩。
11.如权利要求10所述的方法,其中所述第一阈值为4kb-10kb。
12.如权利要求7所述的方法,其中所述对捕获的变化数据进行编码和压缩的步骤还包括:
当网络带宽占用比例小于或等于第二阈值时,通过Gzip程序对变化数据进行编码和压缩;
当网络带宽占用比例大于第二阈值时,通过7-zip程序对变化数据进行编码和压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510363927.6A CN105095364B (zh) | 2015-06-26 | 2015-06-26 | 一种数据同步系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510363927.6A CN105095364B (zh) | 2015-06-26 | 2015-06-26 | 一种数据同步系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095364A CN105095364A (zh) | 2015-11-25 |
CN105095364B true CN105095364B (zh) | 2018-11-23 |
Family
ID=54575801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510363927.6A Active CN105095364B (zh) | 2015-06-26 | 2015-06-26 | 一种数据同步系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095364B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055723B (zh) * | 2016-08-17 | 2019-08-02 | 浪潮软件股份有限公司 | 一种数据库数据同步装置、系统及方法 |
CN107784025A (zh) * | 2016-08-31 | 2018-03-09 | 北京国双科技有限公司 | 一种数据更新方法及装置 |
CN106484807A (zh) * | 2016-09-23 | 2017-03-08 | 北京许继电气有限公司 | 构建自主可控数据库双活或多活集群架构的方法和系统 |
CN107277022B (zh) * | 2017-06-27 | 2020-03-13 | 中国联合网络通信集团有限公司 | 进程标记方法及装置 |
CN107404540B (zh) * | 2017-09-01 | 2021-06-18 | 北京奇虎科技有限公司 | 数据的同步方法及装置 |
CN107943992A (zh) * | 2017-12-01 | 2018-04-20 | 宁波瓜瓜农业科技有限公司 | 电商平台基础商品信息的分布式存储方法 |
CN107920136B (zh) * | 2017-12-29 | 2019-09-17 | Oppo广东移动通信有限公司 | 数据同步控制方法、装置以及服务器 |
CN108512698B (zh) * | 2018-03-15 | 2022-04-22 | 北京奇艺世纪科技有限公司 | 一种网络容灾方法、装置及电子设备 |
CN108829713B (zh) * | 2018-05-04 | 2021-10-22 | 华为技术有限公司 | 分布式缓存系统、缓存同步方法和装置 |
CN109271351A (zh) * | 2018-11-12 | 2019-01-25 | 珠海格力电器股份有限公司 | 一种数据库同步方法及系统 |
TWI678087B (zh) * | 2018-11-22 | 2019-11-21 | 財團法人工業技術研究院 | 訊息佇列發佈與訂閱之同步方法及其系統 |
CN109558417B (zh) * | 2018-11-28 | 2023-08-08 | 亚信科技(南京)有限公司 | 一种数据处理方法和系统 |
CN109922151A (zh) * | 2019-03-12 | 2019-06-21 | 浪潮通用软件有限公司 | 一种微服务之间的数据共享方法 |
CN110309161B (zh) * | 2019-06-06 | 2021-10-29 | 新华三大数据技术有限公司 | 一种数据同步方法、装置及服务器 |
CN110691124B (zh) * | 2019-09-24 | 2020-11-24 | 华润网络(深圳)有限公司 | 一种异地多活架构下数据处理方法及系统 |
CN110765206A (zh) * | 2019-10-21 | 2020-02-07 | 广东小天才科技有限公司 | 一种数据同步系统、方法、装置、设备及存储介质 |
CN111262773A (zh) * | 2020-01-21 | 2020-06-09 | 香港乐蜜有限公司 | 一种消息同步方法及数据中心 |
CN112667651A (zh) * | 2020-12-29 | 2021-04-16 | 新华三技术有限公司 | 一种数据通信方法及装置 |
CN113364691B (zh) * | 2021-05-31 | 2022-11-29 | 广州趣丸网络科技有限公司 | 一种数据交互系统、方法、设备和存储介质 |
CN116821046B (zh) * | 2023-08-28 | 2023-11-24 | 上海燧原智能科技有限公司 | 异构单元间的数据自动同步方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470636A (zh) * | 2007-12-27 | 2009-07-01 | 北京东方通科技发展有限责任公司 | 一种消息的读写方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707334B2 (en) * | 2005-11-18 | 2010-04-27 | Mobilic Technology (Cayman) Corp. | Self-synchronizing hardware/software interface for multimedia SOC design |
-
2015
- 2015-06-26 CN CN201510363927.6A patent/CN105095364B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470636A (zh) * | 2007-12-27 | 2009-07-01 | 北京东方通科技发展有限责任公司 | 一种消息的读写方法和装置 |
Non-Patent Citations (2)
Title |
---|
"信息交换平台数据同步模块的设计与实现";刘天平;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20110915;正文第2章至第4章 * |
分布式异构数据库数据同步系统的研究与实现;张瑛等;《小型微型计算机系统》;20071031;第28卷(第10期);第1803-1806页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105095364A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095364B (zh) | 一种数据同步系统和方法 | |
US10467105B2 (en) | Chained replication techniques for large-scale data streams | |
US20190222647A1 (en) | Adaptive resource utilization with request cancellation | |
WO2018001110A1 (zh) | 一种基于纠删码的存储数据重构方法和装置、存储节点 | |
US9503517B1 (en) | Data volume placement techniques | |
US9703504B2 (en) | Storage system, recording medium storing data rebalancing program, and data rebalancing method | |
US9823840B1 (en) | Data volume placement techniques | |
CN102411639B (zh) | 元数据的多副本存储管理方法和系统 | |
US8326912B2 (en) | Pipelining for massively parallel service architecture | |
CN104902009B (zh) | 一种基于可擦除编码和链式备份的分布式存储系统 | |
CN106445741A (zh) | 一种基于ceph实现oracle数据库容灾备份方法 | |
WO2009048728A1 (en) | Smart access to a dispersed data storage network | |
US20230100323A1 (en) | Memory Allocation for Block Rebuilding in a Storage Network | |
André et al. | Archiving cold data in warehouses with clustered network coding | |
Camarasu-Pop et al. | Simulating application workflows and services deployed on the european grid infrastructure | |
CN104052799B (zh) | 一种利用资源环实现高可用存储的方法 | |
CN105610879B (zh) | 数据处理方法和装置 | |
US9607068B2 (en) | Parallel truncation point management for log based replication | |
US20180113651A1 (en) | Transferring data encoding functions in a distributed storage network | |
US20150331752A1 (en) | Method of data storage on cloud data center for reducing processing and storage requirements by engaging user equipment | |
CN111090818B (zh) | 资源管理方法、资源管理系统、服务器及计算机存储介质 | |
CN106998436B (zh) | 录像备份方法及装置 | |
CN102325171A (zh) | 一种监控系统中数据的存储方法及其系统 | |
CN113111074A (zh) | 基于区块链的交互数据监测方法及装置 | |
US11954121B2 (en) | Selection apparatus, selection method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |