CN106339408A - 数据同步方法、数据同步装置和服务器 - Google Patents
数据同步方法、数据同步装置和服务器 Download PDFInfo
- Publication number
- CN106339408A CN106339408A CN201610651659.2A CN201610651659A CN106339408A CN 106339408 A CN106339408 A CN 106339408A CN 201610651659 A CN201610651659 A CN 201610651659A CN 106339408 A CN106339408 A CN 106339408A
- Authority
- CN
- China
- Prior art keywords
- data
- data base
- synchronization
- base
- updating
- 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.)
- Granted
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/273—Asynchronous replication or reconciliation
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种数据同步方法、数据同步装置和服务器,其中,所述数据同步方法包括:获取多个数据库中的每个数据库中的除同步数据之外的更新数据;根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,其中,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。通过本发明的技术方案,不仅可以稳定、高效地实现多个数据库之间的数据同步,还可以减少客户端所在的数据库的处理压力。
Description
技术领域
本发明涉及数据同步技术领域,具体而言,涉及一种数据同步方法、一种数据同步装置和一种服务器。
背景技术
目前,可以实现两个数据库之间的数据同步,但是相关技术中的对数据库进行数据同步的方案不能够稳定、高效地实现多个数据库之间的数据同步。而且,在相关技术中,数据库之间的数据同步都是由数据库对应的客户端来执行的,这样就增大了数据库的处理压力。
因此,如何稳定、高效地实现多个数据库之间的数据同步,以及减少客户端所在的数据库的处理压力成为亟待解决的问题。
发明内容
本发明正是基于上述问题,提出了一种新的技术方案,不仅可以稳定、高效地实现多个数据库之间的数据同步,还可以减少客户端所在的数据库的处理压力。
有鉴于此,本发明的第一方面提出了一种数据同步方法,包括:获取多个数据库中的每个数据库中的除同步数据之外的更新数据;根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,其中,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
在该技术方案中,由于每个数据库有数据更新时,更新的数据可能包含有多个数据库之间同步的数据,若根据更新的同步数据再进行数据同步,这样就造成了数据同步的死循环,因此,仅获取每个数据库中的除同步数据之外的更新数据,从而可以避免造成数据同步的死循环。将多个数据库的更新数据进行合并,不仅更容易部署实施,还最大程度地减少影响数据库的其他业务,从而稳定、高效地实现多个数据库之间的数据同步。另外,由于上述方案并不是由客户端执行,从而减少了客户端的处理数据的压力,有利于客户端对应的数据库正常业务的执行。
在上述技术方案中,优选地,所述获取多个数据库中的每个数据库中的除同步数据之外的更新数据的步骤,具体包括:获取所述每个数据库对应的同步数据的自增字段的列表;根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
在该技术方案中,将每个数据库的同步数据的自增字段存储到列表中。当对任一数据库进行数据同步时,根据该列表将任一数据库中的所有更新数据中的同步数据过滤掉,过滤后的数据即为任一数据库中的除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
在该技术方案中,当多个数据库的数量发生变化时,重新设置自增字段步进值和自增字段起始值,从而保证了每个数据库的自增字段的唯一性。
在上述任一技术方案中,优选地,所述获取多个数据库中的每个数据库中的除同步数据之外的更新数据的步骤,具体包括:获取所述每个数据库中的所有更新数据的标记信息;根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
在该技术方案中,对每个数据库中的所有更新数据进行标记,以根据该标记来将每个数据库中的所有更新数据中的同步数据过滤掉,从而保证了过滤后的数据即为除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
在该技术方案中,由于获取到多个数据库中的更新数据比较庞大,存储、数据合并运算时需要大量的内存空间,本地缓存可能不够用,而分布式缓存具有较快的读写速度和可扩展等优点。因此,采用分布式缓存的方式存储更新数据和/或目标同步数据,从而保证了进行数据同步时数据读写的速度,进而提高了数据同步的效率。
本发明的第二方面提出了一种数据同步装置,包括:获取单元,用于获取多个数据库中的每个数据库中的除同步数据之外的更新数据;同步单元,用于根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,其中,所述同步单元具体用于,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
在该技术方案中,由于每个数据库有数据更新时,更新的数据可能包含有多个数据库之间同步的数据,若根据更新的同步数据再进行数据同步,这样就造成了数据同步的死循环,因此,仅获取每个数据库中的除同步数据之外的更新数据,从而可以避免造成数据同步的死循环。将多个数据库的更新数据进行合并,不仅更容易部署实施,还最大程度地减少影响数据库的其他业务,从而稳定、高效地实现多个数据库之间的数据同步。另外,由于上述方案并不是由客户端执行,从而减少了客户端的处理数据的压力,有利于客户端对应的数据库正常业务的执行。
在上述技术方案中,优选地,所述获取单元包括:第一获取子单元,用于获取所述每个数据库对应的同步数据的自增字段的列表;第一确定子单元,用于根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
在该技术方案中,将每个数据库的同步数据的自增字段存储到列表中。当对任一数据库进行数据同步时,根据该列表将任一数据库中的所有更新数据中的同步数据过滤掉,过滤后的数据即为任一数据库中的除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:设置单元,用于当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
在该技术方案中,当多个数据库的数量发生变化时,重新设置自增字段步进值和自增字段起始值,从而保证了每个数据库的自增字段的唯一性。
在上述任一技术方案中,优选地,所述获取单元包括:第二获取子单元,用于获取所述每个数据库中的所有更新数据的标记信息;第二确定子单元,用于根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
在该技术方案中,对每个数据库中的所有更新数据进行标记,以根据该标记来将每个数据库中的所有更新数据中的同步数据过滤掉,从而保证了过滤后的数据即为除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:存储单元,用于采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
在该技术方案中,由于获取到多个数据库中的更新数据比较庞大,存储、数据合并运算时需要大量的内存空间,本地缓存可能不够用,而分布式缓存具有较快的读写速度和可扩展等优点。因此,采用分布式缓存的方式存储更新数据和/或目标同步数据,从而保证了进行数据同步时数据读写的速度,进而提高了数据同步的效率。
本发明的第三方面提出了一种服务器,包括上述技术方案中任一项所述的数据同步装置,因此,该服务器具有和上述技术方案中任一项所述的数据同步装置相同的技术效果,在此不再赘述。
通过本发明的技术方案,不仅可以稳定、高效地实现多个数据库之间的数据同步,还可以减少客户端所在的数据库的处理压力。
附图说明
图1示出了根据本发明的一个实施例的数据同步方法的流程示意图;
图2示出了根据本发明的一个实施例的数据同步的原理示意图;
图3示出了根据本发明的一个实施例的数据同步装置的结构示意图;
图4示出了根据本发明的一个实施例的服务器的结构示意图;
图5示出了根据本发明的一个实施例的数据同步系统的结构示意图;
图6示出了根据本发明的一个实施例的数据分布式缓存的示意图。
具体实施方式
为了可以更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的一个实施例的数据同步方法的流程示意图。
如图1所示,根据本发明的一个实施例的数据同步方法,包括:
步骤102,获取多个数据库中的每个数据库中的除同步数据之外的更新数据。
步骤104,根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,其中,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
例如,如图2所示,在数据库1中获取更新数据1,根据更新数据1可以得到目标同步数据2和目标同步数据3。具体地,将更新数据1和数据库3中的更新数据3进行合并,合并得到的数据即为目标同步数据2,将目标同步数据2发送到客户端2中,以供客户端2根据目标同步数据2对客户端2对应的数据库2进行更新。将更新数据1和数据库2中的更新数据2进行合并,合并得到的数据即为目标同步数据3,将目标同步数据3发送到客户端3中,以供客户端3根据目标同步数据3对客户端3对应的数据库3进行更新。对客户端1对应的数据库1进行数据同步的方案和上述方案相同,在此不再赘述。
在该技术方案中,由于每个数据库有数据更新时,更新的数据可能包含有多个数据库之间同步的数据,若根据更新的同步数据再进行数据同步,这样就造成了数据同步的死循环,因此,仅获取每个数据库中的除同步数据之外的更新数据,从而可以避免造成数据同步的死循环。将多个数据库的更新数据进行合并,不仅更容易部署实施,还最大程度地减少影响数据库的其他业务,从而稳定、高效地实现多个数据库之间的数据同步。另外,由于上述方案并不是由客户端执行,从而减少了客户端的处理数据的压力,有利于客户端对应的数据库正常业务的执行。
在上述技术方案中,优选地,步骤102具体包括:获取所述每个数据库对应的同步数据的自增字段的列表;根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
在该技术方案中,将每个数据库的同步数据的自增字段存储到列表中。当对任一数据库进行数据同步时,根据该列表将任一数据库中的所有更新数据中的同步数据过滤掉,过滤后的数据即为任一数据库中的除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
在该技术方案中,当多个数据库的数量发生变化时,重新设置自增字段步进值和自增字段起始值,从而保证了每个数据库的自增字段的唯一性。
下面来详细介绍自增字段。
自增字段一般作为数据库表的主键,自增字段的数据是唯一的,当新增加记录时,自增字段的数据按照指定的规则自动增加。
对于自增字段,指定序列增加的起始值和相同的步进值来解决,步进值为参与数据同步的多个数据库的个数。
例如,有3个数据库的表Table1参与数据同步,表Table1的字段Id是自增字段。
对于数据库1,将表Table1的字段Id设定起始值为101,新增记录时这个字段的数值加3,即步进为3,典型的SQL语句为:ALTER TABLE Table1ALTER COLUMN Id COUNTER(101,3);(注:101是起始值,3是步进值)。
对于数据库2,将表Table1的字段Id设定起始值为102,新增记录时这个字段的数值加3,即步进为3,典型的SQL语句为:ALTER TABLE Table1ALTER COLUMN Id COUNTER(102,3)。
对于数据库3,将表Table1的字段Id设定起始值为103,新增记录时这个字段的数值加3,即步进为3,典型的SQL语句为:ALTER TABLE Table1ALTER COLUMN Id COUNTER(103,3)。
下面详细介绍参与数据同步的多个数据库的数量增加或减少(可伸缩)的情况下如何处理自增字段。
举例1:当参与同步的数据库由3个增长为4个时,重新设定各数据库表Table1的字段Id的起始值和步进值,起始值取各数据库自增字段Id的最大值+1,步进值改为4。
举例2:当参与同步的数据库由3个减少为2个时,重新设定各数据库表Table1的字段Id的起始值和步进值,起始值取各数据库自增字段Id的最大值+1,步进值改为2。
在上述任一技术方案中,优选地,步骤102具体包括:获取所述每个数据库中的所有更新数据的标记信息;根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
在该技术方案中,对每个数据库中的所有更新数据进行标记,以根据该标记来将每个数据库中的所有更新数据中的同步数据过滤掉,从而保证了过滤后的数据即为除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,还包括:采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
在该技术方案中,由于获取到多个数据库中的更新数据比较庞大,存储、数据合并运算时需要大量的内存空间,本地缓存可能不够用,而分布式缓存具有较快的读写速度和可扩展等优点。因此,采用分布式缓存的方式存储更新数据和/或目标同步数据,从而保证了进行数据同步时数据读写的速度,进而提高了数据同步的效率。
图3示出了根据本发明的一个实施例的数据同步装置的结构示意图。
如图3所示,根据本发明的一个实施例的数据同步装置300,包括:获取单元302和同步单元304。
获取单元302,用于获取多个数据库中的每个数据库中的除同步数据之外的更新数据。
具体地,向客户端发送更新数据收集指令,客户端接收到更新数据收集指令后,客户端根据指令中的参数收集客户端对应的数据库中的更新数据。其中,指令中的参数包括但不限于:需要同步的数据表信息、字段信息(可选)、上次收集时间。具体地,客户端器从其对应的数据库的日志目录中获取从上次收集时间点到当前时间的所有的数据库的操作日志(主要包括新增、修改、删除的日志),并将这些操作日志和当前服务器的收集时间返回给获取单元302。
同步单元304,用于根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步。
其中,所述同步单元304具体用于,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
在该技术方案中,由于每个数据库有数据更新时,更新的数据可能包含有多个数据库之间同步的数据,若根据更新的同步数据再进行数据同步,这样就造成了数据同步的死循环,因此,仅获取每个数据库中的除同步数据之外的更新数据,从而可以避免造成数据同步的死循环。将多个数据库的更新数据进行合并,不仅更容易部署实施,还最大程度地减少影响数据库的其他业务,从而稳定、高效地实现多个数据库之间的数据同步。另外,由于上述方案并不是由客户端执行,从而减少了客户端的处理数据的压力,有利于客户端对应的数据库正常业务的执行。
在上述技术方案中,优选地,所述获取单元302包括:第一获取子单元3022,用于获取所述每个数据库对应的同步数据的自增字段的列表;第一确定子单元3024,用于根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
在该技术方案中,将每个数据库的同步数据的自增字段存储到列表中。当对任一数据库进行数据同步时,根据该列表将任一数据库中的所有更新数据中的同步数据过滤掉,过滤后的数据即为任一数据库中的除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,数据同步装置300还包括:设置单元306,用于当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
在该技术方案中,当多个数据库的数量发生变化时,重新设置自增字段步进值和自增字段起始值,从而保证了每个数据库的自增字段的唯一性。
在上述任一技术方案中,优选地,所述获取单元302包括:第二获取子单元3026,用于获取所述每个数据库中的所有更新数据的标记信息;第二确定子单元3028,用于根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
在该技术方案中,对每个数据库中的所有更新数据进行标记,以根据该标记来将每个数据库中的所有更新数据中的同步数据过滤掉,从而保证了过滤后的数据即为除同步数据之外的更新数据,进一步地保证了多个数据库之间进行数据同步的稳定性和可靠性。
在上述任一技术方案中,优选地,数据同步装置300还包括:存储单元308,用于采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
在该技术方案中,由于获取到多个数据库中的更新数据比较庞大,存储、数据合并运算时需要大量的内存空间,本地缓存(指本地计算机内存被程序获取的缓存区域,用于存放运算数据)可能不够用,而分布式缓存(此处的分布式缓存指一个或多个存在于服务器本地或者不存在于服务器本地的缓存装置)具有较快的读写速度和可扩展等优点。因此,采用分布式缓存的方式存储更新数据和/或目标同步数据,从而保证了进行数据同步时数据读写的速度,进而提高了数据同步的效率。
图4示出了根据本发明的一个实施例的服务器的结构示意图。
如图4所示,根据本发明的一个实施例的服务器400,包括上述技术方案中任一项所述的数据同步装置300,因此,该服务器400具有和上述技术方案中任一项所述的数据同步装置300相同的技术效果,在此不再赘述。
图5示出了根据本发明的一个实施例的数据同步系统的结构示意图。
如图5所示,根据本发明的一个实施例的数据同步系统500,包括:服务器400、客户端1、客户端2…客户端n。客户端1安装在服务器1上、客户端2安装在服务器2上、客户端n安装在服务器n上,客户端1产生的数据存储在服务器1中的数据库1中,客户端2产生的数据存储在服务器2中的数据库2中,客户端n产生的数据存储在服务器n中的数据库n中。
服务器400包括:获取单元302和同步单元304。获取单元302和同步单元304可以是安装在数据同步服务器上的一个或多个实现数据同步功能的软件,它也可以是通过专用电路实现的一个或多个硬件装置,或者是一个或多个软件与硬件的结合。在软件与硬件结合这种实现方式中,可以将服务器400中适于用专用电路实现的功能剥离出来,在硬件模块中实现,其余适于用软件实现的功能仍由软件模块实现,且软件与硬件模块之间通过一定方式进行通信,以最大化地提高服务器端的运作效率。在上述方案中,可以有一个服务器400,还可以有多个服务器400以适应数据量大等需求,本发明不限于此。
服务器400持有的数据有:数据库服务器列表、需要同步的数据库表信息(同步任务会对哪些表以及表的哪些字段的更新数据进行收集、同步),各数据库已同步数据信息。
服务器400持有的数据可以通过配置文件或其他方式存放。
获取单元302:负责收集各客户端对应的数据库的变化数据。一般通过数据库操作日志确定所述变化数据,并且将同步单元304发出指令所产生的变化数据排除在外,因为由同步单元304发出指令所产生的变化数据属于各服务器间需同步的数据,并非真正新增的变化数据。每隔一段时间(可根据需要配置时间长短)派发收集任务到各客户端,收集其对应的数据库操作日志,过滤得出有效日志。
同步单元304:把从各客户端对应的数据库收集上来的数据,针对不同的数据库,根据服务器400持有的数据库服务器列表、需要同步的数据库表信息,合并整理为需要同步到各数据库的数据(即目标同步数据),根据服务器400持有的数据库服务器列表,将合并后的数据发送到各客户端,由客户端完成其对应的数据库的数据同步。
各客户端(即客户端1、客户端2、客户端n)安装在各数据库侧,负责与服务器400的交互,处理服务器400发出的指令,处理的主要指令有:更新数据收集指令、数据同步指令。
下面详细介绍更新数据收集指令和数据同步指令。
更新数据收集指令由服务器400的获取单元302发往客户端,由客户端执行,并将客户端对应的数据库的最新数据变化情况返回给服务器400。主要传入参数包括:需要同步的数据表信息、字段信息(可选)、上次收集时间。需要同步的数据表信息:指定同步任务会对数据库中的哪些表做同步处理;字段信息:如果指定字段,同步任务只对指定字段做同步处理,如果不指定字段则对所有字段处理;上次收集时间:作为本次收集的起始时间。
数据同步指令由服务器400的同步单元304发往客户端,目的在于将其他数据库的更新数据同步到客户端对应的数据库,主要参数:合成整理后的数据。从某个客户端收集上的更新数据经过同步单元304处理后,形成需要同步到其他客户端的合成数据。
另外,由于服务器400获取到的更新数据比较庞大,存储、数据合并运算时需要大量的内存空间,本地缓存(指本地计算机内存被程序获取的缓存区域,用于存放运算数据)可能不够用,而分布式缓存(此处的分布式缓存指一个或多个存在与服务器本地或者不存在于服务器本地的缓存装置)具有较快的读写速度和可扩展等优点。如图6所示,获取单元302收集到的更新数据存放在分布式缓存,同步单元304从分布式缓存中读取更新数据,生成出目标同步数据,也存放于分布式缓存,并发往各客户端。
下面详细介绍数据同步系统500在进行数据同步时的具体步骤。
第一步,服务器400启动获取单元302。
第二步,服务器400获取数据库列表、需要同步的数据库表信息。
第三步,服务器400按数据库列表,向各客户端派发更新数据收集指令。
第四步,客户端收到更新数据收集指令,在本地数据库收集有效的数据库操作日志。
第五步,客户端返回数据库操作日志给服务器400。
第六步,服务器400一个收集任务收到多个客户端返回的操作日志;
第七步,服务器400启动同步单元304。
第八步,同步单元304根据本服务器400持有的数据库服务器列表、需要同步的数据库表信息,合并整理为需要同步到各数据库的数据(比如客户端1收集的操作日志整理后不需要再同步到客户端1所在的数据库,而需要同步到客户端1至客户端n分别对应的数据库)。
第九步,同步单元304根据本服务器400持有的数据库服务器列表,将合成后的数据分别发送到各客户端。
第十步,客户端收到数据同步指令,将变化数据修改到本地数据库。
以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,不仅可以稳定、高效地实现多个数据库之间的数据同步,还可以减少客户端所在的数据库的处理压力。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据同步方法,其特征在于,包括:
获取多个数据库中的每个数据库中的除同步数据之外的更新数据;
根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,
其中,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
2.根据权利要求1所述的数据同步方法,其特征在于,所述获取多个数据库中的每个数据库中的除同步数据之外的更新数据的步骤,具体包括:
获取所述每个数据库对应的同步数据的自增字段的列表;
根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
3.根据权利要求2所述的数据同步方法,其特征在于,还包括:
当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,
其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
4.根据权利要求1所述的数据同步方法,其特征在于,所述获取多个数据库中的每个数据库中的除同步数据之外的更新数据的步骤,具体包括:
获取所述每个数据库中的所有更新数据的标记信息;
根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
5.根据权利要求1至4中任一项所述的数据同步方法,其特征在于,还包括:
采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或
采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
6.一种数据同步装置,其特征在于,包括:
获取单元,用于获取多个数据库中的每个数据库中的除同步数据之外的更新数据;
同步单元,用于根据所述多个数据库中的所述更新数据,对所述多个数据库进行数据同步,
其中,所述同步单元具体用于,在对所述多个数据库中的任一数据库进行数据同步时,将所述多个数据库中的其他数据库中的所述更新数据进行合并作为目标同步数据,将所述目标同步数据发送至所述任一数据库对应的客户端,以供所述客户端根据所述目标同步数据对所述任一数据库进行数据同步。
7.根据权利要求6所述的数据同步装置,其特征在于,所述获取单元包括:
第一获取子单元,用于获取所述每个数据库对应的同步数据的自增字段的列表;
第一确定子单元,用于根据所述每个数据库对应的所述列表,确定所述每个数据库中的所述更新数据。
8.根据权利要求7所述的数据同步装置,其特征在于,还包括:
设置单元,用于当所述多个数据库的数量发生变化时,重新设置变化后的多个数据库的自增字段步进值和变化后的每个数据库的自增字段起始值,
其中,所述自增字段步进值大于或等于变化后的多个数据库的数量,所述变化后的每个数据库的自增字段起始值等于所述变化后的每个数据库的自增字段最大值加预设值。
9.根据权利要求6所述的数据同步装置,其特征在于,所述获取单元包括:
第二获取子单元,用于获取所述每个数据库中的所有更新数据的标记信息;
第二确定子单元,用于根据所述每个数据库中的所有更新数据的标记信息,确定所述每个数据库中的所述更新数据。
10.根据权利要求6至9中任一项所述的数据同步装置,其特征在于,还包括:
存储单元,用于采用分布式缓存的方式存储所述多个数据库中的所述更新数据;和/或采用分布式缓存的方式存储所述多个数据库的所述目标同步数据。
11.一种服务器,其特征在于,包括:如权利要求6至10中任一项所述的数据同步装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610651659.2A CN106339408B (zh) | 2016-08-10 | 2016-08-10 | 数据同步方法、数据同步装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610651659.2A CN106339408B (zh) | 2016-08-10 | 2016-08-10 | 数据同步方法、数据同步装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106339408A true CN106339408A (zh) | 2017-01-18 |
CN106339408B CN106339408B (zh) | 2019-08-23 |
Family
ID=57824389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610651659.2A Active CN106339408B (zh) | 2016-08-10 | 2016-08-10 | 数据同步方法、数据同步装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339408B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107071059A (zh) * | 2017-05-25 | 2017-08-18 | 腾讯科技(深圳)有限公司 | 分布式缓存服务实现方法、装置、终端、服务器及系统 |
CN107590207A (zh) * | 2017-08-24 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置、电子设备 |
CN109257448A (zh) * | 2018-11-21 | 2019-01-22 | 网易(杭州)网络有限公司 | 一种会话信息同步的方法及装置、电子设备、存储介质 |
CN109542981A (zh) * | 2018-11-21 | 2019-03-29 | 网易(杭州)网络有限公司 | 一种数据同步的系统及方法、电子设备、存储介质 |
CN110069567A (zh) * | 2019-04-02 | 2019-07-30 | 北京信安世纪科技股份有限公司 | 一种数据库之间的数据同步方法及系统 |
CN110086861A (zh) * | 2019-04-19 | 2019-08-02 | 山东欧倍尔软件科技有限责任公司 | 一种协同仿真方法、系统及服务器和客户端 |
CN110866009A (zh) * | 2019-10-29 | 2020-03-06 | 广州西山居世游网络科技有限公司 | 一种实时并发同步服务的方法及系统 |
WO2023124431A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 一种数据库处理方法及相关设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087504A1 (en) * | 2000-12-29 | 2002-07-04 | Thompson Blake A. | System and method for database cache synchronization across multiple interpreted code engines |
CN101551801A (zh) * | 2008-03-31 | 2009-10-07 | 国际商业机器公司 | 数据同步的方法和系统 |
CN101789963A (zh) * | 2010-01-05 | 2010-07-28 | 深圳中兴网信科技有限公司 | 数据同步系统 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
CN103312743A (zh) * | 2012-03-09 | 2013-09-18 | 盛乐信息技术(上海)有限公司 | 一种数据同步装置和方法 |
CN103605703A (zh) * | 2013-11-08 | 2014-02-26 | 北京奇虎科技有限公司 | 一种多平台之间数据一致性检测的方法和系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN105447046A (zh) * | 2014-09-02 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种分布式系统数据一致性处理方法、装置和系统 |
CN105630850A (zh) * | 2014-11-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 对分布式数据库的数据进行实时验证的方法及其系统 |
CN105701159A (zh) * | 2015-12-30 | 2016-06-22 | 华为技术有限公司 | 一种数据同步装置和方法 |
CN105701218A (zh) * | 2016-01-14 | 2016-06-22 | 四川长虹电器股份有限公司 | 实现不同终端在数据库上进行数据同步的方法 |
-
2016
- 2016-08-10 CN CN201610651659.2A patent/CN106339408B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087504A1 (en) * | 2000-12-29 | 2002-07-04 | Thompson Blake A. | System and method for database cache synchronization across multiple interpreted code engines |
CN101551801A (zh) * | 2008-03-31 | 2009-10-07 | 国际商业机器公司 | 数据同步的方法和系统 |
CN102096685A (zh) * | 2009-12-11 | 2011-06-15 | 阿里巴巴集团控股有限公司 | 分布式数据同步到数据仓库的方法及装置 |
CN101789963A (zh) * | 2010-01-05 | 2010-07-28 | 深圳中兴网信科技有限公司 | 数据同步系统 |
CN103312743A (zh) * | 2012-03-09 | 2013-09-18 | 盛乐信息技术(上海)有限公司 | 一种数据同步装置和方法 |
CN103605703A (zh) * | 2013-11-08 | 2014-02-26 | 北京奇虎科技有限公司 | 一种多平台之间数据一致性检测的方法和系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN105447046A (zh) * | 2014-09-02 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种分布式系统数据一致性处理方法、装置和系统 |
CN105630850A (zh) * | 2014-11-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 对分布式数据库的数据进行实时验证的方法及其系统 |
CN105701159A (zh) * | 2015-12-30 | 2016-06-22 | 华为技术有限公司 | 一种数据同步装置和方法 |
CN105701218A (zh) * | 2016-01-14 | 2016-06-22 | 四川长虹电器股份有限公司 | 实现不同终端在数据库上进行数据同步的方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107071059A (zh) * | 2017-05-25 | 2017-08-18 | 腾讯科技(深圳)有限公司 | 分布式缓存服务实现方法、装置、终端、服务器及系统 |
CN107590207A (zh) * | 2017-08-24 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置、电子设备 |
CN109257448A (zh) * | 2018-11-21 | 2019-01-22 | 网易(杭州)网络有限公司 | 一种会话信息同步的方法及装置、电子设备、存储介质 |
CN109542981A (zh) * | 2018-11-21 | 2019-03-29 | 网易(杭州)网络有限公司 | 一种数据同步的系统及方法、电子设备、存储介质 |
CN109257448B (zh) * | 2018-11-21 | 2021-07-09 | 网易(杭州)网络有限公司 | 一种会话信息同步的方法及装置、电子设备、存储介质 |
CN110069567A (zh) * | 2019-04-02 | 2019-07-30 | 北京信安世纪科技股份有限公司 | 一种数据库之间的数据同步方法及系统 |
CN110086861A (zh) * | 2019-04-19 | 2019-08-02 | 山东欧倍尔软件科技有限责任公司 | 一种协同仿真方法、系统及服务器和客户端 |
CN110086861B (zh) * | 2019-04-19 | 2021-12-14 | 山东欧倍尔软件科技有限责任公司 | 一种协同仿真方法、系统及服务器和客户端 |
CN110866009A (zh) * | 2019-10-29 | 2020-03-06 | 广州西山居世游网络科技有限公司 | 一种实时并发同步服务的方法及系统 |
WO2023124431A1 (zh) * | 2021-12-31 | 2023-07-06 | 华为技术有限公司 | 一种数据库处理方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106339408B (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339408A (zh) | 数据同步方法、数据同步装置和服务器 | |
CN106934014B (zh) | 一种基于Hadoop的网络数据挖掘与分析平台及其方法 | |
CN111400326B (zh) | 一种智慧城市数据管理系统及其方法 | |
CN102164186B (zh) | 一种实现云搜索服务的方法及系统 | |
Das et al. | Big data analytics: A framework for unstructured data analysis | |
CN104516989B (zh) | 增量数据推送系统和方法 | |
CN105677918A (zh) | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 | |
CN109189782A (zh) | 一种区块链商品交易查询中的索引方法 | |
JP6521402B2 (ja) | KeyValueデータベースのデータテーブルを更新するための方法およびテーブルデータを更新するための装置 | |
CN110019267A (zh) | 一种元数据更新方法、装置、系统、电子设备及存储介质 | |
CN103678494A (zh) | 客户端同步服务端数据的方法及装置 | |
CN104102710A (zh) | 一种海量数据查询方法 | |
CN106886371B (zh) | 缓存数据处理方法及装置 | |
CN110489313A (zh) | 基于区块链的操作日志记录方法、装置及存储介质 | |
CN106250424A (zh) | 一种日志上下文内容的搜索方法、装置及系统 | |
US20170193039A1 (en) | Servicing queries of an event log | |
CN104834700A (zh) | 一种基于轨迹变更的移动数据增量捕获方法 | |
US20170193040A1 (en) | Servicing queries of an event index | |
CN105808653A (zh) | 一种基于用户标签系统的数据处理方法及装置 | |
CN104113605A (zh) | 一种企业云应用开发的监控处理方法 | |
CN105095425A (zh) | 一种数据库的跨库结转方法及装置 | |
CN102779138A (zh) | 实时数据的硬盘存取方法 | |
CN104636395A (zh) | 一种计数处理方法及装置 | |
CN113672692B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN108549714B (zh) | 一种数据处理方法及装置 |
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 |