CN109271450A - 数据库同步方法、装置、服务器和存储介质 - Google Patents
数据库同步方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN109271450A CN109271450A CN201811179517.6A CN201811179517A CN109271450A CN 109271450 A CN109271450 A CN 109271450A CN 201811179517 A CN201811179517 A CN 201811179517A CN 109271450 A CN109271450 A CN 109271450A
- Authority
- CN
- China
- Prior art keywords
- data
- data change
- change record
- record
- synchronized
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库同步方法、装置、服务器及存储介质,其属于数据库领域,该方法的一实施方式包括:获取数据变更日志;解析数据变更日志,获得具有表空间名和页号的数据变更记录,根据表空间名和页号分发数据变更记录至多个待同步区;开启与待同步区数量相同的工作线程,并行处理待同步区内数据变更记录的变更;待所有工作线程完成数据变更记录的变更后,执行数据变更记录的事务操作,完成数据库同步。本申请的数据库同步方法、装置、服务器及存储介质,通过对解析后的变更记录按照数据页级别的并行复制,提高数据表的并行粒度,继而大幅提升数据的同步速度。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种数据库同步方法、装置、服务器和存储介质。
背景技术
在数据库应用中,为了应对巨大的数据访问量的问题,通常会采用主从复制(Master-Slave)的数据库架构模式,在此模式中,主库承担数据的增删改等操作,而从库承担查询操作,以减少对主库的访问压力,提高业务能力。在主从数据库模式下,为了满足业务的读写一致性,需要尽量缩短主库和从库之间的数据延迟。
现有技术中,主库和从库之间通常是基于数据表(Table)级别的复制或备份,但在某些高写吞吐压力场景中,数据表的数据量可达千兆(GB)级别,在此情况下,主从数据库之间的数据延迟较高,难以满足场景所需。
发明内容
为了解决上述背景技术提到的任一技术问题,而提供了一种数据库同步方法、装置、服务器及存储介质。
在第一方面,本申请提供了一种数据库同步方法,该方法包括:获取数据变更日志;解析数据变更日志,获得具有表空间名和页号的数据变更记录,根据表空间名和页号分发数据变更记录至多个待同步区;开启与待同步区数量相同的工作线程,并行处理待同步区内的数据变更记录的变更;待所有工作线程完成数据变更记录的变更后,执行数据变更记录的事务操作,完成数据库同步。
根据本申请的至少一个实施方式,上述方法中,数据变更日志包括数据变更信息和事务逻辑信息,根据数据变更信息获得数据变更记录,根据事务逻辑信息执行事务操作。
根据本申请的至少一个实施方式,上述方法中,数据变更信息包括当前数据变更信息和历史数据变更信息,根据当前数据变更信息获得当前数据变更记录,根据历史数据变更信息获得历史数据变更记录。
根据本申请的至少一个实施方式,上述方法中,待同步区包括第一分区和第二分区;在分发数据变更记录至多个待同步区的过程中,当前数据变更记录按预定规则分发至多个待同步区的第一分区,以及历史数据变更记录按预定规则分发至多个待同步区的第二分区。
根据本申请的至少一个实施方式,上述方法中,工作线程并行处理待同步区内的数据变更记录的变更,包括:多个工作线程并行处理待同步区的第二分区内的历史数据变更记录的变更;待所有工作线程完成历史数据变更记录的变更后,多个工作线程并行处理待同步区的第一分区内的当前数据变更记录的变更。
根据本申请的至少一个实施方式,上述方法中,执行事务操作包括执行事务的开启、提交和回滚中的至少一种。
根据本申请的至少一个实施方式,上述方法中,在执行变更的事务操作后,还包括:持久化数据变更记录到数据文件;记录持久化进度。
根据本申请的至少一个实施方式,上述方法中,持久化数据变更记录到数据文件,包括:获取数据变更记录所在的数据页的日志序列号;当数据变更记录所在的数据页完成变更后,通过预定算法将日志序列号***到需持久化数据页的刷新列表;根据刷新列表刷新数据页到数据文件完成持久化。
根据本申请的至少一个实施方式,记录持久化进度,包括:获取已完成持久化的数据页的日志序列号;确定日志序列号中自初始且连续的最大的日志序列号为持久化进度。
在第二方面,本申请提供了一种数据库同步装置,该装置包括:日志获取模块,日志获取模块用于获取数据变更日志;解析分发模块,解析分发模块用于解析数据变更日志获得具有表空间名和页号的数据变更记录,并根据表空间名和页号分发数据变更记录至多个待同步区;变更处理模块,变更处理模块通过开启与待同步区数量相同的工作线程并行处理待同步区内的数据变更记录的变更;事务操作模块,事务操作用于待所有工作线程完成数据变更记录的变更后,执行数据变更记录的事务操作,完成数据库同步。
根据本申请的至少一个实施方式,上述装置中,数据变更日志包括数据变更信息和事务逻辑信息,根据数据变更信息获得数据变更记录,根据事务逻辑信息执行事务操作。
根据本申请的至少一个实施方式,上述装置中,数据变更信息包括当前数据变更信息和历史数据变更信息,根据当前数据变更信息获得当前数据变更记录,根据历史数据变更信息获得历史数据变更记录。
根据本申请的至少一个实施方式,上述装置中,待同步区包括第一分区和第二分区;在分发数据变更记录至多个待同步区的过程中,当前数据变更记录按预定规则分发至多个待同步区的第一分区,以及历史数据变更记录按预定规则分发至多个待同步区的第二分区。
根据本申请的至少一个实施方式,上述装置中,变更处理模块开启与待同步区数量相同的工作线程并行处理待同步区内数据变更记录的变更,包括:多个工作线程并行处理待同步区的第二分区内的历史数据变更记录的变更;待所有工作线程完成历史数据变更记录的变更后,多个工作线程并行处理待同步区的第一分区内的当前数据变更记录的变更。
根据本申请的至少一个实施方式,上述装置中,执行事务操作包括执行事务的开启、提交和回滚中的至少一种。
根据本申请的至少一个实施方式,上述装置中,事务操作模块在执行数据变更记录的事务操作后,还包括:持久化数据变更记录到数据文件;记录持久化进度。
根据本申请的至少一个实施方式,上述装置中,事务操作模块在持久化数据变更记录到数据文件,包括:获取数据变更记录所在的数据页的日志序列号;当数据变更记录所在的数据页完成变更后,通过预定算法将日志序列号***到需持久化数据页的刷新列表;根据刷新列表刷新数据页到数据文件完成持久化。
根据本申请的至少一个实施方式,上述装置中,事务操作模块记录持久化进度,包括:获取已完成持久化的数据页的日志序列号;确定日志序列号中自初始且连续的最大的日志序列号为持久化进度。
在第三方面,本申请提供了一种服务器,该服务器包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行是,使得一个或多个处理器实现如上任一的数据库同步方法。
在第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质包含计算机可执行指令,计算机可执行指令在由计算机处理器执行时用于执行如上任一的数据库同步方法。
本申请的数据库同步方法、装置、服务器和存储介质,通过对解析后的数据变更记录按照数据页级别的并行处理,提高了数据的并行处理粒度,继而大幅提升了数据的同步速度。
附图说明
为了更清楚地说明本申请提供的技术方案,下面将对附图作简单地介绍。显而易见地,下面描述的附图仅仅是本申请的一些实施方式。
图1为可以用于本申请中的主从数据库架构图;
图2为本申请第一方面的数据库同步方法流程示意图;
图3为本申请第一方面的数据变更日志示意图;
图4为本申请第一方面的数据变更记录分发示意图;
图5为本申请第一方面的工作线程并行处理示意图;
图6为本申请第一方面的数据持久化步骤示意图;
图7为本申请第一方面的持久化数据变更记录到数据文件流程图;
图8为本申请第一方面的记录持久化进度流程图;
图9为本申请第一方面的持久化数据页示意图;
图10为本申请第二方面的数据库同步装置示意图;
图11为本申请第二方面的各线程工作流程示意图;
图12为适于用来实现本申请实施方式的服务器的计算机***的结构示意图。
具体实施方式
为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本申请一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本申请的实施例进行详细说明。
如图1所示的可以用于本申请中的主从数据库架构图,主数据库1与从数据库2之间通过网络3连接。在此架构中,主数据库1可以为安装在一个或多个服务器上的数据库程序,从数据库2同样可以为安装在一个或多个服务器上的数据库程序,网络3可以是通过电缆或光线等构成的用于通信主数据库1和从数据库2的通信网络。从数据库2与主数据库1通过网络3进行通信及获取数据,从而可以从主数据库1下载所需的数据或文件。
其中,上述主从数据库架构中,数据库程序可以包括MySQL、SQL Server及Oracle等。本申请中,采用MySQL作为数据库程序。
在以下实施例中,仅示意性给出一主数据库1和一从数据库2的通信及处理过程。
如图2所示的第一方面的实施例,其示意性给出了本申请的数据库同步方法的流程,具体包括如下步骤:
步骤100:获取数据变更日志。
在本申请的一些实施方式中,当主数据库1中的数据发生改变时,数据的相关信息则写入主数据库1的日志中,由此主数据库1中的日志则发生变化,此时则为数据变更日志。在此过程中,从数据库2持续监控主数据库1中的日志变化,当其发生变化后,获取主数据库1中的数据变更日志。从数据库2获取主数据库1中的数据变更日志的方式,可通过上述中的网络3来实现。
步骤200:解析数据变更日志,获得具有表空间名和页号的数据变更记录,根据表空间名和页号分发数据变更记录至多个待同步区。
在本申请的一些实施方式中,数据变更日志通常包含数据变更记录的一些相关信息,例如,数据变更记录隶属的表空间名称、页号以及具体的数据记录信息,通过对数据变更日志进行解析可获得上述信息。之后,按照表空间名(SpaceID)和页号(PageNo)分发数据变更记录可使得属于相同页(Page)的数据变更记录汇集在一起形成完整的数据页。
分发数据页至待同步区过程中,待同步区是指能够存储由步骤200进行分发的数据变更记录的区域,其可以是由链表、数组、树等数据存储结构形成的区域,在本数据库同步实施方式中,该待同步区优选采用哈希算法构成的哈希表或哈希桶,数据变更记录在分发过程中,则根据表空间名和页号分发数据变更记录至多个哈希桶中。
其中,数据页/页(Page)是数据库程序MySQL中最基本的存储结构,也是磁盘存储的最小单位。需要说明的是,在有些文档中,页(Page)有时也称为块(Block)。
步骤300:开启与待同步区数量相同的工作线程并行处理待同步区内数据变更记录的变更。
在本申请的一些实施方式中,例如,在步骤200中数据变更记录10分发至50个待同步区中,相应的,则在此步骤中开启50个工作线程并行处理50个待同步区内的数据变更记录的变更。
需要说明的是,本申请中所说的多个通常指的是至少两个,即多个是两个或两个以上。
步骤400:待所有工作线程完成数据变更记录的变更后,执行数据变更记录的事务操作,完成数据库同步。
在本申请的一些实施方式中,例如在步骤300中开启的50个工作线程并行处理50个待同步区内的数据变更记录中,当其中的30个工作线程完成数据变更记录处理后,需等待其余20个工作线程完成待同步区内的数据变更记录的处理。待所有线程完成处理后,批量执行数据变更记录的事务操作,即完成了数据库间的同步。
本申请的数据库同步方法,通过对解析后的数据变更记录按照数据页级别的并行处理,提高了数据表的并行粒度,继而大幅提升了数据的同步速度、降低了主从数据库间的数据延迟。
如图3所示,在本申请的一些实施方式中,数据变更日志100包括数据变更信息110和事务逻辑信息120,根据数据变更信息110可以获得数据变更记录10,根据事务逻辑信息120可以执行步骤400中的事务操作。
在本申请的一些实施方式中,数据变更信息110包括当前数据变更信息111和历史数据变更信息112,根据当前数据变更信息111可以获得当前数据变更记录11,根据历史数据变更信息112可以获得历史数据变更记录12。因此,在本实施方式中,数据变更记录10即包括当前数据变更记录11和历史数据变更记录12。
需要说明的是,本申请的实施方式的方法中,数据变更日志100通常包含多条的数据变更信息110和多条的事务逻辑信息120,由此,数据变更记录10中包含的当前数据变更记录11和历史数据变更记录12也为多条。
在本申请的一些实施方式中,待同步区20包括第一分区21和第二分区22。在数据变更记录10分发至多个待同步区20的过程中,当前数据变更记录11按预定规则分发至多个待同步区20的第一分区21,历史数据变更记录12按预定规则分发至多个待同步区20的第二分区22。
参见图4所示的数据变更记录分发示意图,数据变更记录10包括N条当前数据变更记录11和N条历史数据变更记录12,其中,当前数据变更记录11的前100条构成当前数据页P1,当前数据变更记录11的第101-200条构成当前数据页P2,以此类推。同理,历史数据变更记录12的前100条构成历史数据页P1’,历史数据变更记录12的第101-200条构成历史数据页P2’,以此类推。
在该实施方式中,分发采用的预定规则可以为:当前数据页P1~P3放入第一个待同步区的第一分区中,历史数据页P1’~P3’放入第一个待同步区的第二分区中,当前数据页P4~P6放入第二个待同步区的第一分区中,历史数据页P4’~P6’放入第二个待同步区的第二分区中,依此类推,直至所有数据变更记录10均分发完成。
需要说明的是,上述预定规则中,每连续的三个数据页放入一个分区,直至所有数据变更记录10分发完毕。当然,还可以采用连续的两个数据页、连续的四个数据页等方式进行分发,或者采用奇偶数据页等方式分发,上述预定规则此处不再赘述。
在上述实施方式中,通过预定规则分发之后共有M个待同步区20,M个待同步区20构成一个区域组200。由于待同步区20与工作线程个数相同,因此用于处理待同步区20的工作线程个数也为M个。
如图5所示,在本申请的一些实施方式中,工作线程并行处理待同步区20内的数据变更记录10的变更过程包括:步骤310:多个工作线程并行处理待同步区20的第二分区22内的历史数据变更记录12的变更;步骤320:待所有工作线程完成历史数据变更记录的变更后,多个工作线程并行处理待同步区20的第一分区21的当前数据变更记录11的变更。
通过对上述变更过程的先后控制,可以使得数据在变更过程中,先构建历史版本,再统一变更到当前版本,保证数据变更的正确性,最终可得到数据内容一致的数据页(Page1、Page2…PageM)。
在本申请的一些实施方式中,执行事务操作包括执行事务的开启、提交和回滚中的至少一种,事务操作根据事务逻辑信息120来执行。
如图6所示,在本申请的一些实施方式中,在执行变更的事务操作后还包括如下步骤:步骤410:持久化数据变更记录到数据文件;步骤420:记录持久化进度。
由于数据的变更处理均在内存中进行,当内存中的数据页变更完成后,其需要刷回至磁盘以永久保存,否则当内存断电后,数据会丢失。因此,通过记录持久化进度可以在数据库宕机重启后,对未持久化的数据继续进行持久化,而无需从头执行,防止数据丢失,保证数据归档正确。
如图7所示,在本申请的一些实施方式中,持久化数据变更记录到数据文件包括如下步骤:步骤411:获取数据变更记录所在的数据页的日志序列号;步骤412:当数据变更记录所在的数据页完成变更后,通过预定算法将日志序列号***到需持久化数据页的刷新列表;步骤413:根据刷新列表刷新数据页到数据文件完成持久化。
在本申请的一些实施方式中,预定算法可以为红黑树(Red Black Tree)算法,以保证数据页在***刷新列表中有序。
如图9所示,由于M个待同步区20被多个工作线程并行处理,因此待同步区20内的数据页被处理的先后顺序无法保证,当数据页处理完成后便具有一个日志序列号(LSN,LogSequence Number),数据页通过上述的红黑树算法并发有序的***刷新列表中。之后对刷新列表中的数据页持久化,由于持久化也是无序的,因此无法保证数据变更记录的顺序问题。
因此在本申请的一些实施方式中,通过记录持久化进度保证数据归档完成。如图8所示,记录持久化进度包括如下步骤:步骤421:获取已完成持久化的数据页的日志序列号;步骤422:确定日志序列号中自初始且连续的最大的日志序列号为持久化进度。
具体的,在上述实施方式中,全部待同步区20内的数据页均被处理完成,数据页也具有了日志序列号,日志序列号参见图9所示,日志序列号最大为LSN_M。而在持久化过程中,仅持久化完成了数据页Page2(对应的日志序列号为LSN1)、数据页Page1(对应的日志序列号为LSN2)、数据页Page4(对应的日志序列号为LSN3)及数据页Page3(对应的日志序列号为LSN6),由于数据页Page4和数据页Page3之间存在未持久化的数据页PageM和数据页Page6,因此持久化进度取已具有日志序列号LSN_M中自初始且连续的日志序列号的最大值,本实施例中即为LSN3。因此采用日志序列号LSN3作为持久化的进度。在下次需要继续持久化的过程中,仅需对日志序列号LSN4及以后的数据页持久化即可。
进一步参考图10所示的第二方面的实施例,作为对上述各图所示方法的实现,本申请提供了一种数据库同步装置500,该装置的实施例与图2所示的方法的实施例相对应。
本申请的数据库同步装置500包括:日志获取模块510,日志获取模块510用于获取数据变更日志;解析分发模块520,解析分发模块520用于解析数据变更日志100获得具有表空间名和页号的数据变更记录10,并根据表空间名和页号分发数据变更记录10至多个待同步区20;变更处理模块530,变更处理模块530通过开启与待同步区数量相同的工作线程531并行处理待同步区20内的数据变更记录10的变更;事务操作模块540,事务操作模块540用于待所有工作线程531完成数据变更记录10的变更后,执行数据变更记录的事务操作,完成数据库同步。
参照图11所示,在上述各个模块中,日志获取模块510通过日志获取线程531获取数据变更日志,解析分发模块520通过解析分发线程521解析数据变更日志100获得具有表空间名和页号的数据变更记录10,并根据表空间名和页号分发数据变更记录10至多个待同步区20;变更处理模块530通过开启与待同步区数量相同的工作线程531并行处理待同步区20内的数据变更记录10的变更;事务操作模块540用于待所有工作线程531完成数据变更记录10的变更后,通过事务操作线程541执行数据变更记录的事务操作。最后,事务操作线程541通知日志获取线程511获取数据变更日志100,即完成了一个循环。
需要说明的是,在本申请的一些实施方式中,解析分发线程521与工作线程531处理过程中,可以通过事务操作模块541作为中间件完成待同步区20的整合工作,即将解析分发线程521中的待同步区20整合成区域组200后再发送给工作线程531。
在本申请的一些实施方式中,数据变更日志包括数据变更信息和事务逻辑信息,根据数据变更信息获得数据变更记录,根据事务逻辑信息执行事务操作。
在本申请的一些实施方式中,数据变更信息包括当前数据变更信息和历史数据变更信息,根据当前数据变更信息获得当前数据变更记录,根据历史数据变更信息获得历史数据变更记录。
在本申请的一些实施方式中,待同步区包括第一分区和第二分区;在分发数据变更记录至多个待同步区的过程中,当前数据变更记录按预定规则分发至多个待同步区的第一分区,以及历史数据变更记录按预定规则分发至多个待同步区的第二分区。
在本申请的一些实施方式中,工作线程并行处理待同步区内的数据变更记录的变更,包括:多个工作线程并行处理待同步区的第二分区内的历史数据变更记录的变更;待所有工作线程完成历史数据变更记录的变更后,多个工作线程并行处理待同步区的第一分区内的当前数据变更记录的变更。
在本申请的一些实施方式中,事务操作模块540单独存储事务逻辑信息120,事务操作模块540执行包括事务的开启、提交和回滚中的至少一种事务操作方式,事务操作模块540执行的事务操作根据其存储事务逻辑信息120来执行。
在本申请的一些实施方式中,事务操作模块540在执行变更的事务操作后,还包括:持久化数据变更记录到数据文件;记录持久化进度。
在本申请的一些实施方式中,事务操作模块540在持久化数据变更记录到数据文件过程中包括:获取数据变更记录所在的数据页的日志序列号;当数据变更记录所在的数据页完成变更后,通过预定算法将日志序列号***到需持久化数据页的刷新列表;根据刷新列表刷新数据页到数据文件完成持久化。
在本申请的一些实施方式中,事务操作模块540记录持久化进度过程包括:获取已完成持久化的数据页的日志序列号;确定日志序列号中自初始且连续的最大的日志序列号为持久化进度。
继续参考图12,其示出了适于用来实现本申请实施例的服务器的计算机***600的结构示意图。图12示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图12所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本申请的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例中包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本分开的第四方面,还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置执行如下程序:获取数据变更日志;解析数据变更日志获得具有表空间名和页号的数据变更记录,根据表空间名和页号分发数据变更记录至多个待同步区;开启与待同步区数量相同的工作线程并行处理待同步区内的数据变更记录的变更;待所有工作线程完成数据变更记录的变更后,执行数据变更记录的事务操作,完成数据库同步。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种数据库同步方法,其特征在于,包括
获取数据变更日志;
解析所述数据变更日志,获得具有表空间名和页号的数据变更记录,根据所述表空间名和页号分发所述数据变更记录至多个待同步区;
开启与所述待同步区数量相同的工作线程,并行处理所述待同步区内数据变更记录的变更;
待所有所述工作线程完成所述数据变更记录的变更后,执行所述数据变更记录的事务操作,完成数据库同步。
2.根据权利要求1所述的数据库同步方法,其特征在于,所述数据变更日志包括数据变更信息和事务逻辑信息,根据所述数据变更信息获得所述数据变更记录,根据所述事务逻辑信息执行所述事务操作。
3.根据权利要求2所述的数据库同步方法,其特征在于,所述数据变更信息包括当前数据变更信息和历史数据变更信息,根据当前数据变更信息获得当前数据变更记录,根据历史数据变更信息获得历史数据变更记录。
4.根据权利要求3所述的数据库同步方法,其特征在于,所述待同步区包括第一分区和第二分区;
在分发所述数据变更记录至多个待同步区的过程中,所述当前数据变更记录按预定规则分发至多个待同步区的第一分区,以及所述历史数据变更记录按预定规则分发至多个待同步区的第二分区。
5.根据权利要求4所述的数据库同步方法,其特征在于,所述工作线程并行处理所述待同步区内的数据变更记录的变更,包括
多个工作线程并行处理所述待同步区的第二分区内的历史数据变更记录的变更;
待所有工作线程完成所述历史数据变更记录的变更后,多个工作线程并行处理所述待同步区的第一分区内的当前数据变更记录的变更。
6.根据权利要求1所述的数据库同步方法,其特征在于,执行所述事务操作包括执行事务的开启、提交和回滚中的至少一种。
7.根据权利要求1所述的数据库同步方法,其特征在于,在执行所述数据变更记录的事务操作后,还包括
持久化所述数据变更记录到数据文件;
记录所述持久化进度。
8.根据权利要求7所述的数据库同步方法,其特征在于,所述持久化所述数据变更记录到数据文件,包括
获取所述数据变更记录所在的数据页的日志序列号;
当所述数据变更记录所在的数据页完成变更后,通过预定算法将所述日志序列号***到需持久化数据页的刷新列表;
根据所述刷新列表刷新所述数据页到数据文件完成持久化。
9.根据权利要求8所述的数据库同步方法,其特征在于,所示记录所述持久化进度,包括
获取已完成持久化的数据页的日志序列号;
确定所述日志序列号中自初始且连续的最大的日志序列号为所述持久化进度。
10.一种数据库同步装置,其特征在于,包括
日志获取模块,所述日志获取模块用于获取数据变更日志;
解析分发模块,所述解析分发模块用于解析所述数据变更日志获得具有表空间名和页号的数据变更记录,并根据所述表空间名和页号分发所述数据变更记录至多个待同步区;
变更处理模块,所述变更处理模块通过开启与所述待同步区数量相同的工作线程并行处理所述待同步区内的数据变更记录的变更;
事务操作模块,所述事务操作模块用于待所有所述工作线程完成所述数据变更记录的变更后,执行所述数据变更记录的事务操作,完成数据库同步。
11.根据权利要求10所述的数据库同步装置,其特征在于,所述数据变更日志包括数据变更信息和事务逻辑信息,根据所述数据变更信息获得所述数据变更记录,根据所述事务逻辑信息执行所述事务操作。
12.根据权利要求11所述的数据库同步装置,其特征在于,所述数据变更信息包括当前数据变更信息和历史数据变更信息,根据当前数据变更信息获得当前数据变更记录,根据历史数据变更信息获得历史数据变更记录。
13.根据权利要求12所述的数据库同步装置,其特征在于,所述待同步区包括第一分区和第二分区;
在分发所述数据变更记录至多个待同步区的过程中,所述当前数据变更记录按预定规则分发至多个待同步区的第一分区,以及所述历史数据变更记录按预定规则分发至多个待同步区的第二分区。
14.根据权利要求13所述的数据库同步装置,其特征在于,所述变更处理模块通过开启与所述待同步区数量相同的工作线程并行处理所述待同步区内的数据变更记录的变更,包括
多个工作线程并行处理所述待同步区的第二分区内的历史数据变更记录的变更;
待所有工作线程完成所述历史数据变更记录的变更后,多个工作线程并行处理所述待同步区的第一分区内的当前数据变更记录的变更。
15.根据权利要求10所述的数据库同步装置,其特征在于,执行所述事务操作包括执行事务的开启、提交和回滚中的至少一种。
16.根据权利要求15所述的数据库同步装置,其特征在于,所述事务操作模块在执行所述数据变更记录的事务操作后,还包括
持久化所述数据变更记录到数据文件;
记录所述持久化进度。
17.根据权利要求16所述的数据库同步装置,其特征在于,所述事务操作模块在持久化所述数据变更记录到数据文件,包括
获取所述数据变更记录所在的数据页的日志序列号;
当所述数据变更记录所在的数据页完成变更后,通过预定算法将所述日志序列号***到需持久化数据页的刷新列表;
根据所述刷新列表刷新所述数据页到数据文件完成持久化。
18.根据权利要求17所述的数据库同步装置,其特征在于,所述事务操作模块记录所述持久化进度,包括
获取已完成持久化的数据页的日志序列号;
确定所述日志序列号中自初始且连续的最大的日志序列号为所述持久化进度。
19.一种服务器,其特征在于,所述服务器包括
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-9中任一所述的数据库同步方法。
20.一种计算机可读存储介质,所述计算机可读存储介质包含计算机可执行指令,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-9中任一所述的数据库同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811179517.6A CN109271450B (zh) | 2018-10-10 | 2018-10-10 | 数据库同步方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811179517.6A CN109271450B (zh) | 2018-10-10 | 2018-10-10 | 数据库同步方法、装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271450A true CN109271450A (zh) | 2019-01-25 |
CN109271450B CN109271450B (zh) | 2020-12-04 |
Family
ID=65196391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811179517.6A Active CN109271450B (zh) | 2018-10-10 | 2018-10-10 | 数据库同步方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271450B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918178A (zh) * | 2019-03-06 | 2019-06-21 | 恒生电子股份有限公司 | 事务提交方法及相关装置 |
CN109977168A (zh) * | 2019-03-18 | 2019-07-05 | 武汉达梦数据库有限公司 | 基于数据页预加载的数据库数据同步方法及设备 |
CN110008284A (zh) * | 2019-03-18 | 2019-07-12 | 武汉达梦数据库有限公司 | 基于数据页预加载及回滚的数据库数据同步方法及设备 |
CN110222115A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 基于表初始化分组装载的数据库同步方法及设备 |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
CN110489092A (zh) * | 2019-08-27 | 2019-11-22 | 四川长虹电器股份有限公司 | 一种数据库读写分离架构下读取数据延迟问题的解决方法 |
CN110716939A (zh) * | 2019-10-16 | 2020-01-21 | 深圳市网心科技有限公司 | 数据管理方法、电子设备、***及介质 |
CN111177144A (zh) * | 2019-10-17 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 表同步方法、装置、设备、存储介质及*** |
CN111273859A (zh) * | 2020-01-14 | 2020-06-12 | 北京百度网讯科技有限公司 | 分发模式下复制组成员的变更方法、装置、设备和介质 |
CN111400309A (zh) * | 2020-02-23 | 2020-07-10 | 中国平安财产保险股份有限公司 | 数据更新方法、电子装置及可读存储介质 |
CN112231409A (zh) * | 2020-10-23 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 数据库同步的初始化装载方法、装置、设备和存储介质 |
CN112699177A (zh) * | 2019-10-22 | 2021-04-23 | ***通信集团安徽有限公司 | 一种流量话单数据同步方法、***、计算设备和存储介质 |
CN112765265A (zh) * | 2020-12-30 | 2021-05-07 | 杭州贝嘟科技有限公司 | 数据同步方法、装置、计算机设备和可读存储介质 |
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113468196A (zh) * | 2021-07-19 | 2021-10-01 | 京东科技控股股份有限公司 | 用于处理数据的方法、装置、***、服务器和介质 |
CN114116665A (zh) * | 2021-11-22 | 2022-03-01 | 北京海量数据技术股份有限公司 | 数据库中并行写入事务日志以提升处理效率的方法 |
CN114328719A (zh) * | 2021-11-30 | 2022-04-12 | 唯品会(广州)软件有限公司 | 数据库语句同步方法、***、电子设备及计算机可读存储介质 |
CN114647659A (zh) * | 2020-12-17 | 2022-06-21 | 金篆信科有限责任公司 | 数据处理方法、装置、电子设备、存储介质 |
US11860897B2 (en) | 2019-06-07 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN105426410A (zh) * | 2015-11-02 | 2016-03-23 | 东软集团股份有限公司 | 数据采集***和用于数据采集***的分析方法 |
CN105701190A (zh) * | 2016-01-07 | 2016-06-22 | 深圳市金证科技股份有限公司 | 一种数据同步的方法和装置 |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息***股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN107025242A (zh) * | 2016-02-02 | 2017-08-08 | 南京中兴新软件有限责任公司 | 数据库间数据的复制方法及装置 |
CN107391635A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步***及方法 |
-
2018
- 2018-10-10 CN CN201811179517.6A patent/CN109271450B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
US20150254264A1 (en) * | 2013-12-30 | 2015-09-10 | Huawei Technologies Co., Ltd. | Method for Recording Transaction Log, and Database Engine |
CN105426410A (zh) * | 2015-11-02 | 2016-03-23 | 东软集团股份有限公司 | 数据采集***和用于数据采集***的分析方法 |
CN105701190A (zh) * | 2016-01-07 | 2016-06-22 | 深圳市金证科技股份有限公司 | 一种数据同步的方法和装置 |
CN107025242A (zh) * | 2016-02-02 | 2017-08-08 | 南京中兴新软件有限责任公司 | 数据库间数据的复制方法及装置 |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息***股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN107391635A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步***及方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918178B (zh) * | 2019-03-06 | 2021-04-30 | 恒生电子股份有限公司 | 事务提交方法及相关装置 |
CN109918178A (zh) * | 2019-03-06 | 2019-06-21 | 恒生电子股份有限公司 | 事务提交方法及相关装置 |
CN109977168A (zh) * | 2019-03-18 | 2019-07-05 | 武汉达梦数据库有限公司 | 基于数据页预加载的数据库数据同步方法及设备 |
CN110008284A (zh) * | 2019-03-18 | 2019-07-12 | 武汉达梦数据库有限公司 | 基于数据页预加载及回滚的数据库数据同步方法及设备 |
CN109977168B (zh) * | 2019-03-18 | 2021-11-05 | 武汉达梦数据库股份有限公司 | 基于数据页预加载的数据库数据同步方法及设备 |
CN110222115A (zh) * | 2019-04-30 | 2019-09-10 | 武汉达梦数据库有限公司 | 基于表初始化分组装载的数据库同步方法及设备 |
US11860897B2 (en) | 2019-06-07 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
CN110489092A (zh) * | 2019-08-27 | 2019-11-22 | 四川长虹电器股份有限公司 | 一种数据库读写分离架构下读取数据延迟问题的解决方法 |
CN110716939A (zh) * | 2019-10-16 | 2020-01-21 | 深圳市网心科技有限公司 | 数据管理方法、电子设备、***及介质 |
CN111177144A (zh) * | 2019-10-17 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 表同步方法、装置、设备、存储介质及*** |
CN111177144B (zh) * | 2019-10-17 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 表同步方法、装置、设备、存储介质及*** |
CN112699177A (zh) * | 2019-10-22 | 2021-04-23 | ***通信集团安徽有限公司 | 一种流量话单数据同步方法、***、计算设备和存储介质 |
CN111273859B (zh) * | 2020-01-14 | 2023-09-15 | 北京百度网讯科技有限公司 | 分发模式下复制组成员的变更方法、装置、设备和介质 |
CN111273859A (zh) * | 2020-01-14 | 2020-06-12 | 北京百度网讯科技有限公司 | 分发模式下复制组成员的变更方法、装置、设备和介质 |
CN111400309A (zh) * | 2020-02-23 | 2020-07-10 | 中国平安财产保险股份有限公司 | 数据更新方法、电子装置及可读存储介质 |
CN111400309B (zh) * | 2020-02-23 | 2023-09-15 | 中国平安财产保险股份有限公司 | 数据更新方法、电子装置及可读存储介质 |
CN112231409A (zh) * | 2020-10-23 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 数据库同步的初始化装载方法、装置、设备和存储介质 |
CN112231409B (zh) * | 2020-10-23 | 2024-04-26 | 北京人大金仓信息技术股份有限公司 | 数据库同步的初始化装载方法、装置、设备和存储介质 |
CN114647659A (zh) * | 2020-12-17 | 2022-06-21 | 金篆信科有限责任公司 | 数据处理方法、装置、电子设备、存储介质 |
CN112765265A (zh) * | 2020-12-30 | 2021-05-07 | 杭州贝嘟科技有限公司 | 数据同步方法、装置、计算机设备和可读存储介质 |
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113190281B (zh) * | 2021-04-08 | 2022-05-17 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
CN113468196B (zh) * | 2021-07-19 | 2024-04-05 | 京东科技控股股份有限公司 | 用于处理数据的方法、装置、***、服务器和介质 |
CN113468196A (zh) * | 2021-07-19 | 2021-10-01 | 京东科技控股股份有限公司 | 用于处理数据的方法、装置、***、服务器和介质 |
CN114116665A (zh) * | 2021-11-22 | 2022-03-01 | 北京海量数据技术股份有限公司 | 数据库中并行写入事务日志以提升处理效率的方法 |
CN114328719A (zh) * | 2021-11-30 | 2022-04-12 | 唯品会(广州)软件有限公司 | 数据库语句同步方法、***、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109271450B (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271450A (zh) | 数据库同步方法、装置、服务器和存储介质 | |
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN109359222A (zh) | 数据存储方法及***、设备和存储介质 | |
CN107688500A (zh) | 一种分布式任务处理方法、装置、***及设备 | |
CN108475271A (zh) | 容器数据库的应用容器 | |
CN109508355A (zh) | 一种数据抽取方法、***及终端设备 | |
CN107463610B (zh) | 一种数据入库方法及装置 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及*** | |
CN108197139A (zh) | 一种同步更新配置项的处理方法及终端 | |
CN109857803A (zh) | 数据同步方法、装置、设备、***及计算机可读存储介质 | |
CN107562931A (zh) | 数据抽取***和数据抽取方法 | |
CN109800401A (zh) | 信息报表自动生成方法及装置 | |
CN108255909A (zh) | 基于Oracle数据库的数据表备份方法及服务器 | |
CN110597821B (zh) | 数据仓库表结构变更方法及装置 | |
CN107729423A (zh) | 一种大数据处理方法及装置 | |
CN108446315A (zh) | 大数据迁移方法、装置、设备及存储介质 | |
CN110019200A (zh) | 一种索引的建立、使用方法及装置 | |
CN106445645B (zh) | 用于执行分布式计算任务的方法和装置 | |
CN107861933A (zh) | 生成运维报表的方法和装置 | |
CN110019512A (zh) | 一种数据处理方法及装置 | |
CN110457333A (zh) | 数据实时更新方法、装置及计算机可读存储介质 | |
CN104182295B (zh) | 一种数据备份方法及装置 | |
CN116401407A (zh) | 思维导图的节点属性配置方法、装置、设备和存储介质 | |
CN108415758A (zh) | 分布式事务协调方法及装置 | |
CN108268615A (zh) | 一种数据处理方法、装置以及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |