CN115629901A - 日志回放方法及装置、数据恢复方法及装置、电子设备 - Google Patents

日志回放方法及装置、数据恢复方法及装置、电子设备 Download PDF

Info

Publication number
CN115629901A
CN115629901A CN202211318230.3A CN202211318230A CN115629901A CN 115629901 A CN115629901 A CN 115629901A CN 202211318230 A CN202211318230 A CN 202211318230A CN 115629901 A CN115629901 A CN 115629901A
Authority
CN
China
Prior art keywords
log
queue
playback
played back
logs
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.)
Pending
Application number
CN202211318230.3A
Other languages
English (en)
Inventor
姚莹莹
刘浩
韩富晟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202211318230.3A priority Critical patent/CN115629901A/zh
Publication of CN115629901A publication Critical patent/CN115629901A/zh
Priority to US18/494,935 priority patent/US20240143456A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开披露了一种日志回放方法及装置、数据恢复方法及装置、电子设备。该日志回放方法包括:将多个待回放日志划分为多个日志队列,同一日志队列中包含的待回放日志所属的日志流相同,且多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列;将多个日志队列提交至全局回放队列;根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程;若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列。本公开可以将回放过程中发生错误的日志队列占用的回放线程释放,并优先用于回放其他待回放的日志队列,从而避免了系统资源的浪费。

Description

日志回放方法及装置、数据恢复方法及装置、电子设备
技术领域
本公开涉及数据库技术领域,具体涉及一种日志回放方法及装置、数据恢复方法及装置、电子设备。
背景技术
随着数据库相关技术的发展,用户对数据安全性和稳定性的需求愈发强烈。为了提高数据库的容灾能力,可以在同一数据库中部署多个副本,其中一个作为主副本,其余为备副本。备副本通过同步主副本的日志,并回放日志来达到和主副本同步的状态。
然而,当某个日志流中的日志在回放过程中发生错误时,相关技术会采取原地重试的策略,反复对发生错误的日志进行回放,直到错误消除或维护人员主动排除后,再继续回放其他日志。该方式会占用系统资源,且影响其他日志流中的日志回放。
发明内容
有鉴于此,本公开提供一种日志回放方法及装置、数据恢复方法及装置、电子设备,以解决在日志回放过程中发生错误的情况下,发生错误的日志占用系统资源的问题。
第一方面,提供一种日志回放方法。该方法包括:将多个待回放日志划分为多个日志队列,其中,同一日志队列中包含的待回放日志所属的日志流相同,且多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列;将多个日志队列提交至全局回放队列;根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程,回放线程用于回放多个日志队列;若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,以便继续回放当前日志队列对应的后一个待回放的日志队列。
第二方面,提供一种数据恢复方法。该方法包括:响应于用户对分布式数据库的多个操作指令,创建与多个操作指令对应的多个待回放日志;当监测到分布式数据库发生故障时,基于第一方面的方法,对多个待回放日志进行回放,以完成对分布式数据库的数据恢复。
第三方面,提供一种日志回放装置。该装置包括:划分模块,配置为将多个待回放日志划分为多个日志队列,其中,同一日志队列中包含的待回放日志所属的日志流相同;提交模块,配置为将多个日志队列提交至全局回放队列,且多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列;回放模块,配置为根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程,回放线程用于回放多个日志队列;分配模块,配置为若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,以便继续回放当前日志队列对应的后一个待回放的日志队列。
第四方面,提供一种数据恢复装置。该装置包括:创建模块,配置为响应于用户对分布式数据库的多个操作指令,创建与多个操作指令对应的多个待回放日志;恢复模块,配置为当监测到分布式数据库发生故障时,基于第一方面的方法,对多个待回放日志进行回放,以完成对分布式数据库的数据恢复。
第五方面,提供一种电子设备,该电子设备包括:处理器和用于存储计算机可执行指令的存储器,该处理器用于执行该计算机可执行指令,以实现上述第一方面至第二方面中的任一方面所提及的方法。
第六方面,提供一种计算机可读存储介质,该存储介质存储有指令,当该指令被执行时,能够实现上述第一方面和第二方面中的任一方面所提及的方法。
第七方面,提供一种计算机程序产品,包括指令,当该指令被执行时,能够实现上述第一方面和第二方面中的任一方面所提及的方法。
本公开实施例提供的日志回放方法,可以在全局回放队列中通过分配回放线程的方式回放多个日志队列,并在当前日志队列在回放过程中发生错误的情况下,将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,进而使当前日志队列占用的回放线程,能够优先用于回放其他待回放的日志队列,避免了系统资源的浪费。此外,由于每个日志队列中的待回放日志所属的日志流相同,因此通过将待回放日志划分为日志队列,并以日志队列为单位进行回放,还可将回放过程中发生的错误隔离在单个日志流内部,避免影响其他日志流的回放。
附图说明
图1所示为本公开实施例提供的日志回放应用场景的系统架构示意图。
图2所示为本公开实施例提供的一种日志回放方法的流程示意图。
图3所示为本公开实施例提供的一种日志回放方法的具体流程示意图。
图4所示为本公开实施例提供的一种数据恢复方法的流程示意图。
图5所示为本公开实施例提供的一种日志回放装置的结构示意图。
图6所示为本公开实施例提供的一种数据恢复装置的结构示意图。
图7所示为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
在分布式数据库中,为了提高数据库的容灾能力,同一数据库中可以部署多个副本,其中一个作为主副本,其余为备副本。备副本通过同步主副本的日志,并回放日志来达到和主副本同步的状态,进而为主副本提供额外的读能力。并且在主副本出现故障后,备副本可以快速切换为主副本,从而减小数据库的恢复时间。
当然,为了提高数据库的容灾能力,也可以将同一份数据部署在多个数据库中,其中一个数据库为主数据库,其余为从数据库。其具体构思与上述主备副本的方案相似,从数据库需要同步并回放主数据库的日志,来达到和主数据库相同的状态,本公开对此不再赘述。
在上述种应用场景中,日志在回放的过程中会发生两种类型的错误:一种是瞬时可恢复的临时性错误,例如内存不足,这类回放错误经过重试,最终可以成功回放。另一种是永久的错误,比如数据库中的数据校验不一致,这类错误通常需要运维人员干预解决,通过重试无法成功回放。
相关技术中,日志在回放的过程中无论发生哪类错误,都会采取原地重试的策略,将有限的回放线程长时间占用,从而导致其他日志无法获取回放线程资源。此外,上述永久性错误即使原地重试也无法成功,反而会无限占用回放线程,挤占其他日志的资源。
为了解决上述问题,本公开实施例提供了一种日志回放方法,首先将多个待回放日志划分为多个日志队列并提交至全局回放队列,随后根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程进行回放,若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列。基于此,本公开实施例可以释放发生错误的当前日志队列占用的回放线程,并将释放的回放线程优先用于回放其他待回放的日志队列,从而避免了回放线程的占用和浪费。
下面将结合图1,对日志回放应用场景的系统架构进行举例说明。
如图1所示,本公开实施例提供的日志回放应用场景包括终端设备110、分布式数据库120。其中,分布式数据库120中部署有多个副本,其中一个作为主副本,其余为备副本,备副本通过同步主副本的日志,并回放日志来达到和主副本同步的状态。分布式数据库120可与终端设备110通过有线或无线通信方式进行直接或间接地连接,本公开实施例对此不做限定。
终端设备110可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。具体地,终端设备110部署有用于控制主数据库120的客户端,该客户端可以是应用程序、网页客户端、小程序客户端等,但并不限于此。此外,基于终端平台的不同,该客户端的具体形态也可以不同,比如,该客户端可以是手机客户端、PC客户端等。
需要说明的是,分布式数据库120可以部署在服务器上。具体地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一些实施例中,分布式数据库120在接收到终端设备110发送的数据变更请求后,可以在主副本的日志流中产生一系列用于记录数据变更的日志,随后将主副本日志流中的日志同步至备副本。备副本在获取到主副本同步的日志后,可以执行本公开提供的日志回放方法,从而完成对分布式数据库的数据多副本之间的同步,提供高可靠能力。
本领域技术人员可以知晓,图1中示出的终端设备、主数据库和从数据库的数量仅仅是示意性的,根据实际需要,可以具有任意数目的终端设备、主数据库和从数据库。本公开实施例对此不作限定。
下面结合图2至图6详细介绍本公开实施例提及日志回放方法以及数据恢复方法。
图2示出了本公开实施例提供的一种日志回放方法的流程示意图。示例性地,该日志回放方法可以由任意部署有数据库的电子设备执行。
如图2所示,本公开实施例提供的日志回放方法包括如下步骤。
S210,将多个待回放日志划分为多个日志队列。
需要说明的是,待回放日志可以是数据库中可进行回放的日志,例如,重做日志(Redo Log)。具体地,数据库在进行数据变更操作时,可以在数据库的日志流中产生用于记录数据变更操作的重做日志,并将该重做日志同步至从数据库的日志流中。通过回放该重做日志,即可在数据库中复现相应的数据变更操作。
具体地,每个待回放日志可以记录在数据库中执行的一次数据变更操作,通常地,一次数据变更操作是针对一个数据页的数据变更操作。例如:在一个数据页中插入数据、删除数据或者修改数据等。其中,数据页是数据库的基本存储单位,也可以理解为一个输入输出操作的基本单位。
此外,每个待回放日志可以有一个对应的日志编号,该日志编号用于示出待回放日志的产生顺序。在待回放日志回放的过程中,可以按照待回放日志的产生顺序进行回放,从而按照特定的顺序复现各个待回放日志中记录的数据变更操作,从而保证数据库中事务的原子性和一致性。
示例性地,针对同一日志流中的待回放日志,日志编号可以按照待回放日志的产生顺序递增。
需要说明的是,日志流是待回放日志的实体容器,是一组日志编号由小到大递增的待回放日志集合,同一日志流中的待回放日志按照日志编号升序排列。
需要说明的是,通过对多个待回放日志进行划分,可以得到多个日志队列。单个日志队列称为一个回放任务(Replay Task),作为一个任务处理单元。其中,多个待回放日志可以是同一日志流中的多个待回放日志。在一些实施例中,多个待回放日志也可以是不同日志流中的多个待回放日志,但划分后每个日志队列中的待回放日志所属的日志流相同。
示例性地,待回放日志可以基于待回放日志的事务编号划分,事务编号用于表示待回放日志所属的事务。也就是说,在同一个日志流中,将属于同一事务的待回放日志(即事务编号相同的待回放日志)划分至同一日志队列,可以使属于同一事务的待回放日志按序回放。
需要说明的是,在对多个待回放日志进行划分时,可以将多个待回放日志所属的日志流从头部依次进行切割,从而获得多个日志队列。也就是说,划分后得到的每个日志队列包含依据日志编号由小到大依次排列的多个待回放日志。
示例性地,针对同一日志流中的待回放日志1、待回放日志2、待回放日志3、待回放日志4、待回放日志5、待回放日志6,可以将待回放日志1、待回放日志2、待回放日志3划分为日志队列1,将待回放日志4、待回放日志5、待回放日志6划分为日志队列2。需要说明的是,每个日志队列中待回放日志的数量可以相同,也可以不同,本公开实施例对此不作限定。
S220,将多个日志队列提交至全局回放队列。
需要说明的是,全局回放队列可以理解为用于容纳日志队列的容器,日志队列在被提交至全局回放队列后,按照其被提交的顺序依次分配回放线程,从而对日志队列中包含的待回放日志依照提交的顺序进行回放。
S230,根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程。
需要说明的是,回放线程可以用于回放多个日志队列。具体地,回放线程可以读取每个日志队列中包含的待回放日志,并对依次对待回放日志进行回放操作。
在一些实施例中,回放线程的数量为多个,多个回放线程可以并行回放多个日志队列,从而提升日志队列的回放效率。
在一些实施例中,若日志流的数量为多个,全局回放队列中相邻的日志队列所属的日志流不同,从而保证多个回放线程在多个日志流划分出的日志队列之间公平分配。
示例性地,针对不同日志流划分出的多个日志队列,可以以交错的方式提交至全局回放队列。例如,日志流A中包含依据回放顺序划分的日志队列A1和日志队列A2,日志流B中包含依据回放顺序划分的日志队列B1和日志队列B2,在向全局回放队列提交的过程中,可以按照日志队列A1、日志队列B1、日志队列A2、日志队列B2的顺序提交至全局回放队列。此时,全局回放队列在按照日志队列的提交顺序,为日志队列分配回放线程时(假设回放线程的数量为两个),可以首先将两个回放线程分别分配至日志队列A1和日志队列B1,然后再分配至日志队列A2和日志队列B2,从而保证回放资源的公平分配以及回放效率的最大化。
S240,若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,以便继续回放当前日志队列对应的后一个待回放的日志队列。
需要说明的是,当前日志队列可以是全局回放队列中已被分配回放线程的日志队列。当前日志队列在回放过程中可能发生的错误主要包含两种类型,即临时性错误和永久性错误。其中,临时性错误是通过重新回放可以自动消除的错误,例如由于内存不足产生的错误。永久性错误为重新回放后无法自动消除的错误,该类型错误通常需要运维人员干预解决,例如,由于数据库自身的一致性无法通过校验导致的错误。
在一些实施例中,若当前日志队列在回放过程中发生的错误为临时性错误,则可以将当前日志队列移至全局回放队列的队尾,从而可以在其他日志队列回放完成后,再次尝试回放该发生临时性错误的日志队列,以使该临时性错误得到解决。值得注意的是,由于临时性错误通常是由于系统资源不足造成的,例如,内存不足,因此在其他日志队列回放完毕后再进行重试,可以在最大程度上利用系统资源,使临时性错误得到解决。相对于相关技术中发生错误后在原地反复重试,不仅可以释放系统资源,减少对回放线程的占用,还可以以最少的重新回放次数解决该临时性错误,从而进一步提升对待回放日志的回放效率。
在一些实施例中,若当前日志队列在回放过程中发生的错误为永久性错误,则可以将当前日志队列从全局回放队列中移除。由于永久性错误通常需要运维人员干预解决,无法通过反复重试自动解决,因此通过从全局回放队列中删除发生永久性错误的日志队列,可以避免该日志队列占用全局回放队列中的位置,从而减少全局回放队列对于系统内存的占用,进而在释放回放线程的同时,能够进一步节省数据库系统中的其他资源。
此外,在发生的错误为永久性错误的情况下,可以将发生永久性错误的日志队列所属的日志流删除。如前所述,由于同一日志流中的待回放日志可依据日志编号顺序进行回放,从而保证回放后得到的数据的一致性。因此在同一日志流中,回放顺序在前的待回放日志对应的日志队列发生永久性错误,回放顺序在该待回放日志之后的待回放日志当然无法继续回放。通过将发生永久性错误的日志队列所属的日志流删除,可以避免该日志流继续向全局回放队列中提交必然无法回放的日志队列,从而在源头避免后续会发生永久性错误的日志队列的产生。
本公开实施例提供的日志回放方法,可以在全局回放队列中通过分配回放线程的方式回放多个日志队列,并在当前日志队列在回放过程中发生错误的情况下,将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,进而使当前日志队列占用的回放线程,能够优先用于回放其他待回放的日志队列,避免了系统资源的浪费。此外,由于每个日志队列中的待回放日志所属的日志流相同,因此通过将待回放日志划分为日志队列,并以日志队列为单位进行回放,还可将回放过程中发生的错误隔离在单个日志流内部,避免影响其他日志流的回放。
为便于理解,下面将结合图3详细说明本公开提供的日志回放方法的具体流程。
图3所示为本公开实施例提供的一种日志回放方法的具体流程示意图。如图3所示,本公开实施例提供的日志回放方法的具体流程,包括如下步骤。
S310,将日志流S1中的待回放日志划分为日志队列A1和日志队列B1,并将日志流S2中的待回放日志划分为日志队列A2和日志队列B2
S320,将划分后得到的日志队列以交错的方式提交至全局回放队列中,即依照日志队列A1、日志队列A2、日志队列B1和日志队列B2的顺序提交至全局回放队列。
S330,将两个回放线程T1和T2分别分配至全局回放队列中的前两个日志队列,即日志队列A1和日志队列A2,以便对该两个日志队列进行回放。
S340,当回放过程中发生可通过重试恢复的临时性错误,可以将发生错误的日志队列移至全局回放队列的队尾,等待下一次回放线程的分配。例如,当日志队列A1在回放过程中发生临时性错误时,将日志队列A1移至日志队列B2之后,等待下一次回放重试,此时日志队列A1释放的回放线程T1将分配至日志队列B1
当回放过程中发生无法自行恢复的永久性错误时,可以将发生错误的日志队列从全局队列中移除,并发出告警以通知运维人员处理。例如,当日志队列A1在回放过程中发生永久性错误时,将日志队列A1从全局回放队列中移除,此时日志队列A1释放的回放线程T1将分配至日志队列B1
示例性地,由于在日志队列A1无法成功回放的前提下,与日志队列A1属于同一日志流S1的日志队列B1必然无法成功回放。因此在移除日志队列A1的同时,可以将的日志队列B1移除,以免回放线程被分配至已知无法回放的日志队列B1,从而进一步提升回放效率。
基于同一发明构思,在本公开的一个应用场景中,还提供了一种数据恢复方法,该数据恢复方法应用于分布式数据库。
图4示出了本公开实施例中还提供了一种数据恢复方法的流程示意图,如图4所示,该方法包括如下步骤。
S410,响应于用户对分布式数据库的多个操作指令,创建与多个操作指令对应的多个待回放日志。
S420,当监测到分布式数据库发生故障时,对多个待回放日志进行回放,以完成对分布式数据库的数据恢复。
具体地,步骤S420是基于本公开上述任一实施例提供的日志回放方法实现的。即,基于本公开实施例提供的日志回放方法,对多个待回放日志进行回放,以完成对分布式数据库的数据恢复。
需要说明的是,对多个待回放日志的回放方法可以参考上一实施例提供的日志回放方法实施例,本公开在此不再赘述。本公开实施例通过该日志回放方法,提升了日志回放过程中的容灾能力,从而可以快速对从分布式数据库中的待回放日志进行回放,以完成数据恢复。
上文结合图2至图4,详细描述了本公开的方法实施例,下面结合图5至图7,详细描述本公开的装置实施例。此外,应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5所示为本公开实施例提供的一种日志回放装置的结构示意图。如图5所示,本公开实施例提供的日志回放装置500包括:划分模块510、提交模块520、回放模块530和分配模块540。具体地,划分模块510被配置为,将多个待回放日志划分为多个日志队列,其中,同一日志队列中包含的待回放日志所属的日志流相同,且所述多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列。提交模块520被配置为,将多个日志队列提交至全局回放队列。回放模块530被配置为,根据多个日志队列在全局回放队列中的排序,为多个日志队列分配回放线程,回放线程用于回放多个日志队列。分配模块540被配置为,若全局回放队列中的当前日志队列在回放过程中发生错误,则将当前日志队列的回放线程分配至当前日志队列对应的后一个待回放的日志队列,以便继续回放当前日志队列对应的后一个待回放的日志队列。
在一些实施例中,分配模块540进一步被配置为,若错误为临时性错误,则将当前日志队列移至全局回放队列的队尾,其中,临时性错误为重新回放后自动消除的错误。
在一些实施例中,分配模块540进一步被配置为,若错误为永久性错误,则将当前日志队列从全局回放队列中移除,其中,永久性错误为重新回放后无法自动消除的错误。
在一些实施例中,分配模块540进一步被配置为,删除当前日志队列所属的日志流。
在一些实施例中,若日志流的数量为多个,全局回放队列中相邻的日志队列所属的日志流不同。
在一些实施例中,回放线程的数量为多个,多个回放线程并行回放多个日志队列。
图6所示为本公开实施例提供的一种数据恢复装置的结构示意图。如图6所示,本公开实施例提供的一种数据恢复装置600包括:创建模块610和恢复模块620。具体地,创建模块610被配置为,响应于用户对分布式数据库的多个操作指令,创建与多个操作指令对应的多个日志。恢复模块620被配置为,当监测到分布式数据库发生故障时,基于本公开提供的日志回放方法,对多个待回放日志进行回放,以完成对分布式数据库的数据恢复。
图7所示为本公开实施例提供的一种电子设备的结构示意图。图7所示的电子设备700(该电子设备700具体可以是一种计算机设备)包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
存储器701可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行本公开实施例的日志回放方法或数据恢复方法的各个步骤。
处理器702可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(Graphics Processing Unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本公开实施例的日志回放装置中的单元所需执行的功能。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本公开的日志回放方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本公开实施例的日志回放装置中包括的单元所需执行的功能,或者执行本公开方法实施例的日志回放方法。
通信接口703使用例如但不限于收发器一类的收发装置,来实现电子设备700与其他设备或通信网络之间的通信。例如,可以通过通信接口703获取待检测图像。
总线704可包括在电子设备700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
应注意,尽管图7所示的电子设备700仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,电子设备700还包括实现正常运行所必需的其他器件。同时,根据具体需要,本领域的技术人员应当理解,电子设备700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,电子设备700也可仅仅包括实现本公开实施例所必需的器件,而不必包括图7中所示的全部器件。
除了上述方法、装置和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开各个实施例提供的日志回放方法的各个步骤,或执行本公开各个实施例提供的数据恢复方法的各个步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的步骤式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开各个实施例提供的日志回放方法的各个步骤,或执行本公开各个实施例提供的数据恢复方法的各个步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个相似区域分割单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种日志回放方法,包括:
将多个待回放日志划分为多个日志队列,其中,同一日志队列中包含的待回放日志所属的日志流相同,且所述多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列;
将所述多个日志队列提交至全局回放队列;
根据所述多个日志队列在所述全局回放队列中的排序,为所述多个日志队列分配回放线程,所述回放线程用于回放所述多个日志队列;
若所述全局回放队列中的当前日志队列在回放过程中发生错误,则将所述当前日志队列的回放线程分配至所述当前日志队列对应的后一个待回放的日志队列,以便继续回放所述当前日志队列对应的后一个待回放的日志队列。
2.根据权利要求1所述的方法,其进一步包括:
若所述错误为临时性错误,则将所述当前日志队列移至所述全局回放队列的队尾,其中,所述临时性错误为重新回放后自动消除的错误。
3.根据权利要求1所述的方法,其进一步包括:
若所述错误为永久性错误,则将所述当前日志队列从所述全局回放队列中移除,其中,所述永久性错误为重新回放后无法自动消除的错误。
4.根据权利要求3所述的方法,其进一步包括:
删除所述当前日志队列所属的日志流。
5.根据权利要求1至4任一项所述的方法,若所述日志流的数量为多个,所述全局回放队列中相邻的日志队列所属的日志流不同。
6.根据权利要求1至4任一项所述的方法,所述回放线程的数量为多个,多个所述回放线程并行回放所述多个日志队列。
7.一种数据恢复方法,所述方法包括:
响应于用户对分布式数据库的多个操作指令,创建与所述多个操作指令对应的多个待回放日志;
当监测到所述分布式数据库发生故障时,基于权利要求1至6任一项所述的方法,对所述多个待回放日志进行回放,以完成对所述分布式数据库的数据恢复。
8.一种日志回放装置,包括:
划分模块,配置为将多个待回放日志划分为多个日志队列,其中,同一日志队列中包含的待回放日志所属的日志流相同,且所述多个待回放日志中事务编号相同的待回放日志被划分至同一日志队列;
提交模块,配置为将所述多个日志队列提交至全局回放队列;
回放模块,配置为根据所述多个日志队列在所述全局回放队列中的排序,为所述多个日志队列分配回放线程,所述回放线程用于回放所述多个日志队列;
分配模块,配置为若所述全局回放队列中的当前日志队列在回放过程中发生错误,则将所述当前日志队列的回放线程分配至所述当前日志队列对应的后一个待回放的日志队列,以便继续回放所述当前日志队列对应的后一个待回放的日志队列。
9.一种数据恢复装置,所述装置包括:
创建模块,配置为响应于用户对分布式数据库的多个操作指令,创建与所述多个操作指令对应的多个待回放日志;
恢复模块,配置为当监测到所述分布式数据库发生故障时,基于权利要求1至6任一项所述的方法,对所述多个待回放日志进行回放,以完成对所述分布式数据库的数据恢复。
10.一种电子设备,包括:
处理器;以及
存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1至7任一项所述的方法。
CN202211318230.3A 2022-10-26 2022-10-26 日志回放方法及装置、数据恢复方法及装置、电子设备 Pending CN115629901A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211318230.3A CN115629901A (zh) 2022-10-26 2022-10-26 日志回放方法及装置、数据恢复方法及装置、电子设备
US18/494,935 US20240143456A1 (en) 2022-10-26 2023-10-26 Log replay methods and apparatuses, data recovery methods and apparatuses, and electronic devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211318230.3A CN115629901A (zh) 2022-10-26 2022-10-26 日志回放方法及装置、数据恢复方法及装置、电子设备

Publications (1)

Publication Number Publication Date
CN115629901A true CN115629901A (zh) 2023-01-20

Family

ID=84907457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211318230.3A Pending CN115629901A (zh) 2022-10-26 2022-10-26 日志回放方法及装置、数据恢复方法及装置、电子设备

Country Status (2)

Country Link
US (1) US20240143456A1 (zh)
CN (1) CN115629901A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117992257A (zh) * 2024-04-07 2024-05-07 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117992257A (zh) * 2024-04-07 2024-05-07 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Also Published As

Publication number Publication date
US20240143456A1 (en) 2024-05-02

Similar Documents

Publication Publication Date Title
CN106776130B (zh) 一种日志恢复方法、存储装置和存储节点
CN106933843B (zh) 数据库心跳检测方法以及装置
CN102867035B (zh) 一种分布式文件系统集群高可用方法和装置
CN111221678B (zh) Hbase数据备份/恢复系统、方法、装置及电子设备
JP6432805B2 (ja) 区分化インメモリデータセットのためのredoロギング
CN115167782B (zh) 临时存储副本管理方法、系统、设备和存储介质
CN111708738A (zh) 实现hadoop文件系统hdfs与对象存储s3数据互访方法及系统
CN110121694B (zh) 一种日志管理方法、服务器和数据库系统
CN116501259A (zh) 磁盘组双活同步方法、装置、计算机设备及存储介质
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备
CN115629901A (zh) 日志回放方法及装置、数据恢复方法及装置、电子设备
US20190347165A1 (en) Apparatus and method for recovering distributed file system
CN111459399A (zh) 一种数据写入方法、数据读取方法及装置
US20230137609A1 (en) Data synchronization method and apparatus
US20080250421A1 (en) Data Processing System And Method
CN110309224B (zh) 一种数据复制方法及装置
CN115878381A (zh) 基于srm盘的数据恢复方法及装置、存储介质、电子装置
WO2022033269A1 (zh) 数据处理的方法、设备及系统
CN115470041A (zh) 一种数据灾备管理方法及装置
CN109151016B (zh) 流量转发方法和装置、服务系统、计算设备及存储介质
CN113535430A (zh) 应用数据读写分离方法、装置、计算机设备和存储介质
CN111147554A (zh) 一种数据的存储方法、装置及计算机系统
CN112783436A (zh) 用于信息生命周期管理的同步对象放置
CN111752911A (zh) 一种基于Flume的数据传输方法、系统、终端及存储介质
CN111435302A (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