CN110121694B - 一种日志管理方法、服务器和数据库系统 - Google Patents
一种日志管理方法、服务器和数据库系统 Download PDFInfo
- Publication number
- CN110121694B CN110121694B CN201780055464.4A CN201780055464A CN110121694B CN 110121694 B CN110121694 B CN 110121694B CN 201780055464 A CN201780055464 A CN 201780055464A CN 110121694 B CN110121694 B CN 110121694B
- Authority
- CN
- China
- Prior art keywords
- write transaction
- transaction
- server
- log
- data
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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
- 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/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Abstract
本申请提供了一种日志管理方法、服务器和数据库系统。该方法包括:服务器接收第一写事务,生成并存储第一写事务的命令日志,并检测所述第一写事务是否为多分区事务,在该服务器检测到第一写事务为多分区事务时,该服务器生成并存储第一写事务的数据日志。根据本申请公开的技术方案,服务器节点可以用过判断写事务的类型,从而采取不同的日志策略,如果写事务是多分区事务,则生成并存储该写事务的数据日志,后续通过数据日志进行多分区事务的数据恢复,从而保证数据恢复的效率,而命令日志可以用于标记多分区事务,避免了额外的标记信息,减少了系统的复杂性。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种日志管理方法、服务器和数据库系统。
背景技术
数据库日志(英文:database log)也称为事务日志(英文:transaction log),记录了对数据库执行的操作的历史(记录了对数据库的更改),是数据库中非常重要的部分,用于在系统崩溃或者故障的情况下,恢复存储数据。
数据库日志分为命令日志(英文:command log)和数据日志(英文:value log)。其中,命令日志记录对数据库的事务命令,不记录事务操作的结果。数据日志记录事务操作的结果。
日志有备份和副本复制两个功能。数据库系统的服务器节点在发生故障,数据丢失时,可以使用命令日志或数据日志进行数据的恢复。从节点可以通过回放主节点生成的命令日志或数据日志来保持与主节点的同步。当前,数据库系统一般采用固定且单一的日志策略。
发明内容
有鉴于此,本申请公开了一种日志管理方法、服务器和数据库系统。服务器节点接收到事务后,对事务的类型进行识别,并根据事务的类型选择生成和存储不同类型的日志。
第一方面,本申请公开了一种应用于数据库系统的数据库日志管理方法,该方法包括:服务器接收第一写事务,生成并存储第一写事务的命令日志,并检测第一写事务是否是多分区事务,当第一写事务是多分区事务时,该服务器生成并存储第一写事务的数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
多分区事务执行过程中可能需要多个分区之间的相互通信或者协调,执行过程一般比较复杂,执行时间较长。对于多分区事务,服务器节点生成并保存事务的数据日志,后续服务器节点在进行故障恢复或者从节点在进行数据同步时,只需要回放数据日志就可以实现目的。服务器节点在接收到写事务请求后,不论写事务的类型,均生成写事务的命令日志,减少了系统的复杂度。对于没有生成数据日志的写事务,命令日志充当服务器节点备份的功能。对于生成了数据日志的写事务,则命令日志可以起到标记的功能,不需要额外的标记信息,命令日志的存储顺序表征了写事务的执行顺序。
根据第一方面,在第一方面第一种可能的实现方式中,在该服务器发生数据故障,数据丢失时,该服务器获取数据快照和该数据快照生成时间点之后生成的命令日志,并根据命令日志的存储顺序,依次检测获取的命令日志对应的写事务是否是多分区事务,如果检测到获取的命令日志对应的写事务是多分区事务,则获取该命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。如果检测到获取的命令日志对应的写事务不是多分区事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是多分区事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复。
其中,该数据快照用于对服务器进行数据备份。该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。在数据恢复时,服务器通过存储的命令日志判断写事务的类型,如果写事务是多分区事务,则获取该写事务的数据日志,通过回放数据日志进行数据的恢复,从而保证了数据恢复速度。
根据第一方面,在第一方面第二种可能的实现方式中,该方法还包括:该服务器接收第二写事务,生成并存储第二写事务的命令日志,并检测第二写事务是否是非确定事务,当检测到第二写事务为非确定事务时,生成并存储第二写事务的数据日志。
其中,非确定事务是指两次执行结果可能不相同的事务,非确定事务至少两次执行的结果不唯一,在使用非确定事务的命令日志恢复数据时,可能会造成非确定事务的执行结果与原始结果不同,从而造成数据的错误。现有技术中,需要业务通过自身的处理,例如不使用非确定性的函数,或者使用特殊的函数或方法使得非确定写事务转变为确定性写事务,从而保证写事务不是非确定事务,以避免数据恢复中的错误,这样就加大了业务开发的负担。本申请通过合理的日志管理策略,从服务器端解决了上述问题,服务器节点检测接收到的写事务是否是非确定事务,如果该写事务是非确定事务,则生成并存储该写事务的数据日志,后续通过数据日志进行非确定事务的数据恢复,从而保证数据恢复时恢复结果与原始结果相同。服务器可以先判断写事务是否是多分区事务,在写事务不是多分区事务的情况下,再判断写事务是否是非确定事务;服务器也可以先判断写事务是否是非确定事务,在写事务不是非确定事务的情况下,再判断写事务是否是多分区事务。
根据第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,该方法还包括:在发生故障,数据丢失时,该服务器获取数据快照和该数据快照生成时间点之后生成的命令日志,并检测获取的命令日志对应的写事务是非确定事务或多分区事务,在检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取该命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。如果该写事务不是非确定事务,则从节点可以通过回放获取的命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是非确定事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
在申请通过灵活的日志管理策略,不但可以保证数据恢复的正确性,而且可以较小数据恢复的复杂度,加快数据恢复的速度。其中,该数据快照用于对服务器进行数据备份。该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
根据第一方面,或第一方面以上任一种可能的实现方式,在第一方面第四种可能的实现方式中,该服务器采用异步存储的方式存储第一写事务的数据日志,即可以在发送第一写事务的响应消息之后,存储第一写事务的数据日志。采用同步的方式存储第二写事务的数据日志,即需要在在发送第二写事务的响应消息之前,存储第二写事务的数据日志。其中,第一写事务的响应消息用于指示第一写事务执行完成,第二写事务的响应消息用于指示第二写事务执行完成。
同步存储的安全性高,但是会影响系统的整体性能,非确定事务的两次执行结果可能不同,主节点不能根据命令日志对非确定事务进行数据的恢复,从节点也不能根据命令日志保持与主节点的数据同步,系统对非确定事务的数据日志的安全性有较高要求。对于多分区事务,主节点可以根据多分区事务的命令日志进行数据的恢复,从节点也可以根据多分区事务的命令日志进行与主节点的数据同步。服务器节点对非确定事务和多分区事务可以采取不同的数据日志存储策略。
根据第一方面,或第一方面以上任一种可能的实现方式,在第一方面第五种可能的实现方式中,服务器采用同步的方式存储写事务的命令日志。即在发送第一写事务的响应消息之前,存储第一写事务的命令日志。在发送第二写事务的响应消息之前,存储第二写事务的命令日志。其中,第一写事务的响应消息用于指示第一写事务执行完成,第二写事务的响应消息用于指示第二写事务执行完成。
命令日志不依赖事务的执行结果,且不影响事务的执行。服务器节点在接收到写事务后可以直接生成命令日志,事务执行和命令日志的生成可以并行,服务器节点可以选择更安全的存储策略来存储事务的命令日志。
根据第一方面,或第一方面以上任一种可能的实现方式,在第一方面第六种可能的实现方式中,该服务器将第一写事务的命令日志和数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。服务器还将第二写事务的数据日志和命令日志存储于该共享存储系统。
该服务器节点的从节点可以从共享存储系统中获取第一写事务的数据日志,并通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
根据第一方面,或第一方面以上任一种可能的实现方式,在第一方面第七种可能的实现方式中,方法还包括:服务器将第一写事务的命令日志和第一写事务的数据日志发送至该服务器的从节点。服务器节点还将第二写事务的命令日志和数据日志发送给该服务器的从节点,以供该服务器节点的从节点通过回放第一写事务的数据日志保持与该服务器节点的数据同步。
第二方面,本申请提供了一种可读介质,包括执行指令,当计算设备的处理器执行该执行指令时,该计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第三方面,本申请提供了一种计算设备,包括:处理器、存储器和总线;存储器用于存储执行指令,处理器与存储器通过总线连接,当计算设备运行时,处理器执行存储器存储的执行指令,以使计算设备执行以上第一方面或以上第一方面的任一种可能的实现方式中的方法。
第四方面,本申请公开了一种服务器,应用于数据库系统,该服务器包括:接收单元,用于接收第一写事务;生成单元,用于生成第一写事务的命令日志;检测单元,用于检测第一写事务是否为多分区事务,多分区事务包括对至少两个分区进行操作的事务;生成单元还用于在检测单元检测到第一写事务为多分区事务时,生成第一写事务的数据日志;存储单元,用于存储第一写事务的命令日志和第一写事务的数据日志。
根据第四方面,在第四方面第一种可能的实现方式中,该服务器还包括恢复单元,用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测单元检测到获取的命令日志对应的写事务是多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
根据第四方面,在第四方面第二种可能的实现方式中,接收单元还用于接收第二写事务;
生成单元还用于生成第二写事务的命令日志;检测单元还用于检测第二写事务是否为非确定事务,非确定事务至少两次执行的结果不唯一;生成单元还用于在检测单元检测到第二写事务为非确定事务时,生成第二写事务的数据日志;存储单元还用于存储第二写事务的命令日志和第二写事务的数据日志。
根据第四方面第二种可能的实现方式,在第四方面第三种可能的实现方式中,该服务器还包括恢复单元,用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测单元检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
根据第四方面,或第四方面以上任一种可能的实现方式,在第四方面第四种可能的实现方式中,存储单元可以在服务器发送第一写事务的响应消息之后,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成;存储单元用于在服务器发送第二写事务的响应消息之前,存储第二写事务的数据日志,第二写事务的响应消息用于指示第二写事务执行完成。
根据第四方面,或第四方面以上任一种可能的实现方式,在第四方面第五种可能的实现方式中,存储单元用于在服务器发送第一写事务的响应消息之前,存储第一写事务的命令日志,第一写事务的响应消息用于指示第一写事务执行完成;存储单元用于在服务器发送第二写事务的响应消息之前,存储第二写事务的命令日志,第二写事务的响应消息用于指示第二写事务执行完成。
根据第四方面,或第四方面以上任一种可能的实现方式,在第四方面第六种可能的实现方式中,存储单元用于将第一写事务的命令日志和第一写事务的数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。
根据第四方面,或第四方面以上任一种可能的实现方式,在第四方面第七种可能的实现方式中,该服务器还包括发送单元,用于将第一写事务的命令日志和第一写事务的数据日志发送至服务器的从节点。
第四方面为第一方面方法对应的装置实现方式,第一方面或第一方面任一种可能的实现方式中的描述对应适用于第四方面或第四方面任一种可能的实现方式,在此不再赘述。
第五方面,本申请公开了一种数据库系统,该系统包括客户端和多个服务器节点;客户端用于向多个服务器节点中的第一服务器发送第一写事务;第一服务器用于接收第一写事务,生成并存储第一写事务的命令日志,并在检测到第一写事务为多分区事务时,生成并存储第一写事务的数据日志,其中,多分区事务包括对至少两个分区进行操作的事务。
根据第五方面,在第五方面第一种可能的实现方式中,在第一服务器发生故障时,第一服务器还用于获取第一服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,数据快照用于对第一服务器进行数据备份。
根据第五方面,在第五方面第二种可能的实现方式中,第一服务器还用于接收第二写事务,生成并存储第二写事务的命令日志,并在检测到第二写事务为非确定事务时,生成并存储第二写事务的数据日志,其中,非确定事务至少两次执行的结果不唯一。
根据第五方面第二种可能的实现方式,在第五方面第三种可能的实现方式中,在第一服务器发生故障时,第一服务器还用于获取第一服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务或非确定事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对第一服务器进行数据备份。
根据第五方面,或第五方面以上任一种可能的实现方式,在第五方面第四种可能的实现方式中,第一服务器可以在向客户端发送第一写事务的响应消息之后,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成;第一服务器用于在向客户端发送第二写事务的响应消息之前,存储第二写事务的数据日志,第二写事务的响应消息用于指示第二写事务执行完成。
根据第五方面,或第五方面以上任一种可能的实现方式,在第五方面第五种可能的实现方式中,第一服务器用于在向客户端发送第一写事务的响应消息之前,存储第一写事务的命令日志,第一写事务的响应消息用于指示第一写事务执行完成;第一服务器用于在向客户端发送第二写事务的响应消息之前,存储第二写事务的命令日志,第二写事务的响应消息用于指示第二写事务执行完成。
根据第五方面,或第五方面以上任一种可能的实现方式,在第五方面第六种可能的实现方式中,第一服务器用于将第一写事务的命令日志和第一写事务的数据日志存储于共享存储系统,第一服务器与多个服务器节点中的第二服务器共享共享存储系统,其中,第二服务器为第一服务器的从节点。
根据第五方面,或第五方面以上任一种可能的实现方式,在第五方面第七种可能的实现方式中,第一服务器还用于将第一写事务的命令日志和第一写事务的数据日志发送至第二服务器,其中,第二服务器为第一服务器的从节点。
第五方面为第一方面方法对应的系统实现方式,第一方面或第一方面任一种可能的实现方式中的描述对应适用于第五方面或第五方面任一种可能的实现方式,在此不再赘述。
根据本申请公开的技术方案,服务器节点可以用过判断写事务的类型,从而采取不同的日志策略,如果写事务是多分区事务,则生成并存储该写事务的数据日志,后续通过数据日志进行多分区事务的数据恢复,从而保证数据恢复时的速度。且本申请公开的技术方案中,服务器接收到写事务后,不论写事务的类型,均生成写事务的命令日志,减少了系统的复杂度。对于没有生成数据日志的写事务,命令日志充当服务器节点备份的功能。对于生成了数据日志的写事务,则命令日志可以起到标记多分区事务的功能,表明该写事务存在数据日志,不需要额外的标记信息。
附图说明
图1为依据本申请一实施例的数据库系统的逻辑结构示意图;
图2为依据本申请一实施例的服务器节点的组织结构示意图;
图3为依据本申请一实施例的数据库日志管理方法的流程示意图;
图4为依据本申请一实施例的数据库日志管理方法的流程示意图;
图5为依据本申请一实施例的数据库日志管理方法的流程示意图;
图6为依据本申请一实施例的服务器的逻辑结构示意图;
图7为依据本申请一实施例的服务器的逻辑结构示意图。
具体实施方式
下面将结合附图,对本申请实施例进行描述。
本申请实施例采用术语第一和第二等来区分各个对象,但各个“第一”和“第二”之间不具有逻辑或时序上的依赖关系。
在本申请实施例中,事务是数据库事务的简称,是数据库管理系统执行过程中的一个逻辑单元,一般指用户对数据库的一次访问,由有限的数据库操作序列构成(如:将在A账户减去100元,B账户增加100元,这两个操作放在一个事务中)。
在本申请实施例中,命令日志用于记录对数据库的事务命令,例如:对某个用户ID为9527的用户账户加100元,命令日志也称为逻辑日志(英文:logical log)。数据日志用于记录事务操作的结果,例如:用户ID为9527的用户账户金额为200元(该日志生效前,该用户的账户金额为100元),数据日志也叫物理日志(英文:physical log)或者二进制日志(英文:binary log)。
在本申请实施例中,日志持久化是指将日志存储于非易失存储介质中。
在本申请实施例中,一份数据在数据库中可以有若干个副本,副本分为主副本和从副本。对于第一服务器节点,能提供客户端写服务的备份为主副本,其他服务器节点的主副本在第一服务器节点的备份属于第一服务器节点的从副本,即提供冗余备份的副本为从副本。对于一份数据,存储主副本的分区称为主分区,存储从副本的分区称为从分区,存储主副本的服务器节点称为主节点,存储从副本的服务器节点称为从节点。从节点需要保持与主节点的数据同步,可以对用户提供读服务。
在本申请实施例中,分区(partitioning)是将一个表或索引物理地分解为多个更小、更可管理的部分。就访问数据库的应用而言,逻辑上讲只有一个表或一个索引,但在物理上这个表或索引可能由数十个物理分区组成。每个分区都是一个独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。
在本申请实施例中,用户数据可以分布存储于多个数据库分区,事务可以分为单分区事务和多分区事务。其中,单分区事务是指只需要对一个分区进行操作的事务,多分区事务是指需要对多个分区进行操作的事务。其中,写事务是指会对数据库数据进行修改操作的事务。多分区写事务是指多分区事务中对需要操作的分区中任意一个分区进行写操作的事务。
在本申请实施例中,非确定事务(英文:Non-deterministic transaction)是指两次执行结果可能不相同的事务。例如,事务中的操作,结构化查询语言(英文全称:Structured Query Language,缩写:SQL)或者函数会产生随机数,日期等非确定性数据,这些非确定性数据影响该事务最终的结果的事务。多次执行非确定事务可能会有不同的结果。
数据库日志分为命令日志和数据日志,命令日志和数据日志分别有各自的特点。命令日志一般占用较小存储空间,且其生成不依赖事务执行的结果,与事务执行可以并行操作,但使用命令日志进行数据恢复的速度较慢,且对于非确定事务无法进行恢复。数据日志一般占用较大的存储空间,且其生成依赖事务执行的结果,与事务执行是串行关系,但使用命令日志进行数据恢复的速度较快,且可以恢复任意类型的事务执行结果。
如果在数据库系统中只使用单一的命令日志或数据日志,则无法合理的结合命令日志和数据日志的优点。本申请实施例结合命令日志和数据日志的优点,在保证数据安全的情况下,优化了数据库系统的性能。
图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)用于判断写事务是否为多分区事务的逻辑(电路/固件代码);(4)用于生成写事务的数据日志,并存储写事务的数据日志的逻辑(电路/固件代码)。
总线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)用于判断写事务是否为多分区事务的代码;(4)用于生成写事务的数据日志,并存储写事务的数据日志的代码。
此外,图2仅仅是一个服务器103的例子,服务器103可能包含相比于图2展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图2中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。
图3为依据本申请一实施例的日志管理方法300的示意性流程图,如图3所示,方法300包括:
S301:客户端向服务器节点发送第一写事务请求。
在分布式数据库系统中,该服务器节点可以为用户数据的主节点,即存储数据主副本的节点,可以向用户提供写操作。
在本申请实施例中,如果第一写事务为多分区事务,则客户端可以将该多分区事务提交给协调节点,协调节点将该多分区事务拆分为单分区事务,并分配给各自对应的服务器节点处理。如果第一写事务为单分区事务,则客户端可以将第一写事务直接发送给对应的服务器节点,也可以通过协调节点将写事务发送给对应的服务器节点节点处理。
当然,即使第一写事务为多分区事务,客户端也可以直接将第一写事务发送给该服务器节点,由该服务器节点对多分区事务的执行进行协调。本申请实施例不限定客户端向服务器节点发送写事务请求的具体形式。
S302:服务器节点生成第一写事务的命令日志。
服务器节点在接收到客户端的第一写事务后,根据第一写事务生成写事务的命令日志。因为命令日志不依赖事务的执行结果,且不影响事务的执行,服务器节点在接收到第一写事务后,可以直接生成命令日志,事务执行和命令日志的生成可以并行。本申请不限定命令日志的生成时间。
在本申请实施例中,服务器节点在接收到第一写事务请求后,不论写事务的类型,均生成第一写事务的命令日志。对于没有生成数据日志的写事务,命令日志充当服务器节点备份的功能,服务器节点在发生故障后,可以通过回放命令日志来恢复数据。服务器节点的从节点可以通过回放命令日志保持与服务器节点的同步。对于后续会生成数据日志的写事务,则命令日志可以起到标记的功能,不再需要外的标记信息来标记存在数据日志的写事务,命令日志的存储顺序表征了写事务的执行顺序。命令日志中可以带有生成该命令日志的时间戳,服务器节点根据时间戳判断命令日志的存储顺序。命令日志也可以按照一定的顺序存储在存储空间或日志文件中,服务器节点可以以此来判断命令日志的存储顺序。在服务器节点进行数据恢复或者从节点进行数据同步时,要保证写事务的恢复顺序,可以根据命令日志的顺序进行数据的恢复,从而保证数据的正确性。
S303:服务器节点将第一写事务的命令日志存储于存储系统。
服务器节点可以采用同步或者异步的方式存储第一写事务的命令日志。如果采用同步存储的方式,则在命令日志成功存储之前,服务器节点不能提交(commit)事务,即,服务器节点在发送第一写事务的响应消息之前,存储第一写事务的命令日志,第一写事务的响应消息用于指示第一写事务执行完成。如果采用异步存储的方式,则服务器节点提交事务不受命令日志的是否成功存储的影响。
如果采用同步存储的方式,因为命令日志存储成功是写事务可以提交的必要条件,从而保证了系统的安全性。但采用同步存储的方式,可能会带来一定的系统延时,影响数据库系统的整体性能。
S304:服务器节点执行第一写事务。
事务是数据库包含一系列操作。当写事务包含的操作都被执行后,才认为服务器节点成功的执行了写事务。
S305:服务器节点判断第一写事务是否是多分区事务。如果第一写事务是多分区事务,则执行步骤S306,如果第一写事务不是多分区事务,则执行步骤308。
事务处理请求中可以包含专门的分区指示信息,该分区指示信息可以指示该待处理的事务是单分区事务还是多分区事务。
事务处理请求也可以不包含分区指示信息,事务类型可以由事服务器解析事务请求中的关键信息获得。分区引入了一种分区键(partition key)的概念,分区键用于根据某个区间值(或范围值)、特定值列表或散列函数值执行数据的聚集,让数据更具规则分布在不同的分区中,让大对象变成一些小对象。用户在创建表(数据表)或修改表时,会确定该表的分区键,用户在进行写请求时,数据库分析写请求中分区键的情况,通过分析该写请求是否涉及到多个分区,来判断该请求是否为多分区写事务。
在本申请实施例不限定步骤S304和步骤S305的执行顺序。S304和S305的执行不存在先后的逻辑关系,在一些实施方式中,步骤S305可以先于步骤S304执行。
S306:服务器节点生成第一写事务的数据日志。
数据日志的功能主要有以下两个:
1、备份。如果服务器节点在某个时间点T做了一次数据快照备份,然后利用数据日志记录从这个时间点T后多分区事务对主副本的改动,如果服务器节点发生了故障,在进行数据还原的时候,利用时间点T的数据快照和数据快照生成时间点之后的数据日志,就可以将写事务的结果还原。
2、副本复制。服务器节点的数据日志会记录多分区事务的改动,从节点获取到数据日志后,可以根据数据日志内容在从节点进行同样的操作。
多分区事务执行过程中可能需要多个分区之间的相互通信或者协调,所以执行过程一般比较复杂,执行时间较长。对于多分区事务,服务器节点生成并保存事务的数据日志,后续服务器节点在进行故障恢复或者从节点在进行数据同步时,只需要回放数据日志就可以实现目的。
S307:服务器节点将第一写事务的数据日志存储于存储系统。
服务器节点可以使用同步或者异步的形式将数据日志存储于存储系统。如果使用同步的形式进行存储,则服务器节点提交事务前,需要收到存储系统写成功的反馈,即服务器在发送第一写事务的响应消息之前,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成,系统数据会更加安全。如果使用异步的形式进行存储,则服务器节点提交事务前,不需要收到存储系统写成功的反馈,即服务器可以在发送第一写事务的响应消息之后,存储第一写事务的数据日志,事务处理速度会更快,但是如果在事务提交后,写成功前服务器节点发生故障,则会丢失数据日志的数据。
如果采用异步存储的方式,服务器节点可以将数据日志线存储在缓存中,在多次提交事务后,将缓存中的数据持久化存储到存储系统中。本申请不限定服务器节点存储数据日志的形式。
存储系统可以为服务器节点与从节点的共享存储系统。服务器节点将写事务的命令日志和数据日志存储于共享存储系统。
可选的,存储系统为服务器节点的存储系统。进一步的,服务器节点还将写事务的命令日志和数据日志发送给从节点。
服务器节点在生成第一写事务的数据日志后,可以建立第一写事务的数据日志与第一写事务的数据日志之间的对应关系。
S308:服务器节点向客户端发送写事务响应。
服务器节点执行完写事务后,提交该写事务,并在提交事务后,向客户端发送写事务响应,该写事务响应为第一写事务的响应消息,用于指示第一写事务执行完成。如果该写事务是多分区事务,则服务器节点通过协调节点向客户端发送写事务响应。
在本申请实施例中,服务器节点按照一定的周期对数据库系统进行数据备份,一般是采用数据快照的形式。
当服务器节点发生故障,数据丢失时,服务器节点首先获取该服务器的数据快照,并根据获取的数据快照进行数据的恢复。服务器节点然后获取该数据快照后生成的命令日志,并按照命令日志的存储顺序依次检测命令日志记载的写事务是否是多分区事务,如果是多分区事务,则服务器节点从存储系统中获取该多分区事务的数据日志,通过回放数据日志恢复数据。如果该写事务不是多分区事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是多分区事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复。
该数据快照可以具体为该服务器最新的数据快照,服务器可能会按照时间周期定期做数据快照的备份,在数据恢复的时候选取最新的数据快照可以加快恢复的速度。
在本申请实施例中,如果第一写事务是多分区事务,则服务器节点生成并存储了第一写事务的命令日志和数据日志。在进行数据恢复过程中,服务器节点获取第一写事务的命令日志,并在根据第一写事务的命令日志检测到第一写事务为多分区事务时,获取第一写事务的数据日志,并通过回放第一写事务的数据日志以进行数据恢复。如果第一写事务不是多分区事务,则服务器节点可以通过回放第一写事务的数据日志进行数据恢复。当然,即使第一写事务不是多分区事务,服务器节点也可以根据用户的日志策略生成并存储第一写事务的数据日志,并在数据恢复过程中,通过回放第一写事务的数据日志来进行数据恢复。
命令日志不依赖事务的执行结果,服务器节点接收到写事务后就可以生成并存储写事务的命令日志,但数据日志依赖于写事务的执行结果,所以数据日志需要在事务执行之后才能生成。如果服务器节点在生成并存储命令日志后,成功存储命令日志之前发生了故障,则存储系统只存储有多分区事务的命令日志,没有存储多分区事务的数据日志。在数据恢复过程中,如果服务器节点检测出某一条命令日志记录的读事务是多分区事务,但存储系统没有保存该多分区事务对应的数据日志,说明该多分区写事务可能没有完成,则服务器节点可以终止数据恢复。当然,服务器节点也可以根据多分区事务的命令日志进行事务的恢复。
同理,服务器节点的从节点获取数据库系统的命令日志,并按照命令日志的存储顺序依次检测命令日志记载的写事务是否是多分区事务,如果是多分区事务,则从节点获取该多分区事务的数据日志,通过回放数据日志来保持与服务器节点的数据同步。如果该写事务不是多分区事务,则从节点可以通过回放该命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是多分区事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
非确定事务的执行结果可能不同。如果使用非确定事务的命令日志进行备份,在服务器节点发生数据故障时,采用回放非确定事务的命令日志的方式进行数据的恢复时,可能会发生数据恢复的错误。另一方面,如果从节点根据非确定事务的命令日志进行从副本的复制,则可能导致服务器节点和从节点数据不一致的情况。
方法300还可以包括:服务器接收第二写事务,生成并存储第二写事务的命令日志,并检测第二写事务是否是多分区事务,如果检测到第二写事务为非确定事务,则生成并存储第二写事务的数据日志。
在服务器发生故障时,方法300还可以包括:服务器获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务或非确定事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
可选的,服务器在发送第一写事务的响应消息之后,存储第一写事务的数据日志,在发送第二写事务的响应消息之前,存储第二写事务的数据日志。第一写事务的响应消息用于指示第一写事务执行完成,第二写事务的响应消息用于指示第二写事务执行完成。
可选的,服务器在发送第一写事务的响应消息之前,存储第一写事务的命令日志,也在发送第二写事务的响应消息之前,存储第二写事务的命令日志。
服务器节点还可以判断写事务是否是非确定事务,如果是非确定事务,即使该写事务不是多分区事务,服务器节点也根据写事务的执行结果生成该写事务的数据日志,并存储该数据日志,从而保证系统的稳定性。具体如图4所示,方法400包括:
S401-404参照步骤S301-S304,在此不再赘述。
S405:服务器节点判断写事务是否是非确定事务或者多分区事务,如果写事务是非确定事务或者多分区事务,则服务器节点执行步骤S406,如果写事务不是非确定事务或者多分区事务,则服务器节点执行步骤S408。
非确定事务是指执行结果不唯一的事务,其至少两次执行的结果不唯一,即两次执行结果可能不相同的事务。例如,事务中的操作,结构化查询语言或者函数会产生随机数,日期等非确定性数据,影响该事务最终的结果的事务。
服务器节点可以通过检测写事务中是否携带第一标识来检测写事务是否是非确定事务事务。如果写事务为非确定事务,则客户端会在写事务中写入第一标识,该第一标识用于指示该写事务为非确定事务。如果服务器节点检测到写事务携带了该第一标识,则写事务为非确定事务,如果服务器节点检测到写事务不携带该第一标识,则写事务不是非确定事务。
服务器节点还以通过检测写事务携带的第二标识的数值来检测写事务是否是非确定事务。例如,第二标识可以为一个比特的指示位,如果写事务为非确定事务,则客户端会将写事务中的第二标识置为“1”,如果写事务不是非确定事务,则客户端会将写事务中的第二标识置为“0”。则如果服务器节点检测到写事务中的第二标识为“1”,则写事务为非确定事务,如果服务器节点检测到写事务中的第二标识为“0”,则写事务不是非确定事务。
服务器节点还可以通过分析写事务来检测写事务是否是非确定事务。如果检测到写事务中的操作,结构化查询语言或者函数会产生随机数,当前时间等非确定性数据,则说明写事务为非确定事务,否则写事务不是非确定事务。
应理解,本申请实施例并不限定写事务的具体检测方式。
在本申请实施例中,服务器节点可以先检测写事务是否是非确定性写事务,如果写事务是非确定事务,则服务器节点终止检测,执行步骤S406;如果写事务不是非确定事务,则服务器节点继续检测写事务是否是多分区事务,如果该写事务是多分区事务,则服务器节点执行步骤S406,如果该写事务也不是多分区事务,则服务器节点执行步骤S408。服务器节点也可以先检测写事务是否是非确定性写事务,如果写事务是多分区事务,则服务器节点终止检测,执行步骤S406;如果写事务不是多分区事务,则服务器节点继续检测写事务是否是非确定事务,如果该写事务是非确定事务,则服务器节点执行步骤S406,如果该写事务也不是非确定事务,则服务器节点执行步骤S408。本申请实施例不限定服务器节点检测写事务是否是非确定事务或多分区事务的顺序。
S406-S408参照步骤S306-S308,在此不再赘述。
服务器节点发生故障,数据丢失时,服务器节点首先获取最新的数据快照,并根据最新的数据快照进行数据的恢复。服务器节点然后获取最新的数据快照后的命令日志,并按照存储的顺序依次判断数据日志记载的写事务是否是非确定事务或者多分区事务,如果是非确定事务或者多分区事务,则服务器节点从存储系统中获取该写事务的数据日志,通过回放数据日志恢复数据。如果该写事务不是非确定事务或者多分区事务,则服务器节点可以通过回放该命令日志恢复数据。当然,即使该写事务不是非确定事务或者多分区事务,如果该写事务存在数据日志,则服务器节点也可以通过回放该写事务的数据日志,进行数据的恢复。
在本申请实施例中,服务器节点可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是非确定事务,则服务器节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复;如果写事务不是非确定事务,则服务器节点继续根据写事务的命令日志检测写事务是否是多分区事务,如果该写事务是多分区事务,则服务器节点获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复,如果该写事务也不是多分区事务,则服务器节点可以通过回放命令日志进行数据恢复。服务器节点也可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是多分区事务,则服务器节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复;如果写事务不是多分区事务,则服务器节点继续根据写事务的命令日志检测写事务是否是非确定事务,如果该写事务是非确定事务,则服务器节点获取该写事务对应的数据日志,并通过回放数据日志进行数据恢复,如果该写事务也不是非确定事务,则服务器节点可以通过回放命令日志进行数据恢复。本申请实施例不限定服务器节点检测写事务是否是非确定事务或多分区事务的顺序。
同理,服务器节点的从节点获取数据库系统的命令日志,并按照存储的顺序依次判断数据日志记载的写事务是否是非确定事务或者多分区事务,如果是非确定事务或者多分区事务,则从节点获取该写事务的数据日志,通过回放数据日志来保持与服务器节点的数据同步。如果该写事务不是非确定事务或者多分区事务,则从节点可以通过回放该命令日志来保持与服务器节点的数据同步。当然,即使该写事务不是非确定事务或者多分区事务,如果该写事务存在数据日志,则从节点也可以通过回放该写事务的数据日志来保持与服务器节点的数据同步。
在本申请实施例中,服务器节点的从节点可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是非确定事务,则从节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据同步;如果写事务不是非确定事务,则从节点继续根据写事务的命令日志检测写事务是否是多分区事务,如果该写事务是多分区事务,则从节点获取该写事务对应的数据日志,并通过回放数据日志进行数据同步,如果该写事务也不是多分区事务,则从节点可以通过回放命令日志进行数据同步。服务器节点的从节点也可以先根据写事务的命令日志检测写事务是否是非确定性写事务,如果写事务是多分区事务,则从节点终止检测,获取该写事务对应的数据日志,并通过回放数据日志进行数据同步;如果写事务不是多分区事务,则从节点继续根据写事务的命令日志检测写事务是否是非确定事务,如果该写事务是非确定事务,则从节点获取该写事务对应的数据日志,并通过回放数据日志进行数据同步,如果该写事务也不是非确定事务,则从节点可以通过回放命令日志进行数据同步。本申请实施例不限定从节点检测写事务是否是非确定事务或多分区事务的顺序。
从节点获取命令日志和数据日志的方式在图3实施例已有描述,在此不再赘述。
本申请实施例中,服务器节点可以采用同步或者异步的方式存储写事务的命令日志和数据日志。如果采用同步的方式,则需要在发送写事务的响应消息之前,存储日志,如果采用异步的方式,则可以在发送写事务的响应消息之后,存储日志。
非确定事务的两次执行结果可能不同,主节点不能根据命令日志对非确定事务进行数据的恢复,从节点也不能根据命令日志保持与主节点的数据同步。系统对非确定事务的数据日志的安全性有较高要求。对于多分区事务,主节点可以根据多分区事务的命令日志进行数据的恢复,从节点也可以根据多分区事务的命令日志进行与主节点的数据同步。同步存储的安全性高,但是会影响系统的整体性能,在本申请实施例中,服务器节点对非确定事务和多分区事务可以采取不同的存储策略。如图5所示,方法500包括:
S501参照S301,S502参照S302,在此不再赘述。
S503:服务器节点同步存储命令日志。
对于没有保存数据日志的写事务,后续服务器节点在发生故障时,只能通过命令日志来进行数据的恢复。从节点也只能通过命令日志来保持与主节点的同步。为了保证系统的安全性,服务器节点采用同步存储的方式对命令日志进行存储。另一方面,命令日志不依赖事务的执行结果,且不影响事务的执行。服务器节点在接收到写事务后可以直接生成命令日志,事务执行和命令日志的生成可以并行,服务器节点可以选择更安全的存储策略来存储事务的命令日志。
S504参照步骤S304,在此不再赘述。
S505:服务器节点判断写事务是否是非确定事务,如果写事务是非确定事务,则执行步骤S506,如果写事务不是非确定事务,则执行步骤S507。
S506:服务器节点生成非确定事务的数据日志,并同步存储数据日志。
主节点发生故障时,不能通过非确定事务的命令日志恢复数据。从节点也不能通过非确定事务的命令日志来保持与主节点的数据同步。为了保证系统的安全性,服务器节点采用同步存储的方式对非确定事务的数据日志进行存储。
S507:服务器节点判断写事务是否是多分区事务,如果写事务是多分区事务,则执行步骤S508,如果写事务不是多分区事务,则执行步骤S509。
S508:服务器节点生成非确定事务的数据日志,并异步存储该数据日志。
如果使用同步的形式对多分区事务的数据日志进行存储,则服务器节点提交事务前,需要收到存储系统写成功的反馈,会影响事务处理的速度。虽然多分区事务的执行过程一般比较复杂,但主节点在进行数据恢复或者从节点在进行数据同步时,通过回放多分区事务的命令日志也可以实现目的。本申请实施例使用异步的形式对多分区事务的数据日志进行存储,服务器节点提交事务前,不需要收到存储系统写成功的反馈,事务处理速度会更快。
步骤S509参照步骤S308,在此不再赘述。
在本申请实施例中,服务器节点也可以先判断写事务是否是多分区事务,如果写事务是多分区事务,则服务器节点生成写事务的数据日志,并异步存储写事务的数据日志,如果写事务不是多分区事务,则服务器节点继续检测写事务是否是非确定事务,如果写事务是非确定事务,则服务器节点生成写事务的数据日志,并同步存储写事务的数据日志。
在以上实施例中,存储系统可以为服务器节点与从节点的共享存储系统。服务器节点将写事务的命令日志和数据日志存储于共享存储系统,共享存储系统中的命令日志和数据日志可以被服务器节点和从节点访问。服务器节点在发生故障时,可以利用共享存储系统中的命令日志和/或数据日志进行数据恢复。从节点可以从共享存储系统中获取命令日志和数据日志,并通过回放命令日志或数据日志从而保证与服务器节点的数据同步。例如,服务器节点将第一写事务的命令日志和第一写事务的数据日志存储于该共享存储系统;将第二写事务的命令日志和第二写事务的数据日志存储于该共享存储系统。
可选的,在以上实施例中,存储系统为服务器节点的存储系统。服务器节点在发生故障时,可以利用共享存储系统中的命令日志或数据日志进行数据恢复。进一步的,服务器节点还将写事务的命令日志和数据日志发送给从节点,从节点通过回放命令日志或数据日志从而保证与服务器节点的数据同步。例如,服务器节点将第一写事务的命令日志和第一写事务的数据日志发送给该服务器的从节点;将第二写事务的命令日志和第二写事务的数据日志发送给该服务器的从节点
图6为依据本申请一实施例的一种服务器节点600的逻辑结构示意图,服务器节点600应用于数据存储系统,该数据存储系统包括客户端和多个服务器节点600,如图6所示,服务器节点600包括:
接收单元602,用于接收第一写事务。
生成单元604,用于生成第一写事务的命令日志。
检测单元606,用于检测第一写事务是否为多分区事务,多分区事务包括对至少两个分区进行操作的事务。
生成单元604还用于在检测单元606检测到第一写事务为多分区事务时,生成第一写事务的数据日志。
存储单元608,用于存储第一写事务的命令日志和第一写事务的数据日志。
如图7所示,服务器还包括恢复单元610。
可选的,恢复单元610用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,检测单元606还用于检测获取的命令日志对应的写事务是否是多分区事务,恢复单元610还用于在检测单元606检测到获取的命令日志对应的写事务是多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
可选的,接收单元602还用于接收第二写事务,生成单元604还用于生成第二写事务的命令日志,检测单元606还用于检测第二写事务是否为非确定事务,生成单元604还用于在检测单元606检测到第二写事务为非确定事务时,生成第二写事务的数据日志,存储单元608还用于存储第二写事务的命令日志和第二写事务的数据日志,其中,非确定事务至少两次执行的结果不唯一。
可选的,恢复单元610用于在服务器发生故障时,获取服务器的数据快照和数据快照生成时间点之后生成的命令日志,检测单元606还用于检测获取的命令日志对应的写事务是否是非确定事务或多分区事务,恢复单元610还用于在检测单元606检测到获取的命令日志对应的写事务是非确定事务或多分区事务时,获取获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,数据快照用于对服务器进行数据备份。
可选的,存储单元608用于在服务器发送第一写事务的响应消息之后,存储第一写事务的数据日志,第一写事务的响应消息用于指示第一写事务执行完成,存储单元608用于在服务器发送第二写事务的响应消息之前,存储第二写事务的数据日志,第二写事务的响应消息用于指示第二写事务执行完成。
可选的,存储单元608用于在服务器发送第一写事务的响应消息之前,存储第一写事务的命令日志,第一写事务的响应消息用于指示第一写事务执行完成,存储单元608用于在服务器发送第二写事务的响应消息之前,存储第二写事务的命令日志,第二写事务的响应消息用于指示第二写事务执行完成。
可选的,存储单元608用于将第一写事务的命令日志和第一写事务的数据日志存储于共享存储系统,服务器与服务器的从节点共享共享存储系统。
可选的,如图7所示,服务器还包括发送单元612,用于将第一写事务的命令日志和第一写事务的数据日志发送至服务器的从节点。
在本申请实施例中,接收单元602和发送单元812可以具体由图2中的处理器201与通信接口204来实现,或者由图2中的处理器201,通信接口204和系统内存205中的事务处理模块模块206来实现。
在本申请实施例中,检测单元604,生成单元606,存储单元608和恢复单元610可以具体由图2中的处理器201中的事务处理逻辑210来实现,或者由图2中的处理器201和系统内存205中的事务处理模块206来实现。
在本申请实施例中,事务处理逻辑210可以包含接收单元602,检测单元604,生成单元606和存储单元608。事务处理逻辑210还可以包含恢复单元610,发送单元612。
在本申请实施例中,事务处理模块206可以包含接收单元602,检测单元604,生成单元606和存储单元608。事务处理模块206还可以包含恢复单元610,发送单元612。
本申请实施例为图1-图5实施例对应的服务器节点的装置实施例,图1-图5实施例部分的特征描述适用于本申请实施例,在此不再赘述。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者替换其中部分技术特征;而这些修改或者替换,并不使相应技术方案脱离权利要求的保护范围。
Claims (26)
1.一种数据库日志的管理方法,其特征在于,所述方法包括:
服务器接收第一写事务;
所述服务器生成并存储所述第一写事务的命令日志;
所述服务器检测到所述第一写事务为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述服务器生成并存储所述第一写事务的数据日志。
2.根据权利要求1所述的方法,其特征在于,在所述服务器发生故障时,所述方法还包括:
所述服务器获取所述服务器的数据快照,所述数据快照用于对所述服务器进行数据备份;
所述服务器获取所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述服务器接收第二写事务;
所述服务器生成并存储所述第二写事务的命令日志;
所述服务器检测到所述第二写事务为非确定事务,所述非确定事务至少两次执行的结果不唯一;
所述服务器生成并存储所述第二写事务的数据日志。
4.根据权利要求3所述的方法,其特征在于,在所述服务器发生故障时,所述方法还包括:
所述服务器获取所述服务器的数据快照,所述数据快照用于对所述服务器进行数据备份;
所述服务器获取所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务或非确定事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
5.根据权利要求3或4所述的方法,其特征在于,所述服务器存储所述第二写事务的数据日志包括:
所述服务器在发送所述第二写事务的响应消息之前,存储所述第二写事务的数据日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
6.根据权利要求3或4所述的方法,其特征在于,所述服务器存储所述第一写事务的命令日志包括:
所述服务器在发送所述第一写事务的响应消息之前,存储所述第一写事务的命令日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成;
所述服务器存储所述第二写事务的命令日志包括:
所述服务器在发送所述第二写事务的响应消息之前,存储所述第二写事务的命令日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述服务器存储所述第一写事务的命令日志包括:
所述服务器将所述第一写事务的命令日志存储于共享存储系统,所述服务器与所述服务器的从节点共享所述共享存储系统;
所述服务器存储所述第一写事务的数据日志包括:
所述服务器将所述第一写事务的数据日志存储于所述共享存储系统。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
所述服务器将所述第一写事务的命令日志和所述第一写事务的数据日志发送至所述服务器的从节点。
9.一种服务器,应用于数据库系统,其特征在于,所述服务器包括:
接收单元,用于接收第一写事务;
生成单元,用于生成所述第一写事务的命令日志;
检测单元,用于检测所述第一写事务是否为多分区事务,所述多分区事务包括对至少两个分区进行操作的事务;
所述生成单元还用于在所述检测单元检测到所述第一写事务为多分区事务时,生成所述第一写事务的数据日志;
存储单元,用于存储所述第一写事务的命令日志和所述第一写事务的数据日志。
10.根据权利要求9所述的服务器,其特征在于,所述服务器还包括恢复单元;
所述恢复单元用于在所述服务器发生故障时,获取所述服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在所述检测单元检测到获取的命令日志对应的写事务是多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据。
11.根据权利要求9所述的服务器,其特征在于,所述接收单元还用于接收第二写事务;
所述生成单元还用于生成所述第二写事务的命令日志;
所述检测单元还用于检测所述第二写事务是否为非确定事务,所述非确定事务至少两次执行的结果不唯一;
所述生成单元还用于在所述检测单元检测到所述第二写事务为非确定事务时,生成所述第二写事务的数据日志;
所述存储单元还用于存储所述第二写事务的命令日志和所述第二写事务的数据日志。
12.根据权利要求11所述的服务器,其特征在于,所述服务器还包括恢复单元;
所述恢复单元用于在所述服务器发生故障时,获取所述服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在所述检测单元检测到所述获取的命令日志对应的写事务是非确定事务或多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,所述数据快照用于对所述服务器进行数据备份。
13.根据权利要求11或12所述的服务器,其特征在于,所述存储单元用于在所述服务器发送所述第二写事务的响应消息之前,存储所述第二写事务的数据日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
14.根据权利要求11或12所述的服务器,其特征在于,所述存储单元用于在所述服务器发送所述第一写事务的响应消息之前,存储所述第一写事务的命令日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成;
所述存储单元用于在所述服务器发送所述第二写事务的响应消息之前,存储所述第二写事务的命令日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
15.根据权利要求9-12任一项所述的服务器,其特征在于,所述存储单元用于将所述第一写事务的命令日志和所述第一写事务的数据日志存储于共享存储系统,所述服务器与所述服务器的从节点共享所述共享存储系统。
16.根据权利要求9-12任一项所述的服务器,其特征在于,所述服务器还包括发送单元,用于将所述第一写事务的命令日志和所述第一写事务的数据日志发送至所述服务器的从节点。
17.一种数据库系统,其特征在于,所述系统包括客户端和多个服务器节点;
所述客户端用于向所述多个服务器节点中的第一服务器发送第一写事务;
所述第一服务器用于接收所述第一写事务,生成并存储所述第一写事务的命令日志,并在检测到所述第一写事务为多分区事务时,生成并存储所述第一写事务的数据日志,其中,所述多分区事务包括对至少两个分区进行操作的事务。
18.根据权利要求17所述的数据库系统,其特征在于,在所述第一服务器发生故障时,所述第一服务器还用于获取所述第一服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在检测到获取的命令日志对应的写事务是多分区事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,其中,所述数据快照用于对所述第一服务器进行数据备份。
19.根据权利要求17所述的数据库系统,其特征在于,所述第一服务器还用于接收第二写事务,生成并存储所述第二写事务的命令日志,并在检测到所述第二写事务为非确定事务时,生成并存储所述第二写事务的数据日志,其中,所述非确定事务至少两次执行的结果不唯一。
20.根据权利要求19所述的数据库系统,其特征在于,在所述第一服务器发生故障时,所述第一服务器还用于获取所述第一服务器的数据快照和所述数据快照生成时间点之后生成的命令日志,并在检测到所述获取的命令日志对应的写事务是多分区事务或非确定事务时,获取所述获取的命令日志对应的写事务的数据日志,并通过回放获取的数据日志恢复数据,所述数据快照用于对所述第一服务器进行数据备份。
21.根据权利要求19或20所述的数据库系统,其特征在于,所述第一服务器用于在向所述客户端发送所述第二写事务的响应消息之前,存储所述第二写事务的数据日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
22.根据权利要求19或20所述的数据库系统,其特征在于,所述第一服务器用于在向所述客户端发送所述第一写事务的响应消息之前,存储所述第一写事务的命令日志,所述第一写事务的响应消息用于指示所述第一写事务执行完成;
所述第一服务器用于在向所述客户端发送所述第二写事务的响应消息之前,存储所述第二写事务的命令日志,所述第二写事务的响应消息用于指示所述第二写事务执行完成。
23.根据权利要求17-20任一项所述的数据库系统,其特征在于,所述第一服务器用于将所述第一写事务的命令日志和所述第一写事务的数据日志存储于共享存储系统,所述第一服务器与所述多个服务器节点中的第二服务器共享所述共享存储系统,其中,所述第二服务器为所述第一服务器的从节点。
24.根据权利要求17-20任一项所述的数据库系统,其特征在于,所述第一服务器还用于将所述第一写事务的命令日志和所述第一写事务的数据日志发送至第二服务器,其中,所述第二服务器为所述第一服务器的从节点。
25.一种可读介质,其特征在于,包括执行指令,当计算设备的处理器执行所述执行指令时,所述计算设备执行权利要求1-8任一项所述的方法。
26.一种计算设备,其特征在于,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述计算设备执行权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010704893.3A CN112015591A (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/114647 WO2019109256A1 (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010704893.3A Division CN112015591A (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110121694A CN110121694A (zh) | 2019-08-13 |
CN110121694B true CN110121694B (zh) | 2020-08-07 |
Family
ID=66750399
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780055464.4A Active CN110121694B (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
CN202010704893.3A Pending CN112015591A (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010704893.3A Pending CN112015591A (zh) | 2017-12-05 | 2017-12-05 | 一种日志管理方法、服务器和数据库系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11748215B2 (zh) |
EP (1) | EP3696658B1 (zh) |
CN (2) | CN110121694B (zh) |
WO (1) | WO2019109256A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3696658B1 (en) * | 2017-12-05 | 2023-10-04 | Huawei Technologies Co., Ltd. | Log management method, server and database system |
CN111190874B (zh) * | 2019-12-27 | 2023-10-03 | 天津中科曙光存储科技有限公司 | 一种分布式存储的高可靠数据日志模块及其构建方法 |
US11567840B2 (en) * | 2020-03-09 | 2023-01-31 | Rubrik, Inc. | Node level recovery for clustered databases |
US20230195697A1 (en) * | 2021-12-22 | 2023-06-22 | Singlestore, Inc. | Separation of storage and compute in database management systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1784677A (zh) * | 2004-03-31 | 2006-06-07 | 微软公司 | 用于数据库备份的一致性检验的系统和方法 |
CN101464890A (zh) * | 2008-12-30 | 2009-06-24 | 中兴通讯股份有限公司 | 一种混合日志生成方法和解析方法 |
CN101980203A (zh) * | 2010-10-29 | 2011-02-23 | 中国科学院声学研究所 | 一种用于高清媒体的嵌入式文件系统 |
CN104980307A (zh) * | 2015-06-29 | 2015-10-14 | 小米科技有限责任公司 | 数据访问请求的处理方法、装置及数据库服务器 |
CN106202305A (zh) * | 2016-06-30 | 2016-12-07 | 北京北信源软件股份有限公司 | 一种日志处理方法、装置及数据库系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002244898A (ja) * | 2001-02-19 | 2002-08-30 | Hitachi Ltd | データベース管理プログラム及びデータベースシステム |
JP2003162439A (ja) * | 2001-11-22 | 2003-06-06 | Hitachi Ltd | ストレージシステム及びその制御方法 |
CN100504905C (zh) * | 2007-11-16 | 2009-06-24 | 中国科学院软件研究所 | 数据库恶意事务处理方法及其系统 |
US9092475B2 (en) * | 2011-11-07 | 2015-07-28 | Sap Se | Database log parallelization |
CN102662796B (zh) * | 2012-03-28 | 2014-06-18 | 深圳万兴信息科技股份有限公司 | 一种数据恢复的方法及系统 |
CN103049355B (zh) * | 2012-12-25 | 2015-06-17 | 华为技术有限公司 | 一种数据库系统恢复方法及设备 |
CN103729442B (zh) * | 2013-12-30 | 2017-11-24 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
US9323569B2 (en) * | 2014-09-10 | 2016-04-26 | Amazon Technologies, Inc. | Scalable log-based transaction management |
CN104486107A (zh) * | 2014-12-05 | 2015-04-01 | 曙光信息产业(北京)有限公司 | 一种日志采集装置及方法 |
WO2016155002A1 (en) * | 2015-04-03 | 2016-10-06 | Yahoo! Inc. | Method and system for data recovery in a data system |
US10169439B2 (en) * | 2015-06-19 | 2019-01-01 | Sap Se | Multi-source asynchronous table replication |
US10268743B2 (en) * | 2015-06-19 | 2019-04-23 | Sap Se | Distributed database transaction protocol |
CN105159818B (zh) * | 2015-08-28 | 2018-01-02 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
EP3696658B1 (en) * | 2017-12-05 | 2023-10-04 | Huawei Technologies Co., Ltd. | Log management method, server and database system |
-
2017
- 2017-12-05 EP EP17934301.7A patent/EP3696658B1/en active Active
- 2017-12-05 WO PCT/CN2017/114647 patent/WO2019109256A1/zh unknown
- 2017-12-05 CN CN201780055464.4A patent/CN110121694B/zh active Active
- 2017-12-05 CN CN202010704893.3A patent/CN112015591A/zh active Pending
-
2020
- 2020-06-04 US US16/892,590 patent/US11748215B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1784677A (zh) * | 2004-03-31 | 2006-06-07 | 微软公司 | 用于数据库备份的一致性检验的系统和方法 |
CN101464890A (zh) * | 2008-12-30 | 2009-06-24 | 中兴通讯股份有限公司 | 一种混合日志生成方法和解析方法 |
CN101980203A (zh) * | 2010-10-29 | 2011-02-23 | 中国科学院声学研究所 | 一种用于高清媒体的嵌入式文件系统 |
CN104980307A (zh) * | 2015-06-29 | 2015-10-14 | 小米科技有限责任公司 | 数据访问请求的处理方法、装置及数据库服务器 |
CN106202305A (zh) * | 2016-06-30 | 2016-12-07 | 北京北信源软件股份有限公司 | 一种日志处理方法、装置及数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200293412A1 (en) | 2020-09-17 |
CN112015591A (zh) | 2020-12-01 |
WO2019109256A1 (zh) | 2019-06-13 |
US11748215B2 (en) | 2023-09-05 |
EP3696658A4 (en) | 2020-11-18 |
EP3696658A1 (en) | 2020-08-19 |
EP3696658B1 (en) | 2023-10-04 |
CN110121694A (zh) | 2019-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614867B2 (en) | Distributed storage system-based data processing method and storage device | |
CN110121694B (zh) | 一种日志管理方法、服务器和数据库系统 | |
US20150213100A1 (en) | Data synchronization method and system | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
US20130346366A1 (en) | Front end and backend replicated storage | |
EP2976714B1 (en) | Method and system for byzantine fault tolerant data replication | |
US9229970B2 (en) | Methods to minimize communication in a cluster database system | |
JP2016522514A (ja) | オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置 | |
US7761431B2 (en) | Consolidating session information for a cluster of sessions in a coupled session environment | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
US10169441B2 (en) | Synchronous data replication in a content management system | |
US20090164839A1 (en) | Storage control apparatus and storage control method | |
US10620872B2 (en) | Replicating data in a data storage system | |
US11693844B2 (en) | Processing delete requests based on change feed of updates | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN113535430A (zh) | 应用数据读写分离方法、装置、计算机设备和存储介质 | |
US10866756B2 (en) | Control device and computer readable recording medium storing control program | |
CN111522883A (zh) | 对象数据的备份方法、装置、设备及存储介质 | |
CN113609104B (zh) | 一种部分故障的键值对分布式存储系统访问方法及装置 | |
CN111984460B (zh) | 元数据的恢复方法及装置 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN113326268A (zh) | 一种数据写入、读取方法及装置 | |
CN115599585A (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 |