CN110121712B - 一种日志管理方法、服务器和数据库系统 - Google Patents
一种日志管理方法、服务器和数据库系统 Download PDFInfo
- Publication number
- CN110121712B CN110121712B CN201780055469.7A CN201780055469A CN110121712B CN 110121712 B CN110121712 B CN 110121712B CN 201780055469 A CN201780055469 A CN 201780055469A CN 110121712 B CN110121712 B CN 110121712B
- Authority
- CN
- China
- Prior art keywords
- transaction
- data
- server
- write transaction
- log
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
Abstract
本申请提供了一种日志管理方法、服务器和数据库系统。该方法包括:服务器接收第一写事务,并检测所述第一写事务是否为非确定事务,在该服务器检测到第一写事务为非确定事务时,该服务器生成并存储第一写事务的数据日志。根据本申请公开的技术方案,服务器节点可以用过判断写事务的类型,从而采取不同的日志策略,从服务器端检测接收到的写事务是否是非确定事务,如果写事务是非确定事务,则生成并存储该写事务的数据日志,后续通过数据日志进行非确定事务的数据恢复,从而保证数据恢复时恢复结果与原始结果相同。从而减少了业务端的复杂度,业务端不再需要通过复杂的设计以保证写事务不是非确定事务。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种日志管理方法、服务器和数据库系统。
背景技术
数据库日志(英文:database log)也称为事务日志(英文:transaction log),记录了对数据库执行的操作的历史(记录了对数据库的更改),是数据库中非常重要的部分,用于在系统崩溃或者故障的情况下,恢复存储数据。
数据库日志分为命令日志(英文:command log)和数据日志(英文:value log)。其中,命令日志记录对数据库的事务命令,不记录事务操作的结果。数据日志记录事务操作的结果。
日志有备份和副本复制两个功能。数据库系统的服务器节点在发生故障,数据丢失时,可以使用命令日志或数据日志进行数据的恢复。从节点可以通过回放主节点生成的命令日志或数据日志来保持与主节点的同步。当前,数据库系统一般采用固定且单一的日志策略。
发明内容
有鉴于此,本申请公开了一种日志管理方法、服务器和数据库系统。服务器节点接收到事务后,对事务的类型进行识别,并根据事务的类型选择生成和存储不同类型的日志。
第一方面,本申请公开了一种应用于数据库系统的数据库日志管理方法,该方法包括:服务器接收第一写事务,并检测所述第一写事务是否为非确定事务,在该服务器检测到第一写事务为非确定事务时,该服务器生成并存储第一写事务的数据日志。
其中,非确定事务是指两次执行结果可能不相同的事务,非确定事务至少两次执行的结果不唯一,在使用非确定事务的命令日志恢复数据时,可能会造成非确定事务的执行结果与原始结果不同,从而造成数据的错误。现有技术中,需要业务通过自身的处理,例如不使用非确定性的函数,或者使用特殊的函数或方法使得非确定写事务转变为确定性写事务,从而保证写事务不是非确定事务,以避免数据恢复中的错误,这样就加大了业务开发的负担。本申请通过合理的日志管理策略,从服务器端解决了上述问题,服务器节点检测接收到的写事务是否是非确定事务,如果该写事务是非确定事务,则生成并存储该写事务的数据日志,后续通过数据日志进行非确定事务的数据恢复,从而保证数据恢复时恢复结果与原始结果相同。
根据第一方面,在第一方面第一种可能的实现方式中,该方法还包括:该服务器生成并存储第一写事务的命令日志。
服务器节点接收到写事务后,不论写事务的类型,均生成写事务的数据日志,减少了判断的逻辑,且在数据恢复时,可以根据存储的命令日志判断写事务的类型,并根据写事务的类型选择不同的恢复策略。如果写事务是非确定事务,则获取该写事务的数据日志,使用数据日志恢复数据,如果写事务不是非确定事务,则可以使用该命令日志恢复数据。
根据第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,在该服务器发生数据故障,数据丢失时,该服务器获取数据快照和该数据快照生成时间点之后生成的命令日志,并根据命令日志的存储顺序,依次检测获取的命令日志对应的写事务是否是非确定事务,如果检测到获取的命令日志对应的写事务是非确定事务,则获取该命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。如果检测到获取的命令日志对应的写事务不是非确定事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是非确定事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复,其中,该数据快照用于对服务器进行数据备份。
该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。在数据恢复时,服务器通过存储的命令日志判断写事务的类型,如果写事务是非确定事务,则获取该写事务的数据日志,通过回放数据日志进行数据的恢复,从而保证了数据恢复的正确性。
根据第一方面第一种可能的实现方式,在第一方面第三种可能的实现方式中,该方法还包括:服务器接收第二写事务,生成并存储第二写事务的命令日志,并检测第二写事务是否是多分区事务,在检测到第二写事务为多分区事务时,该服务器生成并存储第二写事务的数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
多分区事务在执行过程中一般需要多个分区之间的相互通信或协调,执行过程一般比较复杂,执行时间较长。在本申请中,对于多分区事务,服务器节点生成并保存事务的数据日志,后续服务器节点在进行故障恢复或者从节点在进行数据同步时,只需要回放数据日志就可以实现目的。从而简化了数据恢复的流程。服务器可以先判断写事务是否是多分区事务,在写事务不是多分区事务的情况下,再判断写事务是否是非确定事务;服务器也可以先判断写事务是否是非确定事务,在写事务不是非确定事务的情况下,再判断写事务是否是多分区事务。
根据第一方面第三种可能的实现方式,在第一方面第四种可能的实现方式中,该方法还包括:在发生故障,数据丢失时,该服务器获取数据快照和该数据快照生成时间点之后生成的命令日志,并检测获取的命令日志对应的写事务是非确定事务或多分区事务,在检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取该命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,该数据快照用于对服务器进行数据备份。如果该写事务不是非确定事务,则从节点可以通过回放获取的命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是非确定事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
在申请通过灵活的日志管理策略,不但可以保证数据恢复的正确性,而且可以较小数据恢复的复杂度,加快数据恢复的速度。该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
根据第一方面,在第一方面第五种可能的实现方式中,该方法还包括:在该服务器检测到第一写事务为非确定事务时,服务器生成并存储第一写事务的标记信息,第一写事务的标记信息用于指示第一写事务存在数据日志。
对于已经生成数据日志的非确定事务,为了节省存储空间,服务器节点可以不再生成该非确定事务的命令日志,而是通过生成该第一写事务的标记信息的方式,标记第一写事务。标记信息和其他写事务的命令日志可以都带有时间戳,通过时间戳可以表征写事务的顺序。标记信息与其他写事务的命令日志也可以存储于同一个日志文件或者存储空间,通过命令日志和标记信息的存储顺序表征写事务的顺序。
根据第一方面第五种可能的实现方式,在第一方面第六种可能的实现方式中,该方法还包括:服务器接收第三写事务,并检测第三写事务是否是多分区事务,在检测到第三写事务为多分区事务时,生成并存储第三写事务的数据日志和第三写事务的标记信息,第三写事务的标记信息用于指示第三写事务存在数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
多分区事务在执行过程中一般需要多个分区之间的相互通信或协调,执行过程一般比较复杂,执行时间较长。对于多分区事务,服务器节点生成并保存事务的数据日志和指示信息,后续服务器节点在进行故障恢复或者从节点在进行数据同步时,只需要回放数据日志就可以实现目的。
根据第一方面第五种可能的实现方式和第一方面第六种可能的实现方式,在第一方面第七种可能的实现方式中,该方法还包括:服务器节点发生故障,数据丢失时,服务器节点获取数据快照,并首先根据该数据快照进行数据的恢复,服务器节点然后获取该数据快照后生成的命令日志和标记信息,并根据存储命令日志和标记信息的存储顺序,回放获取的命令日志和数据日志来恢复数据。如果事务存在标记信息,则回放事务对应的数据日志来进行数据恢复,如果事务仅存在命令日志,则可以通过回放命令日志的形式来进行数据的恢复。
该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。本申请通过灵活的日志管理策略,在尽量减少生成的日志数据大小的情况下,不但可以保证数据恢复的正确性,而且可以较小数据恢复的复杂度,加快数据恢复的速度。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第八种可能的实现方式中,该服务器采用同步存储的形式存储第一写事务的数据日志,即在发送第一写事务的响应消息之前,存储数据日志,第一写事务的响应消息用于指示第一写事务执行完成。
由于非确定事务的两次执行结果可能不同,主节点不能根据命令日志对非确定事务进行数据的恢复。系统对非确定事务的数据日志的安全性有较高要求。本申请可以采用同步存储的形式存储第一写事务的数据日志,已增加系统的安全性。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第九种可能的实现方式中,服务器将第一写事务的数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。
该服务器节点的从节点可以从共享存储系统中获取第一写事务的数据日志,并通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
根据第一方面或第一方面以上任一种可能的实现方式,在第一方面第十种可能的实现方式中,该方法还包括:该服务器节点将第一写事务的数据日志发送至该服务器节点的从节点,以供该服务器节点的从节点通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
第二方面,本申请提供了一种可读介质,包括执行指令,当计算设备的处理器执行该执行指令时,该计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第三方面,本申请提供了一种计算设备,包括:处理器、存储器和总线;存储器用于存储执行指令,处理器与存储器通过总线连接,当计算设备运行时,处理器执行存储器存储的执行指令,以使计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第四方面,本申请公开了服务器,该服务器包括:接收单元,用于接收第一写事务;检测单元,用于检测第一写事务是否为非确定事务;生成单元,用于在检测单元检测到第一写事务为非确定事务时,生成第一写事务的数据日志;存储单元,用于存储第一写事务的数据日志。
根据第四方面,在第四方面第一种可能的实现方式中,该生成单元还用于生成第一写事务的命令日志;存储单元还用于存储第一写事务的命令日志。
根据第四方面第一种可能的实现方式,在第四方面第二种可能的实现方式中,该服务器还包括恢复单元;恢复单元用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测单元检测到获取的命令日志对应的写事务是非确定事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,数据快照用于对服务器进行数据备份。
根据第四方面第一种可能的实现方式,在第四方面第三种可能的实现方式中,该接收单元还用于接收第二写事务;生成单元还用于生成第二写事务的命令日志;检测单元还用于检测第二写事务是否为多分区事务;生成单元还用于在检测单元检测到第二写事务为多分区事务时,生成第二写事务的数据日志;存储单元还用于存储第二写事务的命令日志和第二写事务的数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
根据第四方面第三种可能的实现方式,在第四方面第四种可能的实现方式中,该服务器还包括恢复单元;恢复单元用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测单元检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
根据第四方面,在第四方面第五种可能的实现方式中,生成单元还用于生成第一写事务的标记信息,第一写事务的标记信息用于指示第一写事务存在数据日志;存储单元还用于存储第一写事务的标记信息。
根据第四方面第五种可能的实现方式,在第四方面第六种可能的实现方式中,接收单元还用于接收第三写事务;检测单元还用于检测第三写事务是否为多分区事务;生成单元还用于在检测单元检测到第三写事务为多分区事务时,生成第三写事务的数据日志和第三写事务的标记信息,第三写事务的标记信息用于指示第三写事务存在数据日志;存储单元还用于存储第三写事务的数据日志和第三写事务的标记信息,其中,多分区事务包括对至少两个分区进行操作的事务。
根据第四方面第五种可能的实现方式和第四方面第六种可能的实现方式,在第四方面第七种可能的实现方式中,该服务器还包括恢复单元;恢复单元用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的标记信息,并根据获取的标记信息,获取获取到标记信息对应的数据日志,通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第八种可能的实现方式中,存储单元用于在服务器发送第一写事务的响应消息之前,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第九种可能的实现方式中,存储单元用于将第一写事务的数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。
根据第四方面或第四方面以上任一种可能的实现方式,在第四方面第十种可能的实现方式中,该服务器还包括发送单元,用于将第一写事务的数据日志发送至该服务器节点的从节点,以供该服务器节点的从节点通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
第四方面为第一方面方法对应的装置实现方式,第一方面或第一方面任一种可能的实现方式中的描述对应适用于第四方面或第四方面任一种可能的实现方式,在此不再赘述。
第五方面,本申请公开了一种数据库系统,该系统包括客户端和多个服务器节点;客户端用于向多个服务器节点中的第一服务器发送第一写事务;第一服务器用于接收第一写事务,检测第一写事务是否为非确定事务,并在检测到第一写事务为非确定事务时,生成并存储第一写事务的数据日志。
根据第五方面,在第五方面第一种可能的实现方式中,第一服务器还用于生成并存储第一写事务的命令日志。
根据第五方面第一种可能的实现方式,在第五方面第二种可能的实现方式中,在第一服务器发生故障时,第一服务器还用于获取第一服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是非确定事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,数据快照用于对第一服务器进行数据备份。
根据第五方面第一种可能的实现方式,在第五方面第三种可能的实现方式中,第一服务器还用于接收第二写事务,生成并存储第二写事务的命令日志,并在检测到第二写事务为多分区事务时,生成并存储第二写事务的数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
根据第五方面第三种可能的实现方式,在第五方面第四种可能的实现方式中,在第一服务器发生故障时,第一服务器还用于获取第一服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对第一服务器进行数据备份。
根据第五方面,在第五方面第五种可能的实现方式中,第一服务器还用于生成并存储第一写事务的标记信息,第一写事务的标记信息用于指示第一写事务存在数据日志。
根据第五方面第五种可能的实现方式,在第五方面第六种可能的实现方式中,第一服务器还用于接收第三写事务,并在检测到第三写事务为多分区事务时,生成并存储第三写事务的数据日志和第三写事务的标记信息,第三写事务的标记信息用于指示第三写事务存在数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
根据第五方面第五种可能的实现方式和第五方面第六种可能的实现方式,在第五方面第七种可能的实现方式中,在第一服务器发生故障时,第一服务器还用于获取服务器的数据快照和数据快照生成时间点之后生成的标记信息,并根据获取的标记信息,获取获取到标记信息对应的数据日志,通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
根据第五方面或第五方面以上任一种可能的实现方式,在第五方面第八种可能的实现方式中,第一服务器用于在向客户端发送第一写事务的响应消息之前,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成。
根据第五方面或第五方面以上任一种可能的实现方式,在第五方面第九种可能的实现方式中,第一服务器用于将第一写事务的数据日志存储于共享存储系统,第一服务器与多个服务器节点中的第二服务器共享共享存储系统,其中第二服务器为第一服务器的从节点。
根据第五方面或第五方面以上任一种可能的实现方式,在第五方面第十种可能的实现方式中,该服务器节点还用于将第一写事务的数据日志发送至第二服务器节点,以供第二服务器节点通过回放第一写事务的数据日志保持与该第一服务器节点的数据同步,其中,第二服务器为第一服务器的从节点。
第五方面为第一方面方法对应的系统实现方式,第一方面或第一方面任一种可能的实现方式中的描述对应适用于第五方面或第五方面任一种可能的实现方式,在此不再赘述。
根据本申请公开的技术方案,服务器节点可以用过判断写事务的类型,从而采取不同的日志策略,从服务器端检测接收到的写事务是否是非确定事务,如果写事务是非确定事务,则生成并存储该写事务的数据日志,后续通过数据日志进行非确定事务的数据恢复,从而保证数据恢复时恢复结果与原始结果相同。本申请公开的技术方案减少了业务端的复杂度,业务端不再需要通过复杂的设计以保证写事务不是非确定事务。
附图说明
图1为依据本申请一实施例的数据库系统的逻辑结构示意图;
图2为依据本申请一实施例的服务器节点的组织结构示意图;
图3为依据本申请一实施例的数据库日志管理方法的流程示意图;
图4为依据本申请一实施例的数据库日志管理方法的流程示意图;
图5为依据本申请一实施例的数据库日志管理方法的流程示意图;
图6为依据本申请一实施例的数据库日志管理方法的流程示意图;
图7为依据本申请一实施例的数据库日志管理方法的流程示意图;
图8为依据本申请一实施例的服务器的逻辑结构示意图;
图9为依据本申请一实施例的服务器的逻辑结构示意图。
具体实施方式
下面将结合附图,对本申请实施例进行描述。
本申请实施例采用术语第一和第二等来区分各个对象,但各个“第一”和“第二”之间不具有逻辑或时序上的依赖关系。
在本申请实施例中,事务是数据库事务的简称,是数据库管理系统执行过程中的一个逻辑单元,一般指用户对数据库的一次访问,由有限的数据库操作序列构成(如:将在A账户减去100元,B账户增加100元,这两个操作放在一个事务中)。
在本申请实施例中,命令日志用于记录对数据库的事务命令,例如:对某个用户ID为9527的用户账户加100元,命令日志也称为逻辑日志(英文:logical log)。数据日志用于记录事务操作的结果,例如:用户ID为9527的用户账户金额为200元(该日志生效前,该用户的账户金额为100元),数据日志也叫物理日志(英文:physical log)或者二进制日志(英文:binary log)。
在本申请实施例中,非确定事务(英文:Non-deterministic transaction)是指执行结果不唯一的事务,即两次执行结果可能不相同的事务。非确定事务的指令中包含非确定元素,例如,事务中的操作,结构化查询语言(英文全称:Structured Query Language,缩写:SQL)或者函数会产生随机数,日期等非确定性数据,这些非确定性数据影响该事务最终的结果的事务。多次执行非确定事务可能会有不同的结果。
在本申请实施例中,日志持久化是指将日志存储于非易失存储介质中。
在本申请实施例中,一份数据在数据库中可以有若干个副本,副本分为主副本和从副本。对于第一服务器节点,能提供客户端写服务的备份为主副本,其他服务器节点的主副本在第一服务器节点的备份属于第一服务器节点的从副本,即提供冗余备份的副本为从副本。对于一份数据,存储主副本的分区称为主分区,存储从副本的分区称为从分区,存储主副本的服务器节点称为主节点,存储从副本的服务器节点称为从节点。从节点需要保持与主节点的数据同步,可以对用户提供读服务。
在本申请实施例中,分区(partitioning)是将一个表或索引物理地分解为多个更小、更可管理的部分。就访问数据库的应用而言,逻辑上讲只有一个表或一个索引,但在物理上这个表或索引可能由数十个物理分区组成。每个分区都是一个独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。
在本申请实施例中,用户数据可以分布存储于多个数据库分区,事务可以分为单分区事务和多分区事务。其中,单分区事务是指只需要对一个分区进行操作的事务,多分区事务包括对至少两个分区进行操作的事务。其中,写事务是指会对数据库数据进行修改操作的事务。多分区写事务是指多分区事务中对需要操作的分区中任意一个分区进行写操作的事务。
数据库日志分为命令日志和数据日志,命令日志和数据日志分别有各自的特点。命令日志一般占用较小存储空间,且其生成不依赖事务执行的结果,与事务执行可以并行操作,但使用命令日志进行数据恢复的速度较慢,且对于非确定事务无法进行恢复。数据日志一般占用较大的存储空间,且其生成依赖事务执行的结果,与事务执行是串行关系,但使用命令日志进行数据恢复的速度较快,且可以恢复任意类型的事务执行结果。
如果在数据库系统中只使用单一的命令日志或数据日志,则无法合理的结合命令日志和数据日志的优点。本申请实施例结合命令日志和数据日志的优点,在保证数据安全的情况下,优化了数据库系统的性能。
图1为依据本申请一实施例的数据库系统架构的示意图,如图1所示,数据库系统包括客户端101和多个服务器节点,图中示例性的示出三个服务器节点103-1,103-2和103-3。客户端101和多个服务器节点通过网络102进行通信。
其中,网络102可以是因特网,内联网(英文:intranet),局域网(英文全称:localarea network,缩写:LAN),广域网络(英文全称:wide area network,缩写:WAN),存储区域网络(英文全称:storage area network,缩写:SAN)等,或者以上网络的任意组合。
其中,分区A和分区A’分别存储有同一份数据的一个副本,分区A存储该数据的主副本,分区A’存储该数据的从副本。同理,分区B和分区B’存储有同一份数据的副本,分区B存储该数据的主副本,分区B’存储该数据的从副本;分区C和分区C’存储有同一份数据的副本,分区C存储该数据的主副本,分区C’存储该数据的从副本。为了容灾的需求,同一份数据的多个副本存储于不同的服务器节点。
如果客户端的事务为多分区事务,则数据库系统需要通过协调节点104将多分区事务拆分为单分区事务,然后将拆分后的单分区事务发送给对应的服务器节点进行处理。具体的,客户端101通过网络102将多分区事务发送给协调节点104,协调节点104将接收到的多分区事务拆分为单分区事务,发送给对应的服务器节点处理。
协调节点的个数可以是一个(如图所示),用于协调处理全部的多分区事务。协调节点的个数也可以是多个,对于多分区事务进行分工处理,例如,其中一个协调节点用来处理多分区写事务,一个或者一个以上的协调节点用来负责处理多分区读事务。
在本申请的一种实施例中,如果客户端的事务为单分区事务,则客户端101可以通过网络102直接将单分区事务发送给对应的服务器节点进行处理。客户端101也可以通过协调节点104将单分区事务发送给对应的服务器节点处理。
在本申请实施例中,客户端可以为一个客户端装置(client device)或者终端设备(terminal device),具体可以为一台装载了客户端软件的计算设备。本申请实施例不对客户端的具体实现形式进行限定。
在本申请一种实施例中,主节点可以通过网络102将生成的命令日志和数据日志发送到从节点,供从节点通过回放命令日志和数据日志进行数据恢复,进而与主节点保持数据同步。主节点也保存有命令日志和数据日志的备份,以供后续宕机或数据出错时进行数据的回复。例如,以分区A和分区A’进行举例说明,分区A可以将该分区生成的命令日志和数据日志通过网络102发送至分区A’,分区A’通过接收到的命令日志和数据日志进行数据恢复,从而实现与分区A的数据同步。其中,分区A也保存有命令日志和数据日志的备份,以供后续服务器103-1宕机或者分区A中存储的数据出错后进行数据的恢复。
在本申请的另一种实施例中,数据库系统还包含共享存储系统105,主节点生成命令日志和数据日志后,将命令日志和数据日志存储于共享存储系统105,从节点可以从共享存储系统中读取命令日志和数据日志,并通过回放命令日志和数据日志进行数据恢复,从而与主节点保持数据同步。以分区A和分区A’进行举例说明,分区A在根据事务生成命令日志和数据日志后,将命令日志和数据日志存储于共享存储系统105,分区A’从共享存储系统105中获取命令日志和数据日志,并回放命令日志和数据日志恢复数据,从而保持与分区A的数据同步。
图2为依据本申请一实施例的服务器103的结构示意图。
如图2所示,服务器103包括处理器201,处理器201与系统内存205连接。处理器201可以为中央处理器(CPU),图像处理器(英文:graphics processing unit,GPU),现场可编程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处理器(英文:digital signal processor,DSP)等计算逻辑或以上任意计算逻辑的组合。处理器201可以为单核处理器或多核处理器。
在本申请的一个实施例中,处理器201还可以包括事务处理逻辑210,事务处理逻辑210可以为具体的硬件电路或集成在处理器201中的固件模块。如果事务处理逻辑210为具体的硬件电路,则事务处理逻辑210执行本申请实施例的方法,如果事务处理逻辑210为固件模块,则处理器210执行事务处理逻辑210中的固件代码来实现本申请实施例的技术方案。事务处理逻辑210包括:(1)用于接收写事务的逻辑(电路/固件代码);(2)用于检测写事务是否为非确定事务的逻辑(电路/固件代码);(3)用于生成写事务的数据日志,并存储写事务的数据日志的逻辑(电路/固件代码)。
总线209用于在服务器103的各部件之间传递信息,总线209可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。总线209还连接有辅助存储器(英文:secondary storage)202,输入/输出接口203和通信接口204。
辅助存储器202一般也称为外存,辅助存储器207的存储介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(英文全称:solid state disk,缩写:SSD))等。在一些实施例中,辅助存储器202还可能进一步包括与处理器201分离的远程存储器,例如通过通信接口204和网络102进行访问的网盘(包括网络文件系统(英文全称:Network File System,缩写:NFS)等网络或机群文件系统)。在本申请实施例中,辅助存储器202为数据库存储系统的存储介质,用于存储数据副本。
输入/输出接口203连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出设备可以为鼠标、键盘、显示器、或者光驱等。
通信接口204使用例如但不限于收发器一类的收发装置,来实现与其他设备或网络102之间的通信,通信接口204可以通过有线或者无线的形式与网络102互连。
本申请实施例的一些特征可以由处理器201执行系统内存205中的软件代码来完成/支持。系统内存205可以包括一些软件,例如,操作系统208(例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或嵌入式操作系统(例如Vxworks)),应用程序207,和事务处理模块206等。
在本申请的一个实施例中,处理器201执行事务处理模块206来实现本申请实施例的技术方案。事务处理模块206包括:(1)用于接收写事务的代码;(2)用于检测写事务是否为非确定事务的代码;(3)用于生成写事务的数据日志,并存储写事务的数据日志的代码。
此外,图2仅仅是一个服务器103的例子,服务器103可能包含相比于图2展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图2中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。
图3为依据本申请一实施例的日志管理方法300的示意性流程图,如图3所示,方法300包括:
S301:客户端向服务器节点发送第一写事务。
在分布式数据库系统中,服务器节点可以为数据库的主节点,即存储数据主副本的节点,可以向用户提供写操作。
在本申请实施例中,第一写事务是以事务请求的形式,可以由客户端发送至服务器节点。如果写事务为多分区事务,则客户端将多分区事务提交给协调节点,协调节点将多分区事务拆分为单分区事务,并分配给各自对应的服务器节点处理。如果写事务为单分区事务,则客户端可以将写事务直接发送给对应的服务器节点,也可以通过协调节点将写事务发送给对应的服务器节点节点处理。本申请实施例不限定客户端向服务器节点发送写事务请求的具体形式。
S302:服务器节点执行第一写事务。
事务包含一系列操作。当写事务包含的操作都被执行后,才认为服务器节点成功的执行了写事务。
S303:服务器节点检测第一写事务是否是非确定事务。如果第一写事务是非确定事务,则执行步骤S304,如果第一写事务不是非确定事务,则执行步骤S306。
非确定事务是指执行结果不唯一的事务,其至少两次执行的结果不唯一,即两次执行结果可能不相同的事务。例如,事务中的操作,结构化查询语言或者函数会产生随机数,日期等非确定性数据,影响该事务最终的结果的事务。
如果服务器节点检测到第一写事务是非确定事务,则执行步骤S304。如果服务器节点检测到第一写事务不是非确定事务,则执行步骤S306。
服务器节点可以通过检测第一写事务中是否携带第一标识来检测第一写事务是否是非确定事务事务。如果第一写事务为非确定事务,则客户端会在第一写事务中写入第一标识,该第一标识用于指示该第一写事务为非确定事务。如果服务器节点检测到第一写事务携带了该第一标识,则第一写事务为非确定事务,如果服务器节点检测到第一写事务不携带该第一标识,则第一写事务不是非确定事务。
服务器节点还以通过检测第一写事务携带的第二标识的数值来检测第一写事务是否是非确定事务。例如,第二标识可以为一个比特的指示位,如果第一写事务为非确定事务,则客户端会将第一写事务中的第二标识置为“1”,如果第一写事务不是非确定事务,则客户端会将第一写事务中的第二标识置为“0”。则如果服务器节点检测到第一写事务中的第二标识为“1”,则第一写事务为非确定事务,如果服务器节点检测到第一写事务中的第二标识为“0”,则第一写事务不是非确定事务。
服务器节点还可以通过分析第一写事务来检测第一写事务是否是非确定事务。如果检测到第一写事务中的操作,结构化查询语言或者函数会产生随机数,当前时间等非确定性数据,则说明第一写事务为非确定事务,否则第一写事务不是非确定事务。
应理解,本申请实施例并不限定第一写事务的具体检测方式。
在本申请实施例不限定步骤S302和步骤S303的执行顺序。S302和S303的执行不存在先后的逻辑关系,在一些实施方式中,步骤S303可以先于步骤S302执行。
S304:服务器节点生成第一写事务的数据日志。
数据日志的功能主要有以下两个:
1、备份。如果服务器节点在某个时间点T做了一次数据快照备份,然后利用数据日志记录从这个时间点T后非确定事务对主副本的改动,如果服务器节点发生了故障,在进行数据还原的时候,利用时间点T的数据快照和数据快照生成时间点之后的数据日志,就可以将非确定事务的结果还原。
2、副本复制。服务器节点的数据日志会记录非确定事务的改动,从节点获取到数据日志后,可以根据数据日志内容在从节点进行同样的操作。
因为非确定事务的执行结果可能不同。如果使用非确定事务的命令日志进行备份,在服务器节点发生数据故障时,采用回放非确定事务的命令日志的方式进行数据的恢复时,可能会发生数据恢复的错误。另一方面,如果从节点根据非确定事务的命令日志进行从副本的复制,则可能导致服务器节点和从节点数据不一致的情况。
在本申请实施例中,如果服务器节点检测到第一写事务为非确定事务,则根据第一写事务的执行结果生成数据日志,从而保证系统的稳定性。服务器节点在生成第一写事务的数据日志后,可以建立第一写事务的命令日志与第一写事务的数据日志之间的对应关系。
S305:服务器节点将第一写事务的数据日志存储于存储系统。
服务器节点可以使用同步或者异步的形式将数据日志存储于存储系统。如果使用同步的形式进行存储,则服务器节点提交(commit)事务前,需要收到存储系统写成功的反馈,系统会更加安全。如果使用异步的形式进行存储,则服务器节点提交事务前,不需要收到存储系统写成功的反馈,事务处理速度会更快,但是如果在事务提交后,写成功前服务器节点发生故障,则会丢失命令日志的数据。
如果采用异步存储的方式,服务器节点可以将数据日志先存储在缓存中,在多次提交事务后,将缓存中的数据持久化存储到存储系统中。本申请不限定服务器节点存储数据日志的形式。
可选的,存储系统可以为服务器节点与从节点的共享存储系统。服务器节点将数据日志存储于共享存储系统,共享存储系统中的数据日志可以被服务器节点和从节点访问。服务器节点在发生故障时,可以利用共享存储系统中的数据日志进行数据恢复。从节点可以从共享存储系统中获取数据日志,并通过回放数据日志从而保证与服务器节点的数据同步。
可选的,存储系统为服务器节点的存储系统。服务器节点在发生故障时,可以利用该存储系统中的数据日志进行数据恢复。进一步的,服务器节点还将数据日志发送给从节点,从节点通过回放接收到的数据日志保持与服务器节点的数据同步。
S306:服务器节点向客户端发送写事务响应。
服务器节点执行完第一写事务后,提交该第一写事务,并在提交第一写事务后,向客户端发送写事务响应。如果该第一写事务是多分区事务,则服务器节点通过协调节点向客户端发送写事务相应。
本申请实施例不限定以上步骤的执行顺序。
在本申请实施例中,服务器节点还可以生成第一写事务的命令日志,并存储该命令日志。图4为依据本申请一实施例的数据库日志管理方法400的示意性流程图,如图4所示,方法400包括:
S401参照S301,在此不再赘述。
S402:服务器节点生成第一写事务的命令日志。
服务器节点在接收到客户端的第一写事务后,根据第一写事务生成第一写事务的命令日志,因为命令日志不依赖事务的执行结果,且不影响事务的执行。服务器节点在接收到第一写事务后可以直接生成命令日志,事务执行和命令日志的生成可以并行。本申请实施例不限定命令日志的生成时间。
在本申请实施例中,服务器节点在接收到第一写事务请求后,不论写事务的类型,均生成命令日志。
对于没有生成数据日志的写事务,命令日志充当服务器节点备份的功能,服务器节点在发生故障后,可以通过回放命令日志来恢复数据。服务器节点的从节点可以通过回放命令日志保持与服务器节点的同步。
对于已经生成了数据日志的写事务,则命令日志可以起到标记的功能,命令日志的存储顺序表征了写事务的执行顺序。命令日志中可以带有生成该命令日志的时间戳,服务器节点根据时间戳判断命令日志的存储顺序。命令日志也可以按照一定的顺序存储在存储空间或日志文件中,服务器节点可以以此来判断命令日志的存储顺序。在服务器节点进行数据恢复或者从节点进行数据同步时,要保证写事务的恢复顺序,可以根据命令日志的顺序进行数据的恢复,从而保证数据的正确性。
S403:服务器节点将生成的第一写事务的命令日志存储于存储系统。
可选的,服务器节点可以采用同步或者异步的方式存储命令日志。如果采用同步存储的方式,则在命令日志成功存储之前,服务器节点不能提交事务,如果采用异步存储的方式,则服务器节点提交事务不受命令日志的是否成功存储的影响。
如果采用同步存储的方式,因为命令日志存储成功是写事务可以提交的必要条件,从而保证了系统的安全性。但采用同步存储的方式,可能会带来一定的系统延时,影响数据库系统的整体性能。
S404-S408参照S302-S306,在此不再赘述。
在本申请实施例中,服务器节点按照一定的周期对数据库系统进行数据备份,一般是采用数据快照的形式。
当服务器节点发生故障,数据丢失时,服务器节点首先获取该服务器的数据快照,并根据获取的数据快照进行数据的恢复。服务器节点然后获取该数据快照后生成的命令日志,并按照命令日志的存储顺序依次检测命令日志记载的写事务是否是非确定事务,如果是非确定事务,则服务器节点从存储系统中获取该非确定事务的数据日志,通过回放数据日志恢复数据。如果该写事务不是非确定事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是非确定事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复。
该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
在本申请实施例中,如果第一写事务是非确定事务,则服务器节点生成并存储了第一写事务的命令日志和数据日志。在进行数据恢复过程中,服务器节点获取第一写事务的命令日志,并在根据第一写事务的命令日志检测到第一写事务为非确定事务时,获取第一写事务的数据日志,并通过回放第一写事务的数据日志以进行数据恢复。如果第一写事务不是非确定事务,则服务器节点可以通过回放第一写事务的数据日志进行数据恢复。当然,即使第一写事务不是非确定事务,服务器节点也可以根据用户的日志策略生成并存储第一写事务的数据日志,并在数据恢复过程中,通过回放第一写事务的数据日志来进行数据恢复。
当服务器节点根据命令日志检测出写事务是非确定事务,但是在存储系统中没有该非确定事务的数据日志时,因为非确定事务的两次执行的结果可能不同,为了防止数据恢复错误,服务器节点终止数据恢复的流程。
命令日志不依赖事务的执行结果,服务器节点接收到写事务后就可以生成并存储写事务的命令日志,但数据日志依赖于写事务的执行结果,所以数据日志需要在事务执行之后才能生成。如果服务器节点在生成并存储命令日志后,成功存储命令日志之前发生了故障,则存储系统只存储有非确定事务的命令日志,没有存储非确定事务的数据日志。在数据恢复过程中,如果服务器节点检测出某一条命令日志记录的读事务是非确定事务,但存储系统没有保存该非确定事务对应的数据日志,则服务器节点终止数据恢复。
同理,服务器节点的从节点获取数据库系统的命令日志,并按照命令日志的存储顺序依次检测命令日志记载的写事务是否是非确定事务,如果是非确定事务,则从节点获取该非确定事务的数据日志,通过回放数据日志来保持与服务器节点的数据同步。如果该写事务不是非确定事务,则从节点可以通过回放该命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是非确定事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
对于多分区事务,因为执行过程中可能需要多个分区之间的相互通信或者协调,所以执行过程一般比较复杂,执行时间较长。对于多分区事务,服务器节点也可以生成并保存事务的数据日志,后续服务器节点在进行故障恢复或者从节点在进行数据同步时,只需要回放数据日志就可以实现目的。
例如,方法400还可以包括:该服务器节点接收第二写事务,生成第二写事务的命令日志,并存储第二写事务的命令日志,如果该服务器节点检测到第二写事务为多分区事务,该服务器节点生成该第二写事务的数据日志,并存储该第二写事务的数据日志。在发生故障,数据丢失时,该服务器节点获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并检测获取的数据日志对应的写事务是否是非确定事务或多分区事务,在检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
本申请实施例不限定以上步骤的执行顺序。
即如果检测到写事务为非确定事务或者多分区事务,服务器节点生成并存储写事务的数据日志,具体如图5所示,方法500包括:
S501-504参照步骤S401-S404,在此不再赘述。
S505:服务器节点检测写事务是否是非确定事务或者多分区事务,如果写事务是非确定事务或者多分区事务,则服务器节点执行步骤S506,如果写事务不是非确定事务或者多分区事务,则服务器节点执行步骤S508。
在本申请实施例中,服务器节点可以先检测写事务是否是非确定性写事务,如果写事务是非确定事务,则服务器节点终止检测,执行步骤S506;如果写事务不是非确定事务,则服务器节点继续检测写事务是否是多分区事务,如果该写事务是多分区事务,则服务器节点执行步骤S506,如果该写事务也不是多分区事务,则服务器节点执行步骤S508。服务器节点也可以先检测写事务是否是非确定性写事务,如果写事务是多分区事务,则服务器节点终止检测,执行步骤S506;如果写事务不是多分区事务,则服务器节点继续检测写事务是否是非确定事务,如果该写事务是非确定事务,则服务器节点执行步骤S506,如果该写事务也不是非确定事务,则服务器节点执行步骤S508。
事务处理请求中可以包含专门的分区指示信息,该分区指示信息可以指示该待处理的事务是单分区事务还是多分区事务。
事务处理请求也可以不包含分区指示信息,事务类型可以由事服务器解析事务请求中的关键信息获得。分区引入了一种分区键(partition key)的概念,分区键用于根据某个区间值(或范围值)、特定值列表或散列函数值执行数据的聚集,让数据更具规则分布在不同的分区中,让大对象变成一些小对象。用户在创建表(数据表)或修改表时,会确定该表的分区键,用户在进行写请求时,数据库分析写请求中分区键的情况,通过分析该写请求是否涉及到多个分区,来判断该请求是否为多分区写事务。
S506-S508参照步骤S406-S408,在此不再赘述。
从节点获取命令日志和数据日志的方式在图4实施例已有描述,在此不再赘述。
服务器节点发生故障,数据丢失时,服务器节点首先获取该服务器的数据快照,并根据该数据快照进行数据的恢复。服务器节点然后获取该数据快照后生成的命令日志,并按照存储的顺序依次检测命令日志记载的写事务是否是非确定事务或者多分区事务,如果是非确定事务或者多分区事务,则服务器节点从存储系统中获取该写事务的数据日志,通过回放数据日志恢复数据。如果该写事务不是非确定事务或者多分区事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是非确定事务或者多分区事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复。该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
在本申请实施例中,服务器节点可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是非确定事务,则服务器节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复;如果写事务不是非确定事务,则服务器节点继续根据写事务的命令日志检测写事务是否是多分区事务,如果该写事务是多分区事务,则服务器节点获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复,如果该写事务也不是多分区事务,则服务器节点可以通过回放命令日志进行数据恢复。服务器节点也可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是多分区事务,则服务器节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复;如果写事务不是多分区事务,则服务器节点继续根据写事务的命令日志检测写事务是否是非确定事务,如果该写事务是非确定事务,则服务器节点获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复,如果该写事务也不是非确定事务,则服务器节点可以通过回放命令日志进行数据恢复。
同理,服务器节点的从节点获取数据库系统的命令日志,并按照存储的顺序依次检测命令日志记载的写事务是否是非确定事务或者多分区事务,如果是非确定事务或者多分区事务,则从节点获取该写事务的数据日志,通过回放数据日志来保持与服务器节点的数据同步。如果该写事务不是非确定事务或者多分区事务,则从节点可以通过回放该命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是非确定事务或者多分区事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
在本申请实施例中,服务器节点的从节点可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是非确定事务,则从节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据同步;如果写事务不是非确定事务,则从节点继续根据写事务的命令日志检测写事务是否是多分区事务,如果该写事务是多分区事务,则从节点获取该写事务对应的数据日志,并通过回放数据日志进行数据同步,如果该写事务也不是多分区事务,则从节点可以通过回放命令日志进行数据同步。服务器节点的从节点也可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是多分区事务,则从节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据同步;如果写事务不是多分区事务,则从节点继续根据写事务的命令日志检测写事务是否是非确定事务,如果该写事务是非确定事务,则从节点获取该写事务对应的数据日志,并通过回放数据日志进行数据同步,如果该写事务也不是非确定事务,则从节点可以通过回放命令日志进行数据同步。
本申请实施例中,服务器节点可以采用同步或者异步的方式存储写事务的命令日志和数据日志。如果采用同步的方式,则需要在发送写事务的响应消息之前,存储日志,如果采用异步的方式,则可以在发送写事务的响应消息之后,存储日志。
本申请实施例不限定以上步骤的执行顺序。
非确定事务的两次执行结果可能不同,主节点不能根据命令日志对非确定事务进行数据的恢复,从节点也不能根据命令日志保持与主节点的数据同步。系统对非确定事务的数据日志的安全性有较高要求。对于多分区事务,主节点可以根据多分区事务的命令日志进行数据的恢复,从节点也可以根据多分区事务的命令日志进行与主节点的数据同步。同步存储的安全性高,但是会影响系统的整体性能,在本申请实施例中,服务器节点对非确定事务和多分区事务可以采取不同的存储策略。如图6所示,方法600包括:
S601参照S401,S602参照S402,在此不再赘述。
S603:服务器节点同步存储写事务的命令日志。
对于没有保存数据日志的写事务,后续服务器节点在发生故障时,只能通过命令日志来进行数据的恢复。从节点也只能通过命令日志来保持与主节点的同步。为了保证系统的安全性,服务器节点采用同步存储的方式对命令日志进行存储。
S604参照步骤S404,在此不再赘述。
S605:服务器节点检测写事务是否是非确定事务,如果写事务是非确定事务,则执行步骤S606,如果写事务不是非确定事务,则执行步骤S607。
S606:服务器节点生成写事务的数据日志,并同步存储写事务的数据日志。
主节点发生故障时,不能通过非确定事务的命令日志恢复数据。从节点也不能通过非确定事务的命令日志来保持与主节点的数据同步。为了保证系统的安全性,服务器节点采用同步存储的方式对非确定事务的数据日志进行存储。
S607:服务器节点检测写事务是否是多分区事务,如果写事务是多分区事务,则执行步骤S608,如果写事务不是多分区事务,则执行步骤S609。
S608:服务器节点生成写事务的数据日志,并异步存储该写事务的数据日志。
如果使用同步的形式对多分区事务的数据日志进行存储,则服务器节点提交事务前,需要收到存储系统写成功的反馈,会影响事务处理的速度。虽然多分区事务的执行过程一般比较复杂,但主节点在进行数据恢复或者从节点在进行数据同步时,通过回放多分区事务的命令日志也可以实现目的。本申请实施例使用异步的形式对多分区事务的数据日志进行存储,服务器节点提交事务前,不需要收到存储系统写成功的反馈,事务处理速度会更快。
步骤S609参照步骤S306,在此不再赘述。
在本申请实施例中,服务器节点也可以先判断写事务是否是多分区事务,如果写事务是多分区事务,则服务器节点生成写事务的数据日志,并异步存储写事务的数据日志,如果写事务不是多分区事务,则服务器节点继续检测写事务是否是非确定事务,如果写事务是非确定事务,则服务器节点生成写事务的数据日志,并同步存储写事务的数据日志。
在本申请另一实施例中,对于非确定事务,服务器节点可以只存储非确定事务的数据日志,如图7所示,方法700包括:
S701参照步骤S301,S702参照步骤S302。
S703:服务器节点检测第一写事务是否是非确定事务,如果第一写事务是非确定事务,则执行步骤S707,如果第一写事务不是非确定事务,则执行步骤S704。
S704:服务器节点生成并存储第一写事务的命令日志。
S704具体流程参照步骤S402和S403,在此不再赘述。
S705:服务器节点生成并存储第一写事务的数据日志。
S705参照步骤S406和S407,在此不再赘述。
S706:服务器节点生成并存储第一写事务的标记信息。
该标记信息用于指示第一写事务的顺序,且用于指示第一写事务存在数据日志。命令日志与标记信息的存储顺序可以表征服务器节点收到的数据库事务的顺序。命令日志和标记信息中可以带有生成该命令日志或标记信息的时间戳,服务器节点根据时间戳判断命令日志和标记信息的存储顺序。命令日志和标记信息也可以按照一定的顺序存储在存储空间或日志文件中,服务器节点可以以此来判断命令日志的存储顺序。服务器节点检测第一写事务是否是非确定事务,如果第一写事务是非确定事务,则服务器节点生成并存储该非确定事务的数据日志,并记录该非确定事务的标记信息。服务器节点在生成第一写事务的标记信息后,可以建立第一写事务的标记信息与第一写事务的数据日志之间的对应关系。
应理解,本申请实施例不限定以上步骤的执行顺序,服务器节点可以在检测到第一写事务是非确定事务后的任意时刻生成并存储第一写事务的标记信息。
S707参照步骤S306,在此不再赘述。
当然,对于不是非确定事务的事务,服务器节点也可以生成该写事务的数据日志,并生成与存储写事务的标记信息。例如,服务器节点可以检测写事务是否是多分区事务,如果写事务是多分区事务,则服务器节点生成该写事务的标记信息。
例如,方法700还可以包括:服务器节点接收第三写事务,如果该服务器节点检测到第三写事务为多分区事务,该服务器节点生成并存储第三写事务的数据日志并生成与存储第三写事务的标记信息,第三写事务的标记信息用于指示第三写事务存在数据日志。本申请实施例不限定服务器节点检测写事务是否是非确定事务或多分区事务的顺序。
服务器节点发生故障,数据丢失时,服务器节点首先获取该服务器的数据快照,并根据获取的数据快照进行数据的恢复。服务器节点然后获取该数据快照后生成的命令日志和标记信息,并根据存储命令日志和标记信息的存储顺序,回放获取的命令日志和数据日志来恢复数据。如果事务存在标记信息,则回放事务对应的数据日志来进行数据恢复,如果事务仅存在命令日志,则可以通过回放命令日志的形式来进行数据的恢复。
该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
在本申请实施例中,如果第一写事务是非确定事务,则服务器节点生成并存储了第一写事务的标记信息和数据日志。在进行数据恢复过程中,服务器节点获取第一写事务的标记信息,并在根据第一写事务的标记信息检测到第一写事务为非确定事务时,获取第一写事务的数据日志,并通过回放第一写事务的数据日志以进行数据恢复。如果第一写事务不是非确定事务,则服务器节点可以通过回放第一写事务的数据日志进行数据恢复。当然,即使第一写事务不是非确定事务,服务器节点也可以根据用户的日志策略生成并存储第一写事务的数据日志,并在数据恢复过程中,通过回放第一写事务的数据日志来进行数据恢复。
在以上实施例中,存储系统可以为服务器节点与从节点的共享存储系统。服务器节点将写事务的命令日志和/或标记信息和/或数据日志存储于共享存储系统,共享存储系统中的命令日志和/或标记信息和/或数据日志可以被服务器节点和从节点访问。服务器节点在发生故障时,可以利用共享存储系统中写事务的命令日志和/或标记信息和/或数据日志进行数据恢复。从节点可以从共享存储系统中获取写事务的命令日志和/或标记信息和/或数据日志,并通过回放命令日志或数据日志从而保证与服务器节点的数据同步。
可选的,在以上实施例中,存储系统为服务器节点的存储系统。服务器节点在发生故障时,可以利用共享存储系统中的命令日志和/或标记信息和/或数据日志进行数据恢复。进一步的,服务器节点还将写事务的命令日志和/或标记信息和/或数据日志发送给从节点,从节点通过回放命令日志或数据日志从而保证与服务器节点的数据同步。
图8为依据本申请一实施例的一种服务器节点800的逻辑结构示意图,服务器节点800应用于数据存储系统,该数据存储系统包括客户端和多个服务器节点800,如图8所示,服务器节点800包括:
接收单元802,用于接收第一写事务。
检测单元804,用于检测第一写事务是否为非确定事务。
生成单元806,用于在检测单元804检测到第一写事务为非确定事务时,生成第一写事务的数据日志。
存储单元808,用于存储第一写事务的数据日志。
可选的,生成单元806还用于生成第一写事务的命令日志;存储单元808还用于存储第一写事务的命令日志。
如图9所示,服务器800还包括恢复单元810。
可选的,恢复单元810用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,检测单元806还用于检测获取的命令日志对应的写事务是否是非确定事务,恢复单元810还用于在检测单元804检测到获取的命令日志对应的写事务是非确定事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,数据快照用于对服务器进行数据备份。
可选的,接收单元802还用于接收第二写事务;生成单元806还用于生成第二写事务的命令日志;检测单元804还用于检测第二写事务是否为多分区事务;生成单元806还用于在检测单元804检测到第二写事务为多分区事务时,生成第二写事务的数据日志;存储单元808还用于存储第二写事务的命令日志和第二写事务的数据日志。
可选的,恢复单元810用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,检测单元806还用于检测获取的命令日志对应的写事务是否是非确定事务或多分区事务,恢复单元810还用于在检测单元804检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
可选的,生成单元806还用于生成第一写事务的标记信息,第一写事务的标记信息用于指示第一写事务存在数据日志;存储单元808还用于存储第一写事务的标记信息。
可选的,接收单元802还用于接收第三写事务;检测单元804还用于检测第三写事务是否为多分区事务;服务器检测到第三写事务为多分区事务;生成单元806还用于在检测单元804检测到第三写事务为多分区事务时,生成第三写事务的数据日志和第三写事务的标记信息,第三写事务的标记信息用于指示第三写事务存在数据日志;存储单元808还用于存储第三写事务的数据日志和第三写事务的标记信息。
可选的,恢复单元810用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的标记信息,并根据获取的标记信息,获取获取到标记信息对应的数据日志,通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
可选的,存储单元808用于在服务器发送第一写事务的响应消息之前,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成。
可选的,存储单元808用于将第一写事务的数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。
可选的,如图9所示,服务器800还包括发送单元812,该发送单元812用于将第一写事务的数据日志发送至该服务器800节点的从节点,以供该服务器节点的从节点通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
在本申请实施例中,接收单元802和发送单元812的功能可以具体由图2中的处理器201与通信接口204来实现,或者由图2中的处理器201,通信接口204和系统内存205中的事务处理模块模块206来实现。
在本申请实施例中,检测单元804,生成单元806,存储单元808和恢复单元810的功能可以具体由图2中的处理器201中的事务处理逻辑210来实现,或者由图2中的处理器201和系统内存205中的事务处理模块206来实现。
在本申请实施例中,事务处理逻辑210可以包含接收单元802,检测单元804,生成单元806和存储单元808。事务处理逻辑210还可以包含恢复单元810,发送单元812。
在本申请实施例中,事务处理模块206可以包含接收单元802,检测单元804,生成单元806和存储单元808。事务处理模块206还可以包含恢复单元810,发送单元812。
本申请实施例为图1-图7实施例对应的服务器节点的装置实施例,图1-图7实施例部分的特征描述适用于本申请实施例,在此不再赘述。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者替换其中部分技术特征;而这些修改或者替换,并不使相应技术方案脱离权利要求的保护范围。
Claims (29)
1.一种数据库日志的管理方法,其特征在于,所述方法包括:
服务器接收第一写事务;
所述服务器检测所述第一写事务是否为非确定事务,所述非确定事务至少两次执行的结果不唯一;
当所述第一写事务为非确定事务时,所述服务器生成并存储所述第一写事务的数据日志;
当所述第一写事务不是非确定事务时,所述服务器生成并存储所述第一写事务的命令日志,
其中,所述命令日志用于记录事务命令,所述数据日志用于记录事务操作的结果。
2.根据权利要求1所述的方法,其特征在于,在所述服务器发生故障时,所述方法还包括:
所述服务器获取所述服务器的数据快照,所述数据快照用于对所述服务器进行数据备份;
所述服务器获取所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是非确定事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述服务器接收第二写事务;
所述服务器生成并存储所述第二写事务的命令日志;
所述服务器检测到所述第二写事务为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述服务器生成并存储所述第二写事务的数据日志。
4.根据权利要求3所述的方法,其特征在于,在所述服务器发生故障时,所述方法还包括:
所述服务器获取所述服务器的数据快照,所述数据快照用于对所述服务器进行数据备份;
所述服务器获取所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述服务器生成并存储所述第一写事务的标记信息,所述第一写事务的标记信息用于指示所述第一写事务存在数据日志。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述服务器接收第三写事务;
所述服务器检测到所述第三写事务为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述服务器生成并存储所述第三写事务的数据日志;
所述服务器生成并存储所述第三写事务的标记信息,所述第三写事务的标记信息用于指示所述第三写事务存在数据日志。
7.根据权利要求5或6所述的方法,其特征在于,在所述服务器发生故障时,所述方法还包括:
所述服务器获取所述服务器的数据快照,所述数据快照用于对所述服务器进行数据备份;
所述服务器获取所述数据快照生成时间点之后生成的标记信息;
所述服务器根据获取的标记信息,获取所述获取到标记信息对应的数据日志,并通过回放获取的数据日志恢复数据。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述服务器存储所述第一写事务的数据日志包括:
所述服务器在发送所述第一写事务的响应消息之前,存储所述第一写事务的数据日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成。
9.根据权利要求1-6任一项所述的方法,其特征在于,所述服务器存储所述第一写事务的数据日志包括:
所述服务器将所述第一写事务的数据日志存储于共享存储系统,所述服务器与所述服务器的从节点共享所述共享存储系统。
10.一种服务器,应用于数据库系统,其特征在于,所述服务器包括:
接收单元,用于接收第一写事务;
检测单元,用于检测所述第一写事务是否为非确定事务,所述非确定事务至少两次执行的结果不唯一;
生成单元,用于在所述检测单元检测到所述第一写事务为非确定事务时,生成所述第一写事务的数据日志,在所述第一写事务不是非确定事务时,生成所述第一写事务的命令日志;
存储单元,用于存储所述第一写事务的数据日志或命令日志,
其中,所述命令日志用于记录事务命令,所述数据日志用于记录事务操作的结果。
11.根据权利要求10所述的服务器,其特征在于,所述服务器还包括恢复单元;
所述恢复单元用于在所述服务器发生故障时,获取所述服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在所述检测单元检测到获取的命令日志对应的写事务是非确定事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,所述数据快照用于对所述服务器进行数据备份。
12.根据权利要求10所述的服务器,其特征在于,所述接收单元还用于接收第二写事务;
所述生成单元还用于生成所述第二写事务的命令日志;
所述检测单元还用于检测所述第二写事务是否为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述生成单元还用于在所述检测单元检测到所述第二写事务为多分区事务时,生成所述第二写事务的数据日志;
所述存储单元还用于存储所述第二写事务的命令日志和所述第二写事务的数据日志。
13.根据权利要求12所述的服务器,其特征在于,所述服务器还包括恢复单元;
所述恢复单元用于在所述服务器发生故障时,获取所述服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在所述检测单元检测到所述获取的命令日志对应的写事务是非确定事务或多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,所述数据快照用于对所述服务器进行数据备份。
14.根据权利要求10所述的服务器,其特征在于,所述生成单元还用于生成所述第一写事务的标记信息,所述第一写事务的标记信息用于指示所述第一写事务存在数据日志;
所述存储单元还用于存储所述第一写事务的标记信息。
15.根据权利要求14所述的服务器,其特征在于,所述接收单元还用于接收第三写事务;
所述检测单元还用于检测所述第三写事务是否为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述生成单元还用于在所述检测单元检测到所述第三写事务为多分区事务时,生成所述第三写事务的数据日志和所述第三写事务的标记信息,所述第三写事务的标记信息用于指示所述第三写事务存在数据日志;
所述存储单元还用于存储所述第三写事务的数据日志和所述第三写事务的标记信息。
16.根据权利要求14或15所述的服务器,其特征在于,所述服务器还包括恢复单元;
所述恢复单元用于在所述服务器发生故障时,获取所述服务器的数据快照和所述数据快照生成时间点之后生成的标记信息,并根据获取的标记信息,获取所述获取到标记信息对应的数据日志,通过回放获取的数据日志恢复数据,所述数据快照用于对所述服务器进行数据备份。
17.根据权利要求10-15任一项所述的服务器,其特征在于,所述存储单元用于在所述服务器发送所述第一写事务的响应消息之前,存储所述第一写事务的数据日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成。
18.根据权利要求10-15任一项所述的服务器,其特征在于,所述存储单元用于将所述第一写事务的数据日志存储于共享存储系统,所述服务器与所述服务器的从节点共享所述共享存储系统。
19.一种数据库系统,其特征在于,所述系统包括客户端和多个服务器节点;
所述客户端用于向所述多个服务器节点中的第一服务器发送第一写事务;
所述第一服务器用于接收所述第一写事务,并在检测到所述第一写事务为非确定事务时,生成并存储所述第一写事务的数据日志,在检测到所述第一写事务不是非确定事务时,生成并存储所述第一写事务的命令日志,所述非确定事务至少两次执行的结果不唯一,所述命令日志用于记录事务命令,所述数据日志用于记录事务操作的结果。
20.根据权利要求19所述的系统,其特征在于,在所述第一服务器发生故障时,所述第一服务器还用于获取所述第一服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是非确定事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,所述数据快照用于对所述第一服务器进行数据备份。
21.根据权利要求19所述的系统,其特征在于,所述第一服务器还用于接收第二写事务,生成并存储所述第二写事务的命令日志,并在检测到所述第二写事务为多分区事务时,生成并存储所述第二写事务的数据日志,所述多分区事务包括对至少两个分区进行操作的事务。
22.根据权利要求21所述的系统,其特征在于,在所述第一服务器发生故障时,所述第一服务器还用于获取所述第一服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在检测到所述获取的命令日志对应的写事务是非确定事务或多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,所述数据快照用于对所述第一服务器进行数据备份。
23.根据权利要求19所述的系统,其特征在于,所述第一服务器还用于生成并存储所述第一写事务的标记信息,所述第一写事务的标记信息用于指示所述第一写事务存在数据日志。
24.根据权利要求23所述的系统,其特征在于,所述第一服务器还用于接收第三写事务,并在检测到所述第三写事务为多分区事务时,生成并存储所述第三写事务的数据日志和所述第三写事务的标记信息,所述第三写事务的标记信息用于指示所述第三写事务存在数据日志,所述多分区事务包括对至少两个分区进行操作的事务。
25.根据权利要求23或24所述的系统,其特征在于,在所述第一服务器发生故障时,所述第一服务器还用于获取所述服务器的数据快照和所述数据快照生成时间点之后生成的标记信息,并根据获取的标记信息,获取所述获取到标记信息对应的数据日志,通过回放获取的数据日志恢复数据,所述数据快照用于对所述服务器进行数据备份。
26.根据权利要求19-24任一项所述的系统,其特征在于,所述第一服务器用于在向所述客户端发送所述第一写事务的响应消息之前,存储所述第一写事务的数据日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成。
27.根据权利要求19-24任一项所述的系统,其特征在于,所述第一服务器用于将所述第一写事务的数据日志存储于共享存储系统,所述第一服务器与所述多个服务器节点中的第二服务器共享所述共享存储系统,其中,所述第二服务器为所述第一服务器的从节点。
28.一种可读介质,其特征在于,包括执行指令,当计算设备的处理器执行所述执行指令时,所述计算设备执行权利要求1-9任一项所述的方法。
29.一种计算设备,其特征在于,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述计算设备执行权利要求1-9任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/114648 WO2019109257A1 (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110121712A CN110121712A (zh) | 2019-08-13 |
CN110121712B true CN110121712B (zh) | 2022-04-05 |
Family
ID=66750366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780055469.7A Active CN110121712B (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110121712B (zh) |
WO (1) | WO2019109257A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404737B (zh) * | 2020-03-10 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种容灾处理方法以及相关装置 |
CN111694798B (zh) * | 2020-04-23 | 2023-04-25 | 武汉达梦数据库股份有限公司 | 一种基于日志解析的数据同步方法及数据同步系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436207A (zh) * | 2008-12-16 | 2009-05-20 | 浪潮通信信息系统有限公司 | 一种基于日志快照的数据恢复和同步方法 |
CN101540704A (zh) * | 2009-05-05 | 2009-09-23 | 北京神舟航天软件技术有限公司 | 不可信dbms恶意入侵检测系统及方法 |
CN106610876A (zh) * | 2015-10-23 | 2017-05-03 | 中兴通讯股份有限公司 | 数据快照的恢复方法及装置 |
CN107077492A (zh) * | 2014-09-10 | 2017-08-18 | 亚马逊科技公司 | 可扩展的基于日志的事务管理 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4940730B2 (ja) * | 2006-03-31 | 2012-05-30 | 富士通株式会社 | データベースシステム運用方法,データベースシステム,データベース装置及びバックアッププログラム |
CN101127045B (zh) * | 2007-09-25 | 2010-04-21 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN100504905C (zh) * | 2007-11-16 | 2009-06-24 | 中国科学院软件研究所 | 数据库恶意事务处理方法及其系统 |
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
US9779128B2 (en) * | 2014-04-10 | 2017-10-03 | Futurewei Technologies, Inc. | System and method for massively parallel processing database |
US9928264B2 (en) * | 2014-10-19 | 2018-03-27 | Microsoft Technology Licensing, Llc | High performance transactions in database management systems |
CN105159818B (zh) * | 2015-08-28 | 2018-01-02 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
-
2017
- 2017-12-05 CN CN201780055469.7A patent/CN110121712B/zh active Active
- 2017-12-05 WO PCT/CN2017/114648 patent/WO2019109257A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436207A (zh) * | 2008-12-16 | 2009-05-20 | 浪潮通信信息系统有限公司 | 一种基于日志快照的数据恢复和同步方法 |
CN101540704A (zh) * | 2009-05-05 | 2009-09-23 | 北京神舟航天软件技术有限公司 | 不可信dbms恶意入侵检测系统及方法 |
CN107077492A (zh) * | 2014-09-10 | 2017-08-18 | 亚马逊科技公司 | 可扩展的基于日志的事务管理 |
CN106610876A (zh) * | 2015-10-23 | 2017-05-03 | 中兴通讯股份有限公司 | 数据快照的恢复方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110121712A (zh) | 2019-08-13 |
WO2019109257A1 (zh) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101602312B1 (ko) | 데이터 송신 방법, 데이터 수신 방법, 및 저장 장치 | |
US11321291B2 (en) | Persistent version control for data transfer between heterogeneous data stores | |
CN110121694B (zh) | 一种日志管理方法、服务器和数据库系统 | |
US20150213100A1 (en) | Data synchronization method and system | |
EP2976714B1 (en) | Method and system for byzantine fault tolerant data replication | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US9229970B2 (en) | Methods to minimize communication in a cluster database system | |
US7761431B2 (en) | Consolidating session information for a cluster of sessions in a coupled session environment | |
JP2016522514A (ja) | オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置 | |
US20180101589A1 (en) | High-performance database replication systems and methods | |
CN112131237A (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
US20230315713A1 (en) | Operation request processing method, apparatus, device, readable storage medium, and system | |
US7913109B2 (en) | Storage control apparatus and storage control method | |
US20230333945A1 (en) | Scalable Low-Loss Disaster Recovery for Data Stores | |
CN112417043A (zh) | 数据处理系统及方法 | |
CN114930315A (zh) | 基于更新的变更提要处理删除请求 | |
US10866756B2 (en) | Control device and computer readable recording medium storing control program | |
CN111522883A (zh) | 对象数据的备份方法、装置、设备及存储介质 | |
CN113609104B (zh) | 一种部分故障的键值对分布式存储系统访问方法及装置 | |
CN111984460B (zh) | 元数据的恢复方法及装置 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN114816851A (zh) | mysql主备模式下应用层容错方法及系统 | |
CN114880319A (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 |