CN111488243B - MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质 - Google Patents

MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111488243B
CN111488243B CN202010196551.5A CN202010196551A CN111488243B CN 111488243 B CN111488243 B CN 111488243B CN 202010196551 A CN202010196551 A CN 202010196551A CN 111488243 B CN111488243 B CN 111488243B
Authority
CN
China
Prior art keywords
file
operation log
data
language operation
definition language
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
Application number
CN202010196551.5A
Other languages
English (en)
Other versions
CN111488243A (zh
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 Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network 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 Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202010196551.5A priority Critical patent/CN111488243B/zh
Publication of CN111488243A publication Critical patent/CN111488243A/zh
Application granted granted Critical
Publication of CN111488243B publication Critical patent/CN111488243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种对MongoDB数据库的备份、恢复方法、装置、电子设备及计算机可读存储介质。该备份方法包括:获取第一时间戳;以第一时间戳作为起始时间从MongoDB数据库中依次拉取多条数据库操作日志;将拉取的多条数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志,数据定义语言操作日志用于记录MongoDB数据库对应数据结构的变更,数据操纵语言操作日志用于记录MongoDB数据库对应数据的变更;以及将数据定义语言操作日志依次写入第一临时文件以生成第一文件,以及将数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件以生成第二文件。本发明实施例可以将MongoDB数据库增量数据备份快速写入到文件中,降低数据备份所需的存储空间。

Description

MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质
技术领域
本发明涉及云服务技术领域,尤其涉及一种对MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质。
背景技术
MongoDB是一个基于分布式文件存储的数据库,为介于关系数据库和非关系数据库之间的产品,可以存储比较复杂的数据类型。对于MongoDB数据库来说MongoDB的数据是最核心的,因此数据的安全性和易迁移性也很关键。目前关于MongoDB全量数据备份有物理式备份支撑,也就是可以将MongoDB数据的整个文件夹进行复制实现。但是,MongoDB增量数据的备份以及恢复或者迁移的技术方案却一直没有特别理想的进展,然而全量备份需占用更多的存储空间。受限于MongoDB数据库内部数据库操作日志(Oplog)存储容量有限,目前亟需提出一种可将MongoDB增量数据进行备份及恢复的技术手段。
发明内容
本发明的目的在于提供一种对MongoDB数据库的备份、恢复方法、装置、电子设备及计算机可读存储介质,以增量备份数据到磁盘文件中,降低数据备份所需的存储空间。
根据本发明的第一方面,提供了一种对MongoDB数据库的备份方法包括:
获取第一时间戳;
以第一时间戳作为起始时间从MongoDB数据库中依次拉取多条数据库操作日志;
将拉取的多条数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;以及
将数据定义语言操作日志依次写入第一临时文件以生成第一文件,以及将数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件以生成第二文件。
可选的,获取第一时间戳包括:
在初次启动所述MongoDB数据库操作日志的拉取操作时,指定的初始化时间为第一时间戳并记录到配置文件中;以及
从配置文件中获取第一时间戳。
可选的,获取第一时间戳包括:
在所述MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到第一临时文件或第二临时文件中的最后一条数据库操作日志的时间戳为第一时间戳并记录到断点文件中;以及
再次启动时从断点文件中获取第一时间戳。
可选的,所述方法还包括:
在将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志之后,将数据定义语言操作日志发送到一个第一队列;
将数据操纵语言操作日志分发给多个第二队列;以及
将所述数据定义语言操作日志发送到所述多个第二队列。
可选的,生成所述第一文件包括:
从所述第一队列中拉取数据定义语言操作日志并写入第一临时文件;
根据预定时间间隔或者预定文件大小停止向所述第一临时文件写入数据定义语言操作日志;
记录写入到所述第一临时文件的第一条数据定义语言操作日志对应的第二时间戳和最后一条数据定义语言操作日志对应的第三时间戳;以及
根据所述第一临时文件、所述第二时间戳和所述第三时间戳生成所述第一文件。
可选的,生成所述第二文件包括:
从所述多个第二队列中分别拉取数据操纵语言操作日志和数据定义语言操作日志并分别对应写入与所述多个第二队列一一对应的多个第二临时文件;
根据预定时间间隔或者预定文件大小停止向每个所述第二临时文件写入数据操纵语言操作日志和数据定义语言操作日志;
记录写入到每个所述第二临时文件的第一条数据库操作日志对应的第四时间戳和最后一条数据库操作日志对应的第五时间戳;以及
根据每个所述第二临时文件及其对应的第四时间戳和第五时间戳生成对应的所述第二文件。
根据本发明的第二方面,还提供了一种MongoDB数据库的恢复方法,包括:
读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;
在当前读取到第二文件中的数据操纵语言操作日志时,对当前读取的数据操纵语言操作日志执行数据操纵语言语句并还原到目标数据库;
在当前读取到第二文件中的数据定义语言操作日志时,发送第一通知,所述第一通知表示当前读取到与第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,以使第一文件中对应的数据定义语言操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件;以及
在收到对第一文件中对应的数据定义语言操作日志还原完成的第二通知后,继续读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
可选的,所述方法还包括:
在收到第一通知时,读取第一文件中对应的数据定义语言操作日志;
对第一文件中对应的数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
发送第二通知以使第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
可选的,读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志的步骤包括:
读取每个第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过从多个第二队列中分别拉取所述MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志,并分别对应写入与所述多个第二队列一一对应的多个第二临时文件生成每个所述第二文件。
可选的,所述方法还包括:
在收到所有第一通知时,所述所有第一通知表示从每个第二文件中均读取到与第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,读取第一文件中对应的数据定义语言操作日志;
对第一文件中对应数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
发送第二通知以使第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
根据本发明的第三方面,提供了一种MongoDB数据库的备份装置,包括:
获取模块,用于获取第一时间戳;
拉取模块,拉取模块以第一时间戳作为起始时间从MongoDB数据库中依次拉取多条数据库操作日志;
分类模块,用于将拉取的多条数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;以及
生成模块,生成模块将数据定义语言操作日志依次写入第一临时文件以生成第一文件,以及将数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件以生成第二文件。
可选的,获取模块获取第一时间戳包括:
在初次启动所述MongoDB数据库操作日志的拉取操作时,指定的初始化时间为第一时间戳并记录到配置文件中;以及
从配置文件中获取第一时间戳。
可选的,获取模块获取第一时间戳包括:
在所述MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到第一临时文件或第二临时文件中的最后一条数据库操作日志的时间戳为第一时间戳并记录到断点文件中;以及
再次启动时从断点文件中获取第一时间戳。
可选的,所述装置还包括日志发送模块,用于:在将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志之后,将数据定义语言操作日志发送到一个第一队列;将数据操纵语言操作日志分发给多个第二队列;以及将所述数据定义语言操作日志发送到所述多个第二队列。
可选的,生成模块生成所述第一文件包括:
从所述第一队列中拉取数据定义语言操作日志并写入第一临时文件;
根据预定时间间隔或者预定文件大小停止向所述第一临时文件写入数据定义语言操作日志;
记录写入到所述第一临时文件的第一条数据定义语言操作日志对应的第二时间戳和最后一条数据定义语言操作日志对应的第三时间戳;以及
根据所述第一临时文件、所述第二时间戳和所述第三时间戳生成所述第一文件。
可选的,生成模块生成所述第二文件包括:
从所述多个第二队列中分别拉取数据操纵语言操作日志和数据定义语言操作日志并分别对应写入与所述多个第二队列一一对应的多个第二临时文件;
根据预定时间间隔或者预定文件大小停止向每个所述第二临时文件写入数据操纵语言操作日志和数据定义语言操作日志;
记录写入到每个所述第二临时文件的第一条数据库操作日志对应的第四时间戳和最后一条数据库操作日志对应的第五时间戳;以及
根据每个所述第二临时文件及其对应的第四时间戳和第五时间戳生成对应的所述第二文件。
根据本发明的第四方面,提供了一种MongoDB数据库的恢复装置,包括:
第一读取模块,用于读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;
第一还原模块,用于在当前读取到第二文件中的数据操纵语言操作日志时,对当前读取的数据操纵语言操作日志执行数据操纵语言语句并还原到目标数据库;
第一发送模块,用于在当前读取到第二文件中的数据定义语言操作日志时,发送第一通知,所述第一通知表示当前读取到与第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,以使第一文件中对应的数据定义语言操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件;
其中,第一读取模块在收到对第一文件中对应的数据定义语言操作日志还原完成的第二通知后,继续读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
可选的,所述装置还包括:
第二读取模块,用于在收到第一通知时,读取第一文件中对应的数据定义语言操作日志;
第二还原模块,用于对第一文件中对应的数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
第二发送模块,用于发送第二通知以使第一读取模块继续读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
可选的,第一读取模块读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志包括:
读取每个所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过从多个第二队列中分别拉取所述MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志,并分别对应写入与所述多个第二队列一一对应的多个第二临时文件生成每个所述第二文件。
可选的,所述装置还包括:
第三读取模块,用于在收到所有第一通知时,所述所有第一通知表示从每个所述第二文件中均读取到与所述第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,读取所述第一文件中对应的数据定义语言操作日志;
其中,第二还原模块对所述第一文件中对应数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
第二发送模块发送所述第二通知以使所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
根据本发明的第五方面,提供了一种电子设备,此电子设备包括:
根据本发明第三方面或第四方面所述的装置;或者,
处理器和存储器,存储器用于存储可执行的指令,所述指令用于控制处理器执行根据本发明第一方面或第二方面所述的方法。
根据本发明的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据本发明第一方面或第二方面所述的方法。
本发明实施例通过拉取存放在Mongo数据库里的操作日志Oplog,并将操作日志写入到磁盘文件,可以实现Mongo数据库里增量数据备份到文件中,从而减少数据备份的存储空间。
此外,本发明实施例通过将Mongo数据库操作日志Oplog保存到文件里,即利用本地磁盘的优势,把导出的数据快速写到本地磁盘的文件中,可以在数据备份时没有产生网络消耗。
利用本发明实施例,将备份到磁盘文件的数据恢复丢失的数据或者用作迁移数据,可在占用较少存储空间的情况下实现备份数据的恢复。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1为可用于实现本发明实施例的服务器的硬件配置结构方框图。
图2为本发明第一实施例的MongoDB数据库的数据处理方法的备份方法流程图。
图3为本发明第二实施例的MongoDB数据库的数据处理方法的恢复方法流程图。
图4为本发明第三实施例的MongoDB数据库的数据处理方法的恢复方法流程图。
图5为本发明实施例的MongoDB数据备份方法应用架构示意图。
图6和图7为针对图5为本发明实施例的MongoDB数据备份方法进行数据恢复的恢复方法步骤流程图。
图8为本发明实施例的MongoDB数据库的备份装置的结构方框图。
图9为本发明实施例的MongoDB数据库的恢复装置的结构方框图。
图10为本发明实施例的电子设备的结构方框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是示出可以实现本发明的实施例的服务器1000的硬件配置的结构方框图。
服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,云存储服务器、云数据库服务器、云计算服务器、云管理服务器、网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交互服务器、存储服务器、数据库服务器或代理服务器等。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
在一个实施例中,如图1所示,服务器1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400,或者还可以包括显示装置1500、输入装置1600等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。
图1所示的服务器仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,服务器1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项数据库的数据处理方法。本领域技术人员应当理解,尽管在图1中对服务器1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如服务器1000可以只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本发明实施例提出的数据库包括分布式文件存储系统,例如MongoDB(基于分布式文件系统存储的数据库)。
在本发明一个实施例中,提供一种MongoDB数据库的数据处理方法,该数据处理方法包括对MongoDB数据库的备份及恢复。
请参考图2,该图为本发明第一实施例的MongoDB数据库的数据处理方法的备份方法步骤流程图,该实施例中,数据处理方法的备份方法是将MongoDB数据库的增量数据备份到文件。本发明实施例的数据库的数据处理方法的备份方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
如图2所示,本发明第一实施例的数据库的数据处理方法的备份方法包括以下步骤:
步骤102,获取第一时间戳;
步骤104,以第一时间戳作为起始时间从MongoDB数据库中循环不断地依次拉取多条数据库操作日志(Oplog)。操作日志是记录操作的历史记录,但是操作日志的空间是有限的,所以不能找到所有的数据操作记录,只保存了最近一段时间的操作记录,一般情况下操作日志表示增量数据。
这里,MongoDB数据库为存放增量数据的日志的本地数据库或者是远程数据库,其中增量数据的日志存在该数据库的oplog.rs表中。oplog.rs表中的数据即为增量数据的操作日志,每次操作数据库,都会在此表里生成对应的一条或者多条Oplog。Oplog数据的格式为bson格式(二进制形式的存储格式),里面包含操作的对象、操作的类型、操作的时间,其本身设计目的是为了副本集之间数据同步的。
此外,拉取的Oplog为非空Oplog,空Oplog并没有恢复的价值。
步骤106,将拉取的多条数据库操作日志分类(或者筛选)得到数据定义语言(DDL,Data Definition Language)操作日志和数据操纵语言(DML,DataManipulationLanguage)操作日志。
Oplog日志是MongoDB数据库副本集群之间用来同步数据的一种机制,Oplog日志有两类,一种是DDL操作日志,一种是DML操作日志。DDL操作日志用于记录MongoDB数据库对应数据结构的变更,包括调整、创建、删除数据结构;DML日志用于记录所述MongoDB数据库对应数据的变更,包括调整、创建、删除数据。
步骤108,将数据定义语言(DDL)操作日志依次写入临时文件(例如第一临时文件)以生成第一文件,以及将数据操纵语言(DML)操作日志和数据定义语言(DDL)操作日志依次写入另一个临时文件(例如第二临时文件)以生成第二文件。第一文件为DDL增量数据文件,其中备份有DDL操作日志,第二文件为DML增量数据文件,其中备份有DML操作日志。将DDL操作日志写入第二文件在恢复数据时需要用到。
在一个实施例中,获取第一时间戳包括:在初次启动MongoDB数据库操作日志的拉取操作时,指定的初始化时间为所述第一时间戳并记录到配置文件中;以及从所述配置文件中获取所述第一时间戳。
第一时间戳是在启动拉取MongoDB数据库操作日志(Oplog)的操作时用于确定拉取起始时间的,第一次启动默认是没有的,需要指定初始化一个时间戳,初始化的时间戳记录在配置文件中。因此,拉取时可以从配置文件中获取第一时间戳。在拉取数据库操作日志的过程中可能会出现。
第一次启动增量数据的拉取操作时,使用配置文件的初始化时间作为起点拉取,并且不断的把拉取的进度(也就是时间点),存到断点文件里。
在一个实施例中,获取第一时间戳包括:在MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到所述第一临时文件或所述第二临时文件中的最后一条数据库操作日志的时间戳为所述第一时间戳并记录到断点文件中;以及再次启动时从所述断点文件中获取所述第一时间戳。
当在MongoDB数据库操作日志的拉取操作被停止后再次启动时,发现有断点文件,就用断点文件的时间作为起点,即以停止时拉取的最后一条数据库操作日志的时间戳为起点拉取增量数据,这里拉取的最后一条数据库操作日志是指已经写入到第一临时文件或第二临时文件中的最后一条数据库操作日志,即对第一临时文件中写入的最后一条操作日志的时间戳和第二临时文件中写入的最后一条操作日志的时间戳取最小值。
上述步骤中,依次拉取是指按照时间递增有序拉取。
通过上述步骤,可以将存放在MongoDB数据库中的增量数据日志备份出来并保存到文件中,通过将增量数据备份到磁盘目录下的文件中,相比现有将MongoDB数据的整个文件夹进行复制全量备份的情况,本发明实施例的备份方法可以将增量数据备份到文件中,减少MongoDB数据全量备份的存储空间占用。此外,利用本地磁盘的优势,把导出的数据快速写到本地磁盘的文件中,数据备份没有产生网络消耗。通过保存到文件里,用以恢复丢失的数据或者用作迁移数据。
下面参考图3,该图为本发明第二实施例的MongoDB数据库的数据处理方法的恢复方法步骤流程图,该实施例中,数据处理方法的恢复是将备份到文件的MongoDB数据库增量数据DML文件恢复(还原)到需要数据恢复的目标数据库。
本发明实施例的MongoDB数据库的数据处理方法的恢复方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
如图3所示,本发明第二实施例的MongoDB数据库的数据处理方法的恢复方法包括以下步骤:
步骤202,读取第二文件(DML增量数据文件)中的数据操纵语言(DML)操作日志或数据定义语言(DDL)操作日志,其中通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;
步骤204,在当前读取到第二文件中的数据操纵语言(DML)操作日志时,对当前读取的数据操纵语言(DML)操作日志执行数据操纵语言语句并还原到目标数据库;
步骤206,在当前读取到第二文件中的数据定义语言(DDL)操作日志时,发送第一通知,第一通知表示当前读取到与第一文件中写入的DDL操作日志相同的数据定义语言(DDL)操作日志,以使第一文件中对应的数据定义语言(DDL)操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件;以及
步骤208,在收到对第一文件中对应的数据定义语言(DDL)操作日志还原完成的第二通知后,继续读取第二文件中的数据操纵语言(DML)操作日志或数据定义语言(DDL)操作日志。
通过上述步骤,可以将保存在磁盘DDL文件里的增量数据恢复到目标的数据库。
现在,将结合图4,对本发明第三实施例的MongoDB数据库的数据处理方法的恢复进行说明。该实施例中,数据处理方法的恢复方法是将备份到文件的MongoDB数据库增量数据DML文件恢复(还原)到需要数据恢复的目标数据库。
本发明实施例的MongoDB数据库的数据处理方法的恢复方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
如图4所示,本发明第三实施例的MongoDB数据库的数据处理方法的恢复方法包括以下步骤:
步骤302,在收到第一通知(即步骤206中,发送的用于表示当前读取到与第一文件中写入的DDL操作日志相同的数据定义语言(DDL)操作日志的通知)时,读取第一文件中对应的数据定义语言(DDL)操作日志;
步骤304,对第一文件中对应的数据定义语言(DDL)操作日志执行数据定义语言语句并还原到目标数据库;以及
步骤306,发送对第一文件中对应的数据定义语言(DDL)操作日志还原完成的第二通知,以使第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
通过上述步骤,可以将保存在磁盘DML文件里的增量数据恢复到目标的数据库。
利用本发明实施例,将备份到磁盘文件的数据恢复丢失的数据或者用作迁移数据,可在占用较少存储空间的情况下实现备份数据的恢复。
在本发明的在一个实施例中,提出了多队列多线程备份存放在MongoDB数据库中的增量数据(数据库操作日志)到多个文件中的情况。
在一个实施例中,所述备份方法还包括:
在将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志之后,将数据定义语言操作日志发送到一个第一队列;将数据操纵语言操作日志分发给多个第二队列;以及将所述数据定义语言操作日志发送到所述多个第二队列。
在一个实施例中,生成所述第一文件包括:从所述第一队列中拉取数据定义语言操作日志并写入第一临时文件;根据预定时间间隔或者预定文件大小停止向所述第一临时文件写入数据定义语言操作日志;记录写入到所述第一临时文件的第一条数据定义语言操作日志对应的第二时间戳和最后一条数据定义语言操作日志对应的第三时间戳;以及根据所述第一临时文件、所述第二时间戳和所述第三时间戳生成所述第一文件。
在一个实施例中,生成所述第二文件包括:从所述多个第二队列中分别拉取数据操纵语言操作日志和数据定义语言操作日志并分别对应写入与所述多个第二队列一一对应的多个第二临时文件;根据预定时间间隔或者预定文件大小停止向每个所述第二临时文件写入数据操纵语言操作日志和数据定义语言操作日志;记录写入到每个所述第二临时文件的第一条数据库操作日志对应的第四时间戳和最后一条数据库操作日志对应的第五时间戳;以及根据每个所述第二临时文件及其对应的第四时间戳和第五时间戳生成对应的所述第二文件。
下面结合图5的实施例展开说明,其中图5为本发明实施例的MongoDB数据库的数据备份方法应用架构示意图。这里,图示的箭头方向表示数据的流动方向。
如图5所示,启动一个线程1,线程1用于从断点文件里获取时间戳n1(第一次启动默认断点文件中是没有时间戳的,需要从配置文件中获取指定初始化的一个时间戳n1)。
然后,启动一个线程2,从存放增量数据的本地或远程数据库中拉取时间大于n1的非空Oplog到本地队列A。然后对队列A的Oplog进行筛选,筛选出DDLOplog发送给一个队列B,筛选出DMLOplog分发给多个队列C1、队列C、队列Cn等等。将DML Oplog分发给多个队列是因为DML Oplog的操作数据多,因此产生大量的DML Oplog,多线程处理DML Oplog拉取可以降低单线程处理产生的压力。
接着启动一个线程B,拉取队列B的DDLOplog,然后序列化写入临时DDL文件,并记录写入到临时DDL文件的最新Oplog的时间戳t0。通常,操作日志拉取是按批进行的,例如一批10条DDL操作日志,则这里最新Oplog的时间戳t0表示的是这批DDL操作日志中最后一条写入临时DDL文件的日志对应的时间戳。当下一批DDL操作日志写入同一个临时DDL文件时,最新Oplog的时间戳t0会随着最后一条DDL操作日志对应时间戳的不同而进行更新,目的是只保留记录的是最新的DDL操作日志时间戳。
当临时DDL文件达到预定大小,或者拉取DDL操作日志的时间达到预定的时间间隔时,则停止DDL操作日志的写入,并将写入临时DDL文件的第一条DDL操作日志对应的时间戳和最后一条DDL操作日志对应的时间戳记录下来,据此生成实际的DDL文件,其中记录的第一条DDL操作日志的时间戳和最后一条DDL操作日志的时间戳表示DDL文件的最大时间和最小时间,最后生成的DDL文件的文件头还会记录有标识DDL文件类型的标志。
对应DML Oplog,启动n个线程C1,C2,…Cn,分别拉取队列C1,C2,..Cn的Oplog,然后写入临时DML文件1,临时DML文件2,…临时DML文件n中。一个线程对应一个队列和一个临时DML文件,从队列里拉取DML Oplog,然后序列化写入到对应的临时DML文件中,并相应记录写入到临时DML文件的最新Oplog的时间戳t1,t2,t3···tn。临时DML文件最新Oplog的时间戳与上述临时DDL文件的最新Oplog的时间戳t0表示的含义相同,是指最后一条写入临时DDL文件的日志对应的时间戳。
当线程2拉取到DDLOplog的时候,也会把这条Oplog发送给其他所有队列C1,C2,…Cn中,这个操作在恢复数据时有用。同样地,当每个临时DML文件1,2,…n达到预定大小或者拉取数据库操作日志的时间达到预定的时间间隔时,则停止DML操作日志和DDL操作日志的写入,并将写入每个临时DML文件1、临时DML文件2,…临时DML文件n的第一条数据库操作日志(由于线程2也向队列C1,C2,…Cn发送DDL日志,因此写入临时DML文件的第一条数据库操作日志可能是DML文件也可能是DDL文件)对应的时间戳和最后一条数据库操作日志(可能是DML文件也可能是DDL文件)对应的时间戳记录下来,据此生成实际的DML文件1,DML文件2,…,DML文件n,其中每个DML文件中对应记录的第一条数据库操作日志的时间戳和最后一条数据库操作日志的时间戳表示该DML文件的最大时间和最小时间,最后生成的DML文件的文件头同样记录有标识DML文件类型的标志。
在一个示例中,线程B和线程C1,C2,…Cn对应写入的临时文件,随着时间会越来越大,为了避免一个文件太大,可以按照预设时间切割或者预设大小进行文件切割,每隔一段时间或者临时文件大小到达一定大小,就切割临时文件,再新生成相关的临时文件,各个线程会把新的操作日志数据相应的写到新的临时文件里。
在一个示例中,断点文件中的断点时间也可以通过启动一个线程Z执行,目的就是重复不断地把断点时间写到断点文件里。线程Z初始化一个时间戳n2,把n1赋值给n2。并且定时不断的拉取t0,t1,t2,t3···,然后求取最小值min{n2,t0,t1,t2,t3···},然后把最小值写入到文件断点文件里,以便程序再次启动时需要。
具体来说,Z线程里维护了一个断点时间,也就是n2,即当前拉取数据的断点(第一次初始化为拉取数据的起点时间,这个起点时间在第一次启动拉取时是从配置文件里的初始化配置得到的,之后则从断点文件里取出来)。
下面以DML线程举例进行详细说明,假如写入DML线程假设有三个a、b、c,其中a线程写入了一批数据库操作日志Oplog到a’文件中,最后时间戳ta,通知给Z线程;b线程写入了一批数据库操作日志Oplog到b’文件中,最后时间戳tb,通知给Z线程;c线程写入了一批Oplog到c’文件中,最后时间戳tc,通知给Z线程。
此时,线程Z收到任何一个通知,就会检测最小时间戳minTs=min(ta,tb,tc)。如果最小时间戳minTs>n2,证明实际有数据写到对应文件,即可以更新断点时间了。这个时候,线程Z将最小时间戳minTs赋值给n2,然后把n2存到断点文件里。下次重新启动拉取时,则从断点文件里获取的断点时间作为再次启动拉取的起始时间。
上面示例给出了多线程、多队列进行MongoDB数据库增量数据的备份方法,在一个实施例中,提出了多线程、多队列进行MongoDB数据库增量数据的备份方法。可选的,读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志包括:读取每个所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过从多个第二队列中分别拉取所述MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志,并分别对应写入与所述多个第二队列一一对应的多个第二临时文件生成每个所述第二文件。
相应地,在一个实施例中,所述方法还包括:在收到所有第一通知时,所述所有第一通知表示从每个所述第二文件中均读取到与所述第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,读取所述第一文件中对应的数据定义语言操作日志;对所述第一文件中对应数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及发送所述第二通知以使所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
下面结合图6和图7实施例,对多线程、多队列得到的DDL文件和DML文件恢复方法给出描述。其中,图6和图7为针对图5为本发明实施例的数据备份方法进行数据恢复的恢复方法步骤流程图。
如图6所示,图6描述了DDL文件中的数据恢复的方法,包括以下步骤:
步骤402,启动一个线程t,指定恢复的时间范围[ts,te],指定Oplog文件列表;
步骤404,启动线程a,负责读取相关的DDL文件,以及读取DDL Oplog的时间戳t1:
步骤406,判断t1是否位于恢复时间范围[ts,te]之间;
步骤408,如果t1小于ts,直接跳过该条DDL Oplog,读取下一条OplogOplog;
步骤410,如果ts<=t1<=te,则等待读取多个DML文件的所有线程返回从对应的DML文件中读取到该条DDL Oplog的通知;
步骤412,如果t1大于te,退出本线程a;
步骤414,在步骤410收到所有线程返回的通知之后,读取该读取该条DDL Oplog;
步骤416,对读取的DDL Oplog执行数据定义语言(DDL)语句并还原到目标数据库;
步骤418,向读取DML文件的所有线程发送该条DDL Oplog还原完成的通知。
循环上述步骤,直至DDL文件中所有的DDLOplog读取完成,则结束DDL文件到目标数据库的恢复。
接下来参考图7,图7描述了DML文件中的增量数据恢复的方法,包括以下步骤:
步骤502,启动多个线程b(线程b的数量和备份DML文件时的线程C个数相同),负责读取相关的DML文件;
步骤504,读取到DML文件中的DDLOplog;
步骤506,此时通知图6中描述的线程a,告知线程a当前线程b读取到了DDL Oplog;
步骤508,线程b收到线程a发送的增量数据还原完成的通知,然后返回到步骤502,继续读取DML文件中的下一条数据库Oplog;
步骤510,在读取到DML文件中的DMLOplog;
步骤512,读取该条DMLOplog的时间戳t1:
步骤514,如果t1小于ts,直接跳过,读取下一条数据库Oplog;
步骤516,如果ts<=t1<=te,则对读取的该条DML Oplog执行数据控制语言(DML)语句并还原到目标数据库;
步骤518,如果t1大于te,退出本线程。
循环上述步骤,直至DML文件中所有的DMLOplog读取完成,则结束DML文件到目标数据库的恢复。
通过本发明上述实施例的MongoDB数据库的数据处理方法的数据恢复的方法,可以将备份到DDL文件和DML文件中的增量数据恢复或还原,通过文件中记录的MongoDB数据库操作日志的时间戳,还可以从某个时间点开始恢复,并且可以恢复到指定时间点。
例如MongoDB数据库在线上运行过程中,会有源源不断的数据插入,通过本发明实施例的MongoDB备份、恢复方法,可以导出所有历史操作日志并备份到文件中,然后通过读取文件中的操作日志并筛选时间还原到迁移目标上。
通过此方法,可以将增量数据做成逻辑备份,也可以迁移数据,也可以做成类似时间镜像,并按照时间恢复。如果数据恢复到本机,则恢复时也没有网络消耗;如果恢复到别的机器,可以把数据文件拷到目标机器,然后在利用本地恢复方法恢复;此外,也可以利用网络,读取本地数据文件恢复到远程目标机器。
在一个实施例中,又提供了一种MongoDB数据库的备份装置,其中图8为本发明第一实施例的MongoDB数据库的备份装置的结构方框图,图9为本发明第二实施例的MongoDB数据库的恢复装置的结构方框图。
如图8所示,MongoDB数据库的备份装置2000包括:
获取模块2200,用于获取第一时间戳;
拉取模块2400,拉取模块以第一时间戳作为起始时间从MongoDB数据库中循环不断依次拉取多条数据库操作日志;
分类模块2600,用于将拉取的多条数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;以及
生成模块2800,生成模块将数据定义语言操作日志依次写入第一临时文件以生成第一文件,以及将数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件以生成第二文件。
在一个实施例中,获取模块2200获取第一时间戳包括:在初次启动MongoDB数据库操作日志的拉取操作时,指定的初始化时间为第一时间戳并记录到配置文件中;以及从配置文件中获取第一时间戳。
在一个实施例中,获取模块2200获取第一时间戳包括:在MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到第一临时文件或第二临时文件中的最后一条数据库操作日志的时间戳为第一时间戳并记录到断点文件中;以及再次启动时从断点文件中获取第一时间戳。
在一个实施例中,所述备份装置2000还包括日志发送模块(图中未示出),用于:在将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志之后,将数据定义语言操作日志发送到一个第一队列;将数据操纵语言操作日志分发给多个第二队列;以及将所述数据定义语言操作日志发送到所述多个第二队列。
在一个实施例中,生成模块2800生成所述第一文件包括:从所述第一队列中拉取数据定义语言操作日志并写入第一临时文件;根据预定时间间隔或者预定文件大小停止向所述第一临时文件写入数据定义语言操作日志;记录写入到所述第一临时文件的第一条数据定义语言操作日志对应的第二时间戳和最后一条数据定义语言操作日志对应的第三时间戳;以及根据所述第一临时文件、所述第二时间戳和所述第三时间戳生成所述第一文件。
在一个实施例中,生成模块2800生成所述第二文件包括:从所述多个第二队列中分别拉取数据操纵语言操作日志和数据定义语言操作日志并分别对应写入与所述多个第二队列一一对应的多个第二临时文件;根据预定时间间隔或者预定文件大小停止向每个所述第二临时文件写入数据操纵语言操作日志和数据定义语言操作日志;记录写入到每个所述第二临时文件的第一条数据库操作日志对应的第四时间戳和最后一条数据库操作日志对应的第五时间戳;以及根据每个所述第二临时文件及其对应的第四时间戳和第五时间戳生成对应的所述第二文件。
图8的备份装置2000可以实现MongoDB数据库的增量数据备份到文件,下面参考图9,在该实施例中,还提供了一种MongoDB数据库的恢复装置3000,包括:第一读取模块3200,用于读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;第一还原模块3400,用于在当前读取到第二文件中的数据操纵语言操作日志时,对当前读取的数据操纵语言操作日志执行数据操纵语言语句并还原到目标数据库;第一发送模块3600,用于在当前读取到第二文件中的数据定义语言操作日志时,发送第一通知,所述第一通知表示当前读取到与第一文件中写入的DDL操作日志相同的数据定义语言操作日志,以使第一文件中对应的数据定义语言操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件。
其中,第一读取模块3200在收到对第一文件中对应的数据定义语言操作日志还原完成的第二通知后,继续读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
上述第一读取模块3200、第一还原模块3400以及第一发送模块3600主要用于恢复DML文件。
此外,如图9所示,恢复装置3000还包括第二读取模块3100,用于在收到第一通知时,读取第一文件中对应的数据定义语言操作日志;第二还原模块3300,用于对第一文件中对应的数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及第二发送模块3500,用于发送第二通知以使第一读取模块继续读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
上述第二读取模块3100、第二还原模块3300以及第二发送模块3500主要用于恢复DDL文件,另外,恢复DDL文件的这些模块与恢复DML文件的模块互相配合执行对应备份文件的恢复或还原。
在一个实施例中,第一读取模块3200读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志包括:读取每个所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过从多个第二队列中分别拉取所述MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志,并分别对应写入与所述多个第二队列一一对应的多个第二临时文件生成每个所述第二文件。
在一个实施例中,所述恢复装置3000还包括:第三读取模块(图中未示出),用于在收到所有第一通知时,所述所有第一通知表示从每个所述第二文件中均读取到与所述第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,读取所述第一文件中对应的数据定义语言操作日志;其中,第二还原模块3300对所述第一文件中对应数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及第二发送模块3500发送所述第二通知以使所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
根据本发明的再一个实施例,还提供了一种电子设备,该电子设备5000可以是图1所示的服务器1000。图10为本发明实施例的电子设备的结构方框图。
一方面,该电子设备5000可以包括前述的装置2000,用于实施本发明任意实施例的方法。
另一方面,如图10所示,电子设备5000可以包括存储器5200和处理器5400,存储器5200用于存储可执行的指令;该指令用于控制处理器5400执行前述的方法。
在本实施例中,电子设备5000可以是任意具有存储器5200以及处理器5400的服务器。
最后,根据本发明的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本发明任意实施例所述的方法。
随着MongoDB数据库提供服务过程中,用户会源源不断的写入数据,会有源源不断的数据库操作日志Oplog。本发明首先从Mongodb数据库服务中源源不断的拉取Oplog,把这些Oplog写入磁盘文件进行保存。并通过读取保存在文件中的这些Oplog进行恢复数据,从而将数据回放到需要指定的目标MongoDB数据库服务上。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (13)

1.一种对MongoDB数据库的备份方法,其特征在于,包括:
获取第一时间戳;
以所述第一时间戳作为起始时间从MongoDB数据库中依次拉取多条数据库操作日志;
将拉取的多条所述数据库操作日志分类,得到数据定义语言操作日志和数据操纵语言操作日志,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;以及
将所述数据定义语言操作日志依次写入第一临时文件,生成第一文件;
将所述数据操纵语言操作日志和所述数据定义语言操作日志依次写入第二临时文件,生成第二文件;
其中,所述获取第一时间戳包括:
在初次启动所述MongoDB数据库操作日志的拉取操作时,指定的初始化时间为所述第一时间戳并记录到配置文件中;从所述配置文件中获取所述第一时间戳;和/或,
在所述MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到所述第一临时文件或所述第二临时文件中的最后一条数据库操作日志的时间戳为所述第一时间戳并记录到断点文件中;再次启动时从所述断点文件中获取所述第一时间戳。
2.根据权利要求1所述的方法,其中,所述方法还包括:
在将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志之后,将数据定义语言操作日志发送到一个第一队列;
将数据操纵语言操作日志分发给多个第二队列;以及
将所述数据定义语言操作日志发送到所述多个第二队列。
3.根据权利要求2所述的方法,其中,生成所述第一文件包括:
从所述第一队列中拉取数据定义语言操作日志并写入第一临时文件;
根据预定时间间隔或者预定文件大小停止向所述第一临时文件写入数据定义语言操作日志;
记录写入到所述第一临时文件的第一条数据定义语言操作日志对应的第二时间戳和最后一条数据定义语言操作日志对应的第三时间戳;以及
根据所述第一临时文件、所述第二时间戳和所述第三时间戳生成所述第一文件。
4.根据权利要求3所述的方法,其中,生成所述第二文件包括:
从所述多个第二队列中分别拉取数据操纵语言操作日志和数据定义语言操作日志并分别对应写入与所述多个第二队列一一对应的多个第二临时文件;
根据预定时间间隔或者预定文件大小停止向每个所述第二临时文件写入数据操纵语言操作日志和数据定义语言操作日志;
记录写入到每个所述第二临时文件的第一条数据库操作日志对应的第四时间戳和最后一条数据库操作日志对应的第五时间戳;以及
根据每个所述第二临时文件及其对应的第四时间戳和第五时间戳生成对应的所述第二文件。
5.一种对MongoDB数据库的恢复方法,其特征在于,包括:
读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中,通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;
在当前读取到所述第二文件中的数据操纵语言操作日志时,对当前读取的数据操纵语言操作日志执行数据操纵语言语句并还原到目标数据库;
在当前读取到所述第二文件中的数据定义语言操作日志时,发送第一通知,所述第一通知表示当前读取到与第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,以使所述第一文件中对应的数据定义语言操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件;以及
在收到对所述第一文件中对应的数据定义语言操作日志还原完成的第二通知后,继续读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
6.根据权利要求5所述的方法,其中,所述方法还包括:
在收到所述第一通知时,读取所述第一文件中对应的数据定义语言操作日志;
对所述第一文件中对应的数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
发送所述第二通知以使所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
7.根据权利要求5所述的方法,其中,所述读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志包括:
读取每个所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过从多个第二队列中分别拉取所述MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志,并分别对应写入与所述多个第二队列一一对应的多个第二临时文件生成每个所述第二文件。
8.根据权利要求7所述的方法,其中,所述方法还包括:
在收到所有第一通知时,所述所有第一通知表示从每个所述第二文件中均读取到与所述第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,读取所述第一文件中对应的数据定义语言操作日志;
对所述第一文件中对应数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;以及
发送所述第二通知以使所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志读取继续执行。
9.一种MongoDB数据库的备份装置,其特征在于,包括:
获取模块,用于获取第一时间戳;所述获取第一时间戳包括:在初次启动所述MongoDB数据库操作日志的拉取操作时,指定的初始化时间为所述第一时间戳并记录到配置文件中,从所述配置文件中获取所述第一时间戳;和/或,在所述MongoDB数据库操作日志的拉取操作停止后再次启动时,以停止时已经写入到第一临时文件或第二临时文件中的最后一条数据库操作日志的时间戳为所述第一时间戳并记录到断点文件中,再次启动时从所述断点文件中获取所述第一时间戳;
拉取模块,所述拉取模块以所述第一时间戳作为起始时间从MongoDB数据库中依次拉取多条数据库操作日志;
分类模块,用于将拉取的多条所述数据库操作日志分类得到数据定义语言操作日志和数据操纵语言操作日志,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;以及
生成模块,所述生成模块将所述数据定义语言操作日志依次写入第一临时文件以生成第一文件,以及将所述数据操纵语言操作日志和所述数据定义语言操作日志依次写入第二临时文件以生成第二文件。
10.一种MongoDB数据库的恢复装置,其特征在于,包括:
第一读取模块,用于读取第二文件中的数据操纵语言操作日志或数据定义语言操作日志,其中通过将MongoDB数据库的数据操纵语言操作日志和数据定义语言操作日志依次写入第二临时文件生成所述第二文件,所述数据定义语言操作日志用于记录所述MongoDB数据库对应数据结构的变更,所述数据操纵语言操作日志用于记录所述MongoDB数据库对应数据的变更;
第一还原模块,用于在当前读取到所述第二文件中的数据操纵语言操作日志时,对当前读取的数据操纵语言操作日志执行数据操纵语言语句并还原到目标数据库;
第一发送模块,用于在当前读取到所述第二文件中的数据定义语言操作日志时,发送第一通知,所述第一通知表示当前读取到与第一文件中写入的数据定义语言操作日志相同的数据定义语言操作日志,以使所述第一文件中对应的数据定义语言操作日志还原到目标数据库,其中通过将所述MongoDB数据库的数据定义语言操作日志依次写入第一临时文件生成所述第一文件;
其中,所述第一读取模块在收到对所述第一文件中对应的数据定义语言操作日志还原完成的第二通知后,继续读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
11.根据权利要求10所述的装置,其中,所述装置还包括:
第二读取模块,用于在收到所述第一通知时,读取所述第一文件中对应的数据定义语言操作日志;
第二还原模块,用于对所述第一文件中对应的数据定义语言操作日志执行数据定义语言语句并还原到目标数据库;
第二发送模块,用于发送所述第二通知以使所述第一读取模块继续读取所述第二文件中的数据操纵语言操作日志或数据定义语言操作日志。
12.一种电子设备,其特征在于,包括:
根据权利要求9至11中任一权利要求所述的装置;或者,
处理器和存储器,所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据权利要求1至8中任一权利要求所述的方法。
13.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至8中任一权利要求所述的方法。
CN202010196551.5A 2020-03-19 2020-03-19 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质 Active CN111488243B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010196551.5A CN111488243B (zh) 2020-03-19 2020-03-19 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010196551.5A CN111488243B (zh) 2020-03-19 2020-03-19 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111488243A CN111488243A (zh) 2020-08-04
CN111488243B true CN111488243B (zh) 2023-07-07

Family

ID=71812567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010196551.5A Active CN111488243B (zh) 2020-03-19 2020-03-19 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111488243B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077640A (zh) * 2020-08-20 2022-02-22 北京金山云网络技术有限公司 一种实现增量数据同步的系统、方法、设备及存储介质
CN112231274B (zh) * 2020-10-16 2024-04-05 京东科技控股股份有限公司 日志汇总方法、装置、电子设备及存储介质
CN113626399B (zh) * 2021-08-17 2023-10-20 深圳市恒源昊信息科技有限公司 数据同步方法、装置、服务器及存储介质
CN117909346B (zh) * 2024-01-17 2024-09-17 中科世通亨奇(北京)科技有限公司 离线数据的更新方法、系统、存储介质及电子设备
CN118069430A (zh) * 2024-04-17 2024-05-24 天津南大通用数据技术股份有限公司 一种分布式数据库数据自动恢复方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105955845A (zh) * 2016-04-26 2016-09-21 浪潮电子信息产业股份有限公司 一种数据恢复方法及装置
CN106155838A (zh) * 2015-04-24 2016-11-23 中国移动通信集团河南有限公司 一种数据库备份数据恢复方法及装置
CN108241555A (zh) * 2016-12-26 2018-07-03 阿里巴巴集团控股有限公司 一种分布式数据库的备份、恢复方法、装置和服务器
CN108920698A (zh) * 2018-07-16 2018-11-30 北京京东金融科技控股有限公司 一种数据同步方法、装置、系统、介质及电子设备
CN109491834A (zh) * 2018-10-23 2019-03-19 网宿科技股份有限公司 一种应用于数据库的数据恢复方法及装置
CN109710629A (zh) * 2019-01-08 2019-05-03 上海达梦数据库有限公司 数据访问方法、装置、服务器和存储介质
CN110096476A (zh) * 2019-04-08 2019-08-06 平安科技(深圳)有限公司 数据备份方法、装置及计算机可读存储介质
CN110209735A (zh) * 2019-05-05 2019-09-06 深圳市腾讯计算机系统有限公司 数据库备份方法、数据库备份装置、计算设备和存储介质
CN110569142A (zh) * 2019-08-29 2019-12-13 天津大学 一种oracle数据增量同步系统及方法
CN110727548A (zh) * 2019-09-29 2020-01-24 上海英方软件股份有限公司 一种基于数据库dml同步的持续数据保护方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617176B (zh) * 2013-11-04 2017-03-15 广东电子工业研究院有限公司 一种实现多源异构数据资源自动同步的方法
US11170023B2 (en) * 2017-02-28 2021-11-09 Sap Se Replay of redo log records in persistency or main memory of database systems

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155838A (zh) * 2015-04-24 2016-11-23 中国移动通信集团河南有限公司 一种数据库备份数据恢复方法及装置
CN105955845A (zh) * 2016-04-26 2016-09-21 浪潮电子信息产业股份有限公司 一种数据恢复方法及装置
CN108241555A (zh) * 2016-12-26 2018-07-03 阿里巴巴集团控股有限公司 一种分布式数据库的备份、恢复方法、装置和服务器
CN108920698A (zh) * 2018-07-16 2018-11-30 北京京东金融科技控股有限公司 一种数据同步方法、装置、系统、介质及电子设备
CN109491834A (zh) * 2018-10-23 2019-03-19 网宿科技股份有限公司 一种应用于数据库的数据恢复方法及装置
CN109710629A (zh) * 2019-01-08 2019-05-03 上海达梦数据库有限公司 数据访问方法、装置、服务器和存储介质
CN110096476A (zh) * 2019-04-08 2019-08-06 平安科技(深圳)有限公司 数据备份方法、装置及计算机可读存储介质
CN110209735A (zh) * 2019-05-05 2019-09-06 深圳市腾讯计算机系统有限公司 数据库备份方法、数据库备份装置、计算设备和存储介质
CN110569142A (zh) * 2019-08-29 2019-12-13 天津大学 一种oracle数据增量同步系统及方法
CN110727548A (zh) * 2019-09-29 2020-01-24 上海英方软件股份有限公司 一种基于数据库dml同步的持续数据保护方法及装置

Also Published As

Publication number Publication date
CN111488243A (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN111488243B (zh) MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质
US10430284B2 (en) Creating a full backup image from incremental backups
US10013313B2 (en) Integrated database and log backup
JP6219305B2 (ja) アプリケーションデータを復元するためのシステム及び方法
CN105373448B (zh) 数据库中故障数据的恢复方法和系统
CN109144785B (zh) 用于备份数据的方法和装置
CN111104069B (zh) 分布式存储系统的多区域数据处理方法、装置及电子设备
CN106844102B (zh) 数据恢复方法和装置
CN112114999A (zh) 一种数据备份方法、数据恢复方法、装置及电子设备
US9037905B2 (en) Data processing failure recovery method, system and program
US10726042B2 (en) Replication control using eventually consistent meta-data
CN112099989A (zh) 一种Kubernetes云原生应用灾备、迁移与恢复的方法
US10185631B2 (en) System and method of performing continuous backup of a data file on a computing device
US20180253357A1 (en) Reducing granularity of backup data over time
US11194761B2 (en) Optimizing utilization of a tablespace for exporting from a foreign database recovery environment
CN106469152A (zh) 一种基于etl的文件处理方法及系统
EP3696658A1 (en) Log management method, server and database system
US8090695B2 (en) Dynamic restoration of message object search indexes
CN117083591A (zh) 数据库加速器中复制数据改变的异步持久
CN110019131B (zh) 一种复盘业务的方法和装置
WO2023240995A1 (zh) 一种双机热备系统的数据恢复方法、装置及介质
US11403192B1 (en) Enabling point-in-time recovery for databases that change transaction log recovery models
CN115328696A (zh) 一种数据库中的数据备份方法
CN114443216A (zh) 一种云平台镜像管理方法及管理系统
CN113515574A (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