CN110019502B - 在主数据库和备数据库之间的同步方法、数据库系统和设备 - Google Patents
在主数据库和备数据库之间的同步方法、数据库系统和设备 Download PDFInfo
- Publication number
- CN110019502B CN110019502B CN201710758538.2A CN201710758538A CN110019502B CN 110019502 B CN110019502 B CN 110019502B CN 201710758538 A CN201710758538 A CN 201710758538A CN 110019502 B CN110019502 B CN 110019502B
- Authority
- CN
- China
- Prior art keywords
- log
- database
- transaction
- difference
- acquiring
- 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
Images
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/2358—Change logging, detection, and notification
-
- 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
Abstract
本申请实施例公开了一种在主数据库和备数据库之间的同步方法、数据库系统和设备,该方法包括:主数据库响应于事务提交请求,获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;当该日志差异量大于第一阈值时,暂停事务提交操作;当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
Description
技术领域
本申请涉及数据库领域,尤其涉及一种在主数据库和备数据库之间的同步方法、数据库系统和设备。
背景技术
在数据库系统中,当主数据库发生宕机等异常,无法对外服务时,需要切换到备数据库,由备数据库继续提供服务。主备之间的数据同步模式主要分为同步模式和异步模式,两种模式各有缺点。在同步模式时,主数据库的数据变更的日志必须同步到备数据库才能继续提供服务,一旦主备之间网络抖动延迟或者备数据库临时卡顿,那么数据库的响应会受到严重影响。异步模式时,主数据库的数据变更的日志无需等待同步到备数据库,缺点是一旦主数据库不可用时,切换到备数据库后会丢失大量数据。
现有的一种主备同步方案,在正常情况下主备之间采用同步模式,一旦备数据库超过一定时间未回应,主备之间采用异步模式。但是,这种方案进入异步模式后,一旦主数据库不可用时,切换到备数据库后仍然丢失大量数据。
发明内容
本申请实施例提供了一种在主数据库和备数据库之间的同步方法、数据库系统和设备,能够在保证数据库及时响应的同时,避免在主数据库不可用时丢失大量数据。
第一方面,提供了一种在主数据库和备数据库之间的同步方法,该方法包括:
响应于事务提交请求,获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当该日志差异量大于第一阈值时,暂停事务提交操作;
当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
第二方面,提供了一种数据库系统,该数据库系统包括:
获取单元,响应于事务提交请求,获取数据库系统的事务日志和已同步到备数据库的事务日志之间的日志差异量;
等待单元,当该日志差异量大于第一阈值时,暂停事务提交操作;
执行单元,当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:
响应于事务提交请求,获取该电子设备中的主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当该日志差异量大于第一阈值时,暂停事务提交操作;
当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
第四方面,提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序当被包括多个应用程序的电子设备执行时,使得该电子设备执行以下操作:
响应于事务提交请求,获取该电子设备中的主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当该日志差异量大于第一阈值时,暂停事务提交操作;
当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
基于以上技术方案,本申请实施例的主数据库响应于事务提交请求,通过根据主备数据库之间的日志差异量决定暂停事务提交操作还是执行事务提交操作,从而能够在保证数据库及时响应的同时避免在主数据库不可用时丢失大量数据,一定程度上提高了数据库系统的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一个实施例在主数据库和备数据库之间同步的方法流程图。
图2是本申请的一个实施例在主数据库和备数据库之间同步的具体流程图。
图3是本申请的一个实施例在主数据库和备数据库之间同步的具体流程图。
图4是本申请的一个实施例主数据库提醒的具体流程图。
图5是本申请的另一个实施例主数据库提醒的具体流程图。
图6是本申请的一个实施例电子设备的结构示意图。
图7是本申请的一个实施例的数据库系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能,通常数据库都是保证在提交(commit)完成之前要先保证日志都被写入到日志文件中,而脏数据块着保存在数据缓存(buffer cache)中再不定期的分批写入到数据文件中。也就是说日志写入和提交操作是同步的,而数据写入和提交操作是不同步的。
图1是本申请的一个实施例在主数据库和备数据库之间同步的方法流程图。图1的方法由主数据库执行。在本申请实施例中,主数据库的事务日志被同步到备数据库,以通过事务日志在备数据库中还原主数据库的操作,从而实现主数据库和备数据库之间的同步。图1的方法包括:
S102,响应于事务提交请求,获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量。
数据库事务,是指数据库中作为单个逻辑工作单元执行的一系列操作,这一系列操作具有一致性,要么全部执行,要么全部不执行。
在本申请实施例中,事务日志是指数据库事务执行后产生的日志。
S104,当该日志差异量大于第一阈值时,暂停事务提交操作。
应理解,在本申请实施例中,主数据库可暂停事务提交操作,直至该日志差异量小于或等于第一预定阈值。
可选地,作为一个实施例,该事务提交操作包括主数据库中已经开始执行和准备执行的事务提交操作。此时,暂停事务提交操作,包括:暂停主数据库中已经开始执行和准备执行的事务提交操作,即暂停主数据库中的所有事务提交操作。本申请实施例中,通过暂停所有事务提交操作,可避免事务日志再次增长。
或者,可选地,作为一个实施例,该事务提交操作包括该事务提交请求对应的事务提交操作。此时,暂停事务提交操作,包括:暂停该事务提交请求对应的事务提交操作。本申请实施例中,通过暂停事务提交请求对应的事务提交操作,可一定程度避免事务日志再次增长,同时避免对主数据库的其它事务提交操作的影响。
S106,当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
应理解,在本申请实施例中,主数据库的事务日志被同步到该被数据库中,该同步操作与事务提交操作互相不干扰。
应理解,当事务提交操作被暂停时,事务日志持续地被同步到备数据库中,主备数据库之间的日志差异量也不断减小。当该日志差异量小于或等于该第一阈值时,此时,执行事务提交操作,包括:执行被暂停的事务提交操作。特别地,如果被暂停的事务提交操作只包括该事务提交请求对应的事务提交操作,则执行事务提交操作,包括:执行该事务提交请求对应的事务提交操作。当然,应理解,在本申请实施例中,如果日志差异量一直小于或等于该第一阈值,则不存在被暂停的事务提交操作,直接执行事务提交请求对应的事务提交操作即可。
在本申请实施例中,主数据库响应于事务提交请求,通过根据主备数据库之间的日志差异量决定暂停事务提交操作还是执行事务提交操作,从而能够在保证数据库及时响应的同时,避免在主数据库不可用时丢失大量数据,一定程度上提高了数据库系统的性能。
当然,应理解,本申请实施例的方法,也可以说是一种主数据库执行事务提交操作的方法。
可选地,作为一个实施例,该方法还包括:将执行该事务提交操作的事务日志写到该主数据库的事务日志中。
可选地,作为一个实施例,步骤S102具体实现为:获取该主数据库中最新的写入日志位点;获取该主数据库中最新的已发送日志位点;根据该最新日志位点和该已发送日志位点确定该日志差异量。
应理解,在数据库中,可用日志位点描述某个时间点对应的日志的位置。一般情况下,可使用数据库中的checkpoint表来记录日志位点信息。
本申请实施例中,通过根据主数据库中最新的已发送日志位点和主数据库中最新的写入日志位点,确定主备数据库之间的日志差异量,从而能够准确地获取主备数据库之间的日志差异量。
进一步地,该主数据库记录着传输到该备数据库的已发送日志的位点。
可选地,该方法还可包括:当该日志差异量大于第二阈值时,向管理员发送第一提示信息。其中,该提示第一信息用于提醒管理员。
应理解,该提示信息可用于提醒管理员当前数据同步的状态,以便管理员进行相应的操作,例如检查备数据库,重启备数据库,等等。
进一步地,该第一阈值与该第二阈值相同。
或者,进一步地,该第一阈值与该第二阈值不同。应理解,第二阈值可以小于第一阈值,也可以大于第一阈值。
可选地,该方法还可包括:监控预定时间内该主数据库的事务日志和已同步到该备数据库的事务日志之间的日志差异量的增长速度;如果该增长速度大于第三阈值,则向管理员发送第二提示信息。
可选地,作为一个实施例,该主数据库的事务日志是由该主数据库同步到该备数据库中的。应理解,在本申请实施例中,主数据库同步事务日志到备数据库的操作可以由一个独立的同步线程或同步模块执行,不依赖于事务提交操作。
可选地,作为另一个实施例,该主数据库的事务日志是由第三方装置同步到该备数据库中的。
可选地,作为另一个实施例,该主数据库的事务日志是由该备数据库主动同步到该备数据库中的。
下面,将结合具体的实施例,对本申请实施例的方法作进一步的描述。
图2是本申请的一个实施例在主数据库和备数据库之间同步的具体流程图。在图2所示的场景中,主数据库通过同步模块将事务日志同步到备数据库,通过事务提交模块实现事务的提交。同步模块与事务提交模块之间不存在直接的耦合关系。当然,应理解,图2所示的主数据库的功能模块仅仅是示意性的,在实际的应用中,可能有不同的实现方式。图2的方法可包括:
201,主数据库同步事务日志到备数据库中。
应理解,在本申请实施例中,主数据库同步事务日志到备数据库的过程是一个持续性的过程,主数据库可定时进行数据同步,或者不间断地进行数据同步,本申请实施例在此不做限制。
具体地,例如,主数据库可通过同步模块,例如,独立的同步线程等,将主数据库的事务日志同步到备数据库中。
此外,在主数据库同步事务日志到备数据库的过程中,主数据库会记录传输到该备数据库的已发送日志的位点。
202,主数据库准备响应事务提交请求。
应理解,主数据库可通过事务提交模块控制对事务提交请求的响应。
在本申请实施例中,当主数据库准备响应事务提交请求时,需要获取主备数据库之间的日志差异量,即执行步骤203。
203,主数据库获取主备数据库之间的日志差异量。
具体地,主数据库可获取该主数据库中最新的写入日志位点,以及该主数据库中最新的已发送日志位点,然后根据该最新日志位点和该已发送日志位点确定该日志差异量。
具体地,该日志差异量可以有多种表现形式。
可选地,该日志差异量可以是主备数据库之间的差异日志的字节数。主备数据库之间的差异日志,是指主数据库相对于备数据库多出的事务日志。例如,假设主数据库中最新的写入日志位点为A,主数据库中最新的已发送日志位点为B,主数据库根据已发送日志位点B与写入日志位点A,可确定已发送日志位点B与写入日志位点A之间的事务日志的总字节数,该总字节数即为主备数据库之间的日志差异量。
或者,可选地,该日志差异量可以是主备数据库之间的差异日志的日志行数,即主数据库相对于备数据库多出的事务日志的行数。例如,假设主数据库中最新的写入日志位点为A,主数据库中最新的已发送日志位点为B,假设写入日志位点A对应的数据行号为row1,已发送日志位点B对应的数据行号为row2,则可确定已发送日志位点B与写入日志位点A之间的事务日志的行数为row2-row1,该日志行数即为主备数据库之间的日志差异量。
或者,可选地,该日志差异量可以是该日志差异量可以是主备数据库之间的差异日志的数据块数量,即主数据库相对于备数据库多出的事务日志的数据块数量。例如,假设主数据库中最新的写入日志位点为A,主数据库中最新的已发送日志位点为B,假设写入日志位点A对应的日志序号(Log Sequence Number,LSN)为LSN1,已发送日志位点B对应的LSN为LSN2,则可确定已发送日志位点B与写入日志位点A之间的事务日志的数据块差异量大约为LSN2-LSN1,数据块数量LSN2-LSN1即为主备数据库之间的日志差异量。
当然,应理解,主备数据库之间日志差异量还可以用其它的计量单位表示,本申请实施例在此不作限制。
204,主数据库判断日志差异量是否大于第一阈值。
当主数据库获取主备数据库之间的日志差异量后,可判断主备数据库之间的日志差异量是否大于第一阈值。
如果主备数据库之间的日志差异量大于第一阈值,则执行步骤205;如果主备数据库之间的日志差异量小于或等于第一阈值,则执行步骤206。
以主备数据库之间的差异日志的字节数作为日志差异量为例,不妨假设第一阈值为10M。如果当前主备数据库之间的日志差异量小于或等于10M,例如为5M、8M等,则当主数据库准备准备响应事务提交请求时,可直接执行步骤206;如果当前主备数据库之间的日志差异量大于10M,例如为11M等,则当主数据库准备准备响应事务提交请求时,需要执行步骤205,暂停事务提交操作,等待同步进程或同步模块执行日志同步操作。
以主备数据库之间的差异日志的数据块数量作为日志差异量为例,不妨假设第一阈值为100个数据块。假设已备份到备数据库的最近一个日志位点的LSN标识为100001,如果主数据库最新写入的事务日志的位点对应的LSN标识小于或等于100101,当主数据库准备准备响应事务提交请求时,可直接执行步骤206;如果主数据库最新写入的事务日志的位点对应的LSN标识大于100101,当主数据库准备准备响应事务提交请求时,需要执行步骤205,暂停事务提交操作,等待同步进程或同步模块执行日志同步操作。
205,暂停事务提交操作,等待预定时间。
应理解,如步骤201所述,主数据库中的事务日志可持续性地被同步到备数据库中。
如果主备数据库之间的日志差异量大于第一阈值,则主数据库可暂停事务提交操作。
应理解,在本申请实施例中,主数据库可暂停事务提交操作,直至主备数据库之间的日志差异量小于或等于第一阈值。
具体地,主数据库可在等待预定时间后,执行步骤203。应理解,主数据库可设定一个预定时间,每等待预定时间,即可通过步骤203获取主备数据库之间的日志差异量,再通过步骤204比较日志差异量与第一阈值的关系,确定是否继续暂停事务提交操作。
应理解,在本申请实施例中,主数据库可暂停主数据库中已经开始执行和准备执行的事务提交操作,也可只暂停该事务提交请求对应的事务提交操作。
206,执行事务提交操作。
应理解,如果日志差异量从大于第一阈值变化为小于或等于第一阈值,则显然步骤205被执行。此时,执行事务提交操作包括:执行被暂停的事务提交操作。特别地,如果被暂停的事务提交操作只包括步骤202的事务提交请求对应的事务提交操作,则只需执行该事务提交请求对应的事务提交操作;如果被暂停的事务提交操作包括主数据库中已经开始执行和准备执行的事务提交操作,则执行事务提交操作包括:执行所有被暂停的事务提交操作。
如果不存在日志差异量的第一阈值的情况,当主数据库判断主备数据库之间的日志差异量小于或等于第一阈值,则主数据库可直接响应事务提交请求,执行该事务提交请求对应的事务的提交操作。
应理解,在本申请实施例中,可在主数据库中增加一个日志延迟量max_log_delay参数,本申请实施例的第一阈值即为该max_log_delay参数。只要主备之间的延迟在max_log_delay之内,那么主备是异步模式,如果超出这个范围,那么将会进入同步模式。这样网络抖动或者备库临时卡顿都不会影响主库的响应,同时,一旦主库不可用,进行主备切换,那么数据丢失量也会严格控制在max_log_delay之内。max_log_delay参数,例如,可默认设为8M,等等。
当然,应理解,在本实施例中,如果日志差异量等于第一阈值,主数据库也可执行步骤205,直至日志差异量小于第一阈值。此时,在步骤206中,主备数据库之间的日志差异量小于第一阈值。
图3是本申请的一个实施例在主数据库和备数据库之间同步的具体流程图。图3的方法可包括:
301,同步装置将主数据库的事务日志同步到备数据库。
应理解,在本申请实施例中,同步装置将主数据库的事务日志同步到备数据库的过程是一个持续性的过程。
在本实施例中,同步装置在同步事务日志时,会在主数据库上记录已同步到备数据库的事务日志的位点。
应理解,在本实施例中,该同步装置可以是主数据库和备数据库以外的第三方装置,也可以是位于备数据库上的装置。
302,主数据库准备响应事务提交请求。
303,主数据库获取主备数据库之间的日志差异量。
304,主数据库判断日志差异量是否大于第一阈值。
如果主备数据库之间的日志差异量大于第一阈值,则执行步骤305;如果主备数据库之间的日志差异量小于或等于第一阈值,则执行步骤306。
305,暂停事务提交操作,等待预定时间。
主数据库暂停事务提交操作,并在等待预定时间后,执行步骤303。
306,执行事务提交操作。
步骤302-306的具体实现可参考图2的步骤202-206,本申请实施例在此不再赘述。
应理解,图2、图3只是示出了主数据库在事务提交时如何根据日志差异量确定提交方式的场景。在具体的应用中,还可使得主备同步功能的维护更加友好。
图4是本申请的一个实施例主数据库提醒的具体流程图。
401,主数据库同步事务日志到备数据库中。
402,主数据库准备响应事务提交请求。
403,主数据库获取主备数据库之间的日志差异量。
404,主数据库判断日志差异量是否大于第一阈值。
405,暂停事务提交操作,等待预定时间。
406,执行事务提交操作。
步骤401-406的具体实现可参考图2所示实施例,本申请实施例在此不再赘述。
407,判断日志差异量是否大于第二阈值。
应理解,判断日志差异量是否大于第二阈值的方式与判断日志差异量是否大于第一阈值的方式类似,不再赘述。
应理解,第二阈值可以与第一阈值相同,也可以大于第一阈值,或者小于第一阈值。例如,假设第一阈值设定为10M,则第二阈值可以取值为10M,也可以取值为20M,或者取值为8M等等。
如果日志差异量大于第二阈值,则执行步骤408。
408,向管理员发送提示信息。
应理解,在本申请实施例中,该管理员可以是直接管理主数据库的人员,或者是与管理主数据库的职能相关的人员。
应理解,在本申请实施例中,主数据库可向管理员发送提示信息,将主备数据库之间的同步状态信息通知给管理员,以便管理员进行相应的处理操作。
应理解,主数据库可通过多种方式发送提示信息。例如,可以向管理员的email发送邮件,给管理员的手机发送短信,拨打管理员的语音电话,或者向管理员的即时通信工具发送语音信息和/或文本信息,等等。
本申请实施例中,通过及时向管理员发送提示信息,以将主备数据库之间的同步状态信息通知管理员,使得管理员可以及时对主备数据库进行维护,从而能够一定程度上减少故障发生的概率,或减少故障发生时的数据损失。
图5是本申请的另一个实施例主数据库提醒的具体流程图。图5的方法包括:
501,主数据库同步事务日志到备份数据库。
步骤501的具体实现可参考图2的步骤201。
502,主数据库监控主备数据库之间的日志差异量,并获取预定时间段内日志差异量的增长速度。
具体地,例如,主数据库可周期性获取主备数据库之间的日志差异量,然后根据至少两个时间点获取的日志差异量,得到某一时间段内日志差异量的增长速度。
503,判断日志差异量增长速度是否大于第三阈值。
当主数据库获取预定时间段内日志差异量的增长速度后,可判断日志差异量增长速度是否大于第三阈值
如果否,返回。
如果是,则说明备数据库可能发生异常,此时,可执行步骤504。
504,向管理员发送提示信息。
步骤501的具体实现可参考图4的步骤408。
当然,应理解,步骤504中发送的提示信息可与步骤408中发送的提示信息相同,也可以不同。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图6是本申请的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成接入层装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
响应于事务提交请求,获取该电子设备中的主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当该日志差异量大于第一阈值时,暂停事务提交操作;
当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
上述如本申请图1-5所示实施例揭示的主数据库执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的方法,并实现主数据库在图1-5所示实施例的功能,本申请实施例在此不再赘述。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法。
图7是本申请的一个实施例的数据库系统700的结构示意图。请参考图7,在一种软件实施方式中,数据库系统700可包括:获取单元710,等待单元720,和执行单元730,其中,
获取单元710,响应于事务提交请求,获取数据库系统700的事务日志和已同步到备数据库的事务日志之间的日志差异量;
暂停单元720,当该日志差异量大于第一阈值时,暂停事务提交操作;
执行单元730,当该日志差异量小于或等于该第一阈值时,执行事务提交操作。
应理解,在本申请实施例中,备数据库是指数据库系统700的备份数据库。
在本申请实施例中,数据库系统700响应于事务提交请求,通过在数据库系统700和备数据库之间的日志差异量决定暂停事务提交操作还是执行事务提交操作,从而能够在保证数据库系统700及时响应的同时避免在数据库系统700不可用时丢失大量数据,一定程度上提高了数据库系统的性能。
可选地,执行单元730,还将执行该事务提交操作的事务日志写到该数据库系统700的事务日志中。
可选地,作为一个实施例,暂停单元720,当该日志差异量大于第一阈值时,暂停该事务提交请求对应的事务提交操作;执行单元730,当该日志差异量小于或等于该第一阈值时,执行该事务提交请求对应的事务提交操作。
可选地,作为另一个实施例,暂停单元720,当该日志差异量大于第一阈值时,暂停所述主数据库中已经开始执行和准备执行的事务提交操作。
进一步地,执行单元730,当该日志差异量小于或等于该第一阈值时,执行被暂停的事务提交操作。
或者,进一步地,执行单元730,当该日志差异量小于或等于该第一阈值时,当不存在被暂停的事务提交操作时,执行所述事务提交请求对应的事务提交操作。
可选地,作为一个实施例,获取单元710具体用于:获取该数据库系统中最新的写入日志位点;获取该数据库系统中最新的已发送日志位点;根据该最新日志位点和该已发送日志位点确定该日志差异量。
进一步地,该数据库系统记录着传输到该备数据库的已发送日志的位点信息。
可选地,数据库系统700还包括第一提示单元740,用于当该日志差异量大于第二阈值时,向管理员发送第一提示信息。进一步地,该第一阈值与该第二阈值相同;或者,该第一阈值与该第二阈值不同。
可选地,数据库系统700还包括第二提示单元750,其中
获取单元710还获取预定时间内数据库系统700的事务日志和已同步到该备数据库的事务日志之间的日志差异量的增长速度;
如果该增长速度大于第三阈值,则第二提示单元750向管理员发送第二提示信息。
可选地,作为一个实施例,数据库系统700还包括同步单元760,将数据库系统700的事务日志同步到该备数据库中。
或者,可选地,作为另一个实施例,数据库系统700的事务日志是由第三方装置同步到该备数据库中的。
或者,可选地,作为另一个实施例,数据库系统700的事务日志是由该备数据库主动同步到该备数据库中的。
数据库系统700还可执行图1-5所示实施例中主数据库执行的方法,具体实现可参考图1-5所示实施例,本申请实施例在此不再赘述。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (12)
1.一种在主数据库和备数据库之间的同步方法,其特征在于,所述方法包括:
响应于事务提交请求,获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当所述日志差异量大于第一阈值时,暂停事务提交操作;
当所述日志差异量小于或等于所述第一阈值时,执行事务提交操作;
其中,所述获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量,包括:
获取所述主数据库中最新的写入日志位点;
获取所述主数据库中最新的已发送日志位点;
根据所述最新日志位点和所述已发送日志位点确定所述日志差异量。
2.如权利要求1所述的方法,其特征在于,
暂停事务提交操作,包括:暂停所述事务提交请求对应的事务提交操作;
执行事务提交操作,包括:执行所述事务提交请求对应的事务提交操作。
3.如权利要求1所述的方法,其特征在于,
暂停事务提交操作,包括:暂停所述主数据库中已经开始执行和准备执行的事务提交操作。
4.如权利要求1或3所述的方法,其特征在于,
执行事务提交操作,包括:
执行被暂停的事务提交操作;或者
当不存在被暂停的事务提交操作时,执行所述事务提交请求对应的事务提交操作。
5.如权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
将执行所述事务提交操作的事务日志写到所述主数据库的事务日志中。
6.如权利要求1所述的方法,其特征在于,
所述主数据库记录着传输到所述备数据库的已发送日志的位点。
7.如权利要求1-3中任一项所述的方法,其特征在于,当所述日志差异量大于第二阈值时,所述方法还包括:
向管理员发送第一提示信息。
8.如权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
监控预定时间内所述主数据库的事务日志和已同步到所述备数据库的事务日志之间的日志差异量的增长速度;
如果所述增长速度大于第三阈值,则向管理员发送第二提示信息。
9.如权利要求1-3中任一项所述的方法,其特征在于,
所述主数据库的事务日志是由所述主数据库同步到所述备数据库中的;或者
所述主数据库的事务日志是由第三方装置同步到所述备数据库中的;或者
所述主数据库的事务日志是由所述备数据库主动同步到所述备数据库中的。
10.一种数据库系统,其特征在于,包括:
获取单元,响应于事务提交请求,获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
暂停单元,当所述日志差异量大于第一阈值时,暂停事务提交操作;
执行单元,当所述日志差异量小于或等于所述第一阈值时,执行被暂停的事务提交操作;
所述获取单元具体用于:获取所述主数据库中最新的写入日志位点;获取所述主数据库中最新的已发送日志位点;根据所述最新日志位点和所述已发送日志位点确定所述日志差异量。
11.一种电子设备,其特征在于,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
响应于事务提交请求,获取所述电子设备中的主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当所述日志差异量大于第一阈值时,暂停事务提交操作;
当所述日志差异量小于或等于所述第一阈值时,执行被暂停的事务提交操作;
其中,所述获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量,包括:
获取所述主数据库中最新的写入日志位点;
获取所述主数据库中最新的已发送日志位点;
根据所述最新日志位点和所述已发送日志位点确定所述日志差异量。
12.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
响应于事务提交请求,获取所述电子设备中的主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量;
当所述日志差异量大于第一阈值时,暂停事务提交操作;
当所述日志差异量小于或等于所述第一阈值时,执行被暂停的事务提交操作;
其中,所述获取主数据库的事务日志和已同步到备数据库的事务日志之间的日志差异量,包括:
获取所述主数据库中最新的写入日志位点;
获取所述主数据库中最新的已发送日志位点;
根据所述最新日志位点和所述已发送日志位点确定所述日志差异量。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710758538.2A CN110019502B (zh) | 2017-08-29 | 2017-08-29 | 在主数据库和备数据库之间的同步方法、数据库系统和设备 |
EP18851867.4A EP3680787B1 (en) | 2017-08-29 | 2018-08-20 | Method for synchronization between primary database and standby database, database system and device |
PCT/CN2018/101262 WO2019042174A1 (zh) | 2017-08-29 | 2018-08-20 | 在主数据库和备数据库之间的同步方法、数据库系统和设备 |
US16/805,083 US11429594B2 (en) | 2017-08-29 | 2020-02-28 | Synchronization between primary database and secondary database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710758538.2A CN110019502B (zh) | 2017-08-29 | 2017-08-29 | 在主数据库和备数据库之间的同步方法、数据库系统和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019502A CN110019502A (zh) | 2019-07-16 |
CN110019502B true CN110019502B (zh) | 2023-03-21 |
Family
ID=65524915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710758538.2A Active CN110019502B (zh) | 2017-08-29 | 2017-08-29 | 在主数据库和备数据库之间的同步方法、数据库系统和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11429594B2 (zh) |
EP (1) | EP3680787B1 (zh) |
CN (1) | CN110019502B (zh) |
WO (1) | WO2019042174A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046051A (zh) * | 2019-11-08 | 2020-04-21 | 网联清算有限公司 | 数据一致性实现方法、装置及存储介质 |
CN111078418B (zh) * | 2019-12-23 | 2024-04-16 | 北京奇艺世纪科技有限公司 | 操作同步方法、装置、电子设备及计算机可读存储介质 |
CN111241047B (zh) * | 2020-04-26 | 2020-08-21 | 北京信安世纪科技股份有限公司 | 一种文件同步方法及装置 |
CN113297229B (zh) * | 2020-06-23 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 路由读请求、反馈报文的方法以及各自装置、数据库 |
CN114490188A (zh) * | 2022-02-09 | 2022-05-13 | 北京奥星贝斯科技有限公司 | 同步主备数据库的方法及装置 |
CN115329006B (zh) * | 2022-08-31 | 2023-08-04 | 保利和悦生活科技服务有限公司 | 一种网络商城后台与第三方接口的数据同步方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN101436209A (zh) * | 2008-12-15 | 2009-05-20 | 中兴通讯股份有限公司 | 一种多数据库同步的方法和装置 |
CN106776121A (zh) * | 2016-11-23 | 2017-05-31 | 中国工商银行股份有限公司 | 一种数据灾备装置、系统及方法 |
CN106815094A (zh) * | 2015-12-02 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种用于实现主备同步模式下事务提交的方法与设备 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2708386B2 (ja) * | 1994-03-18 | 1998-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 同時更新及び複写手順を通して重複データベースを回復させる方法及び装置 |
US6421688B1 (en) | 1999-10-20 | 2002-07-16 | Parallel Computers Technology, Inc. | Method and apparatus for database fault tolerance with instant transaction replication using off-the-shelf database servers and low bandwidth networks |
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
US6332198B1 (en) | 2000-05-20 | 2001-12-18 | Equipe Communications Corporation | Network device for supporting multiple redundancy schemes |
US7062642B1 (en) | 2000-05-20 | 2006-06-13 | Ciena Corporation | Policy based provisioning of network device resources |
WO2002065309A1 (en) | 2001-02-13 | 2002-08-22 | Candera, Inc. | System and method for policy based storage provisioning and management |
KR100625595B1 (ko) * | 2001-05-28 | 2006-09-20 | 한국전자통신연구원 | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 |
US7103619B1 (en) | 2002-09-26 | 2006-09-05 | Unisys Corporation | System and method for automatic audit data archiving within a remote database backup system |
US7801851B2 (en) | 2003-06-30 | 2010-09-21 | Gravic, Inc. | Method for ensuring referential integrity in multi-threaded replication engines |
US7269607B2 (en) * | 2003-09-29 | 2007-09-11 | International Business Machines Coproartion | Method and information technology infrastructure for establishing a log point for automatic recovery of federated databases to a prior point in time |
JP4452533B2 (ja) | 2004-03-19 | 2010-04-21 | 株式会社日立製作所 | システムおよび記憶装置システム |
US20070088707A1 (en) * | 2004-09-15 | 2007-04-19 | Scott Durgin | Method for providing extensible software components within a distributed synchronization system |
US7882079B2 (en) | 2005-11-30 | 2011-02-01 | Oracle International Corporation | Database system configured for automatic failover with user-limited data loss |
US7668879B2 (en) | 2005-11-30 | 2010-02-23 | Oracle International Corporation | Database system configured for automatic failover with no data loss |
JP2007317028A (ja) * | 2006-05-26 | 2007-12-06 | Ns Solutions Corp | 情報処理装置、データベース管理システム、情報処理装置の制御方法及びプログラム |
US7480827B2 (en) | 2006-08-11 | 2009-01-20 | Chicago Mercantile Exchange | Fault tolerance and failover using active copy-cat |
US7827138B2 (en) * | 2006-10-02 | 2010-11-02 | Salesforce.Com, Inc. | Method and system for synchronizing a server and an on-demand database service |
US20080140734A1 (en) * | 2006-12-07 | 2008-06-12 | Robert Edward Wagner | Method for identifying logical data discrepancies between database replicas in a database cluster |
US8442962B2 (en) * | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
US8510267B2 (en) | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
US9430275B2 (en) * | 2011-06-03 | 2016-08-30 | Oracle International Corporation | Synchronization between concurrent notifier and waiter transactions using transaction condition variables |
KR20150021117A (ko) | 2012-06-18 | 2015-02-27 | 액티피오 인크. | 강화형 데이터 관리 가상화 시스템 |
US9430491B2 (en) | 2013-01-11 | 2016-08-30 | Commvault Systems, Inc. | Request-based data synchronization management |
CN105159795A (zh) * | 2015-08-21 | 2015-12-16 | 小米科技有限责任公司 | 数据同步方法、装置和系统 |
CN106897288B (zh) * | 2015-12-18 | 2021-01-08 | 阿里巴巴集团控股有限公司 | 数据库的服务提供方法和系统 |
US10831398B2 (en) * | 2016-09-19 | 2020-11-10 | International Business Machines Corporation | Storage device efficiency during data replication |
-
2017
- 2017-08-29 CN CN201710758538.2A patent/CN110019502B/zh active Active
-
2018
- 2018-08-20 WO PCT/CN2018/101262 patent/WO2019042174A1/zh unknown
- 2018-08-20 EP EP18851867.4A patent/EP3680787B1/en active Active
-
2020
- 2020-02-28 US US16/805,083 patent/US11429594B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7290015B1 (en) * | 2003-10-02 | 2007-10-30 | Progress Software Corporation | High availability via data services |
CN101436209A (zh) * | 2008-12-15 | 2009-05-20 | 中兴通讯股份有限公司 | 一种多数据库同步的方法和装置 |
CN106815094A (zh) * | 2015-12-02 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种用于实现主备同步模式下事务提交的方法与设备 |
CN106776121A (zh) * | 2016-11-23 | 2017-05-31 | 中国工商银行股份有限公司 | 一种数据灾备装置、系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3680787A1 (en) | 2020-07-15 |
CN110019502A (zh) | 2019-07-16 |
EP3680787A4 (en) | 2021-01-20 |
US11429594B2 (en) | 2022-08-30 |
EP3680787B1 (en) | 2024-05-01 |
WO2019042174A1 (zh) | 2019-03-07 |
US20200201845A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019502B (zh) | 在主数据库和备数据库之间的同步方法、数据库系统和设备 | |
KR102077898B1 (ko) | 데이터베이스 고장 시의 데이터 저장 | |
US10884623B2 (en) | Method and apparatus for upgrading a distributed storage system | |
WO2016127903A1 (zh) | 一种数据同步方法、装置和系统 | |
CN109064327B (zh) | 一种智能合约处理方法、装置及设备 | |
CN110659256B (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
CN108170552B (zh) | 一种抓取Dump文件的方法、装置和设备 | |
CN111897493B (zh) | 存储空间管理方法、装置及电子设备、存储介质 | |
CN105630653A (zh) | Docker容器的CPU空闲率确定方法及装置 | |
CN111309548A (zh) | 一种超时监控方法、装置及计算机可读存储介质 | |
CN108829498B (zh) | 业务数据访问方法和装置 | |
CN108776670B (zh) | 一种异地容灾方法、系统和电子设备 | |
CN108108126B (zh) | 一种数据处理方法、装置及设备 | |
EP3933639A1 (en) | Transaction processing method, apparatus, and electronic device for blockchain | |
CN111913807B (zh) | 一种基于多个存储区域的事件处理方法、系统及装置 | |
CN116126581A (zh) | 内存故障处理方法、装置、系统、设备及存储介质 | |
CN111078418A (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN108681558B (zh) | 一种数据回滚方法、装置、及终端 | |
CN111159298A (zh) | 业务请求处理方法、装置、电子设备及存储介质 | |
CN115934742A (zh) | 一种故障处理方法、装置、设备及存储介质 | |
CN109189615A (zh) | 一种宕机处理方法和装置 | |
CN109271277B (zh) | 数据库宕机后的访问方法、装置和系统 | |
CN112463514A (zh) | 分布式缓存集群的监测方法和装置 | |
CN106375354B (zh) | 数据处理方法及装置 | |
CN107038077B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010809 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |