CN114610539A - 一种MongoDB数据库备份方法及装置 - Google Patents

一种MongoDB数据库备份方法及装置 Download PDF

Info

Publication number
CN114610539A
CN114610539A CN202210245941.6A CN202210245941A CN114610539A CN 114610539 A CN114610539 A CN 114610539A CN 202210245941 A CN202210245941 A CN 202210245941A CN 114610539 A CN114610539 A CN 114610539A
Authority
CN
China
Prior art keywords
backup
node
agent
script
database
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
CN202210245941.6A
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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202210245941.6A priority Critical patent/CN114610539A/zh
Publication of CN114610539A publication Critical patent/CN114610539A/zh
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/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents

Landscapes

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

Abstract

本发明涉及MongoDB数据库备份领域,具体提供了一种MongoDB数据库备份方法,在公有云环境上的MongoDB数据库实例,基于Ansible自动化运维管理工具编写自动化备份脚本,使用client和agent两部分备份工具,所述client负责下发命令,向MongoDB admin数据库中的command集合写入备份元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,针对多数据库实例实现自动化备份的管理。与现有技术相比,本发明不影响主节点的业务。支持热备份,不中断业务;备份数据不落盘,减少磁盘使用量;该方法采用Ansible批量部署进行自动化备份,避免人工执行备份命令的误操作。

Description

一种MongoDB数据库备份方法及装置
技术领域
本发明涉及MongoDB数据库备份领域,具体提供一种MongoDB数据库备份方法及装置。
背景技术
MongoDB是用C++语言编写的非关系型数据库,高性能、易部署、易使用,存储数据十分方便。MongoDB常规的备份方式为:
(一)使用MongoDB数据库内集成的方法mongodump/mongorestore,该备份方式存在以下不足之处:
1、该备份方式对大数据量时的备份可能存在内存溢出问题,因此只适合低数据量级的数据备份。
2、使用oplog进行增量备份时,如果增量数据太大可能会出现因oplog数据丢失导致备份失败。
3、即使增量备份成功,恢复时也不支持直接指定时间进行恢复,需要先到oplog.bson文件中找到指定数据操作的时间戳,否则只能指定oplog备份文件进行全量恢复,使用不方便。
4、同时该备份方式不支持原生热备份,虽然可以通过加锁方式使增量数据暂时写入缓存,但是如果该部分数据增量过大可能出现数控丢失,因此备份时需要暂停业务。
(二)使用基于linux系统的lvm快照系统作备份,该备份方式虽然速度较快,但是无法实现增量备份,而且不支持指定时间点的备份与恢复,同时快照需要作归档处理,归档时最多可能占用双倍存储空间,浪费用户存储资源。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的MongoDB数据库备份方法。
本发明进一步的技术任务是提供一种设计合理,安全适用的MongoDB数据库备份装置。
本发明解决其技术问题所采用的技术方案是:
一种MongoDB数据库备份方法,其特征在于,在公有云环境上的MongoDB数据库实例,基于Ansible自动化运维管理工具编写自动化备份脚本,使用client和agent两部分备份工具,所述client负责下发命令,向MongoDB admin数据库中的command集合写入备份元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,针对多数据库实例实现自动化备份的管理。
进一步的,备份初始化时,首先到仓库中拉取备份工具镜像,启动镜像,镜像执行初始化脚本,将启动参数中指定的配置文件解析注入到agent程序中并启动agent,连接到MongoDB数据库,创建backup用户,所述用户具有admin库的读写权限,根据各个节点agent的启动情况返回成功或失败,全部启动成功返回成功,否则返回失败。
进一步的,公有云数据库实例控制台判断实例的集群状态是否正常,不正常返回异常信息到控制台给用户;正常的话,后端调用Ansible执行器下载MongoDB备份相关脚本文件。
进一步的,所述Ansible执行器还执行备份预检查脚本,所述脚本执行预检查检查备份工具是否已经安装,若未安装,调用安装备份工具脚本,进行备份的初始化,安装成功正常执行;安装失败退出执行。
进一步的,检查备份工作安装好之后,预检查脚本ssh连接到各个节点检查以下内容项:
各节点备份工具client与agent是否正常、内置备份用户权限是否正常、对象存储连接是否正常。
进一步的,脚本ssh连接到各个节点检查正常后,备份脚本调用client工具执行备份命令,所述元数据包括type、status和time。
进一步的,各节点agent监听到admin数据库中的command集合有数据变动,读取数据中的关键字段type为backup,并且status为waiting,然后执行备份流程;
各节点agent互相通信选取备份执行节点,首先读取配置文件中的各节点权重信息,如果用户设置了权重,则选择最大权重节点执行备份,并将元数据status置为backingup;
如果未设置权重,则各节点agent分别在当前节点上执行节点选择方法得出临时权重;
所述的选择方法通过cpu、内存、网络带宽指标综合计算出一个临时权重,使用公式如下:
Figure BDA0003544565030000031
进一步的,各agent对比节点权重选出最优备份节点执行备份,备份时先对数据卷作磁盘快照,然后对快照卷进行全量备份,备份过程中监听oplog的变动,将oplog所有新增数据做持久化处理,写入本次备份的oplog文件,并以流的形式将本次备份的两个文件上传至对象存储中,备份结束后将元数据的status改为success;
Ansible执行器返回备份成功给后端,后端保存结果后发给前端进行展示。
一种MongoDB数据库备份装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种MongoDB数据库备份方法。
本发明的一种MongoDB数据库备份方法及装置和现有技术相比,具有以下突出的有益效果:
本发明通过对比集群各节点网络及cpu、内存使用情况等性能数据选出优势备份节点,然后在指定节点上进行备份;不影响主节点的业务。支持热备份,不中断业务;备份数据不落盘,减少磁盘使用量;该方法采用Ansible批量部署进行自动化备份,避免人工执行备份命令的误操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种MongoDB数据库备份方法的流程示意图;
附图2是一种MongoDB数据库备份方法中初始化流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1、2所示,本实施例中的一种MongoDB数据库备份方法,针对部署在公有云环境上的MongoDB数据库实例,基于Ansible自动化运维管理工具编写自动化备份脚本,使用备份工具执行备份命令,针对多数据库实例实现自动化备份的管理。
在数据库实例状态为运行中,MongoDB数据库集群状态正常和存储网络通信正常的情况下。
具体步骤为:
S1、公有云数据库实例控制台判断实例的集群状态是否正常,正常执行步骤S2,不正常返回异常信息到控制台给用户。
S2、后端调用Ansible执行器下载MongoDB备份相关脚本文件。
S3、Ansible执行器执行备份预检查脚本。
S4、脚本执行预检查,检查备份工具是否已安装,未安装执行步骤S5;已安装并且运行正常执行步骤S6。
S5、调用安装备份工具脚本,该备份工具分为client和agent两部分,client负责下发命令,写入元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,提高备份速度。初次执行备份时也需要安装该备份工具。
在MongoDB集群状态正常,集群节点与工具所在镜像仓库通信正常和节点docker服务正常的情况下,具体流程为:
(1)到仓库中拉取备份工具镜像;
(2)启动镜像,镜像执行初始化脚本;
(3)将启动参数中指定的配置文件解析注入到agent程序中并启动agent,配置文件重点包括以下内容:远端对象存储类型及连接方式(必配)、节点权重信息(选配)。
(4)连接到MongoDB数据库,创建backup用户,该用户具有admin库的读写权限。
(5)根据各个节点agent的启动情况返回成功或失败,全部启动成功返回成功,否则返回失败。
S6、预检查脚本ssh连接到各个节点检查以下内容项:
各节点备份工具client与agent是否正常、内置备份用户权限是否正常、对象存储连接是否正常,如果以上检查项均正常则执行步骤S7。
S7、备份脚本调用client工具执行备份命令,使用预置用户向MongoDB admin数据库中的command集合插入一条元数据,该数据包含以下关键字段:type(命令类型,备份时为backup)、status(执行状态,初始为waiting)、time(命令下发时间)。
S8、各节点agent监听到admin数据库中的command集合有数据变动,读取数据中的关键字段type为backup,并且status为waiting,然后执行备份流程。
S9、各节点agent互相通信选取备份执行节点,首先读取配置文件中的各节点权重信息,如果用户设置了权重,则选择最大权重节点执行备份,并将元数据status置为backing up。如果未设置权重,则各节点agent分别在当前节点上执行节点选择方法得出临时权重。选择方法通过cpu、内存、网络带宽指标综合计算出一个临时权重,使用公式如下:
Figure BDA0003544565030000061
S10、各agent对比节点权重选出最优备份节点执行备份。备份时先对数据卷作磁盘快照,然后对快照卷进行全量备份,备份过程中监听oplog的变动,将oplog所有新增数据做持久化处理,写入本次备份的oplog文件,并以流的形式将本次备份的两个文件上传至对象存储中,备份结束后将元数据的status改为success。
备份过程中的数据管理、日志系统、锁机制等均基于元数据来实现,备份数据管理依赖于backups集合,备份成功后向该集合插入一条数据,包含备份名字、备份id、备份时间、备份状态及备份大小等信息。日志系统依赖logs集合,备份执行关键节点会保存日志信息,包含备份id、时间、日志内容等。备份过程启动时会向lock集合插入一条数据,备份未完成时如果有冲突命令下发(比如恢复)需要等待备份完成,备份完成会自动删除该数据。在做全量备份时,mongodump会将mongo下的所有数据全部写入内存执行备份操作,当数据量比较大时可能会导致数据库性能下降甚至内存溢出问题,本工具在执行备份前会预估数据大小,如果数据大于内存余量,会智能分库分表执行备份,对每个集合单独执行备份,并将数据追加到备份文件中,尽可能的避免了大数据量下的内存溢出问题。当执行过一次正确的全量备份之后,agent将会后台定时执行增量备份,默认间隔时间为一天,执行时对比原生oplog文件中的最新记录与上次备份时的最后一条记录,将该部分增量数据追加至对象存储的oplog文件中。
S11、Ansible执行器返回备份成功给后端,后端保存结果后发给前端进行展示。
S12、执行指定时间点恢复时,agent会将读取到的时间点与备份记录中的时间作对比,找到距离指定时间点最近的一次备份下载到本地并解压,然后读取其中的oplog文件,找到oplog文件中的最接近指定时间点的日志记录并记录该条数据的时间戳,然后调用mongodump命令并指定恢复到时间点,以此实现便于使用的指定时间点恢复功能。
一种MongoDB数据库备份装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种MongoDB数据库备份方法。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种MongoDB数据库备份方法及装置权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (9)

1.一种MongoDB数据库备份方法,其特征在于,在公有云环境上的MongoDB数据库实例,基于Ansible自动化运维管理工具编写自动化备份脚本,使用client和agent两部分备份工具,所述client负责下发命令,向MongoDB admin数据库中的command集合写入备份元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,针对多数据库实例实现自动化备份的管理。
2.根据权利要求1所述的一种MongoDB数据库备份方法,其特征在于,备份初始化时,首先到仓库中拉取备份工具镜像,启动镜像,镜像执行初始化脚本,将启动参数中指定的配置文件解析注入到agent程序中并启动agent,连接到MongoDB数据库,创建backup用户,所述用户具有admin库的读写权限,根据各个节点agent的启动情况返回成功或失败,全部启动成功返回成功,否则返回失败。
3.根据权利要求2所述的一种MongoDB数据库备份方法,其特征在于,公有云数据库实例控制台判断实例的集群状态是否正常,不正常返回异常信息到控制台给用户;正常的话,后端调用Ansible执行器下载MongoDB备份相关脚本文件。
4.根据权利要求3所述的一种MongoDB数据库备份方法,其特征在于,所述Ansible执行器还执行备份预检查脚本,所述脚本执行预检查检查备份工具是否已经安装,若未安装,调用安装备份工具脚本,进行备份的初始化,安装成功正常执行;安装失败退出执行。
5.根据权利要求4所述的一种MongoDB数据库备份方法,其特征在于,检查备份工作安装好之后,预检查脚本ssh连接到各个节点检查以下内容项:
各节点备份工具client与agent是否正常、内置备份用户权限是否正常、对象存储连接是否正常。
6.根据权利要求5所述的一种MongoDB数据库备份方法,其特征在于,脚本ssh连接到各个节点检查正常后,备份脚本调用client工具执行备份命令,所述元数据包括type、status和time。
7.根据权利要求6所述的一种MongoDB数据库备份方法,其特征在于,各节点agent监听到admin数据库中的command集合有数据变动,读取数据中的关键字段type为backup,并且status为waiting,然后执行备份流程;
各节点agent互相通信选取备份执行节点,首先读取配置文件中的各节点权重信息,如果用户设置了权重,则选择最大权重节点执行备份,并将元数据status置为backing up;
如果未设置权重,则各节点agent分别在当前节点上执行节点选择方法得出临时权重;
所述的选择方法通过cpu、内存、网络带宽指标综合计算出一个临时权重,使用公式如下:
Figure FDA0003544565020000021
8.根据权利要求7所述的一种MongoDB数据库备份方法,其特征在于,各agent对比节点权重选出最优备份节点执行备份,备份时先对数据卷作磁盘快照,然后对快照卷进行全量备份,备份过程中监听oplog的变动,将oplog所有新增数据做持久化处理,写入本次备份的oplog文件,并以流的形式将本次备份的两个文件上传至对象存储中,备份结束后将元数据的status改为success;
Ansible执行器返回备份成功给后端,后端保存结果后发给前端进行展示。
9.一种MongoDB数据库备份装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至8中任一所述的方法。
CN202210245941.6A 2022-03-14 2022-03-14 一种MongoDB数据库备份方法及装置 Pending CN114610539A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210245941.6A CN114610539A (zh) 2022-03-14 2022-03-14 一种MongoDB数据库备份方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210245941.6A CN114610539A (zh) 2022-03-14 2022-03-14 一种MongoDB数据库备份方法及装置

Publications (1)

Publication Number Publication Date
CN114610539A true CN114610539A (zh) 2022-06-10

Family

ID=81863481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210245941.6A Pending CN114610539A (zh) 2022-03-14 2022-03-14 一种MongoDB数据库备份方法及装置

Country Status (1)

Country Link
CN (1) CN114610539A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116342230A (zh) * 2023-05-31 2023-06-27 深圳洽客科技有限公司 一种基于大数据分析的电商数据存储平台

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116342230A (zh) * 2023-05-31 2023-06-27 深圳洽客科技有限公司 一种基于大数据分析的电商数据存储平台
CN116342230B (zh) * 2023-05-31 2023-08-08 深圳洽客科技有限公司 一种基于大数据分析的电商数据存储平台

Similar Documents

Publication Publication Date Title
US11914486B2 (en) Cloning and recovery of data volumes
JP4321705B2 (ja) スナップショットの取得を制御するための装置及び記憶システム
US5805897A (en) System and method for remote software configuration and distribution
US7103619B1 (en) System and method for automatic audit data archiving within a remote database backup system
CN110704242B (zh) 一种连续数据保护系统及方法
US7127480B2 (en) System, method and program for backing up a computer program
CN110795420A (zh) 一种基于Ansible的MySQL数据库自动化备份方法
US7228544B2 (en) Job processing method, job processing unit, and storage managing system
CN113626286A (zh) 多集群实例处理方法、装置、电子设备及存储介质
US20220335011A1 (en) System and Method for Eliminating Full Rescan Synchronizations on Service Restarts
CN114610539A (zh) 一种MongoDB数据库备份方法及装置
CN115729749A (zh) 一种数据备份方法及系统
CN114490677A (zh) 数据分析系统中的数据同步
EP2006772B1 (en) Database system and method for external backup
CN115567392B (zh) 一种客户内部业务系统自动部署升级方法
CN115098300B (zh) 一种数据库的备份方法、容灾方法、装置及设备
CN112416885B (zh) 一种文件的实时同步方法
CN114996209A (zh) 一种配置修改方法、装置、设备及可读存储介质
CN113934575A (zh) 一种基于分布式拷贝的大数据备份系统及方法
CN112988708A (zh) 版本更新方法及装置、计算机可读存储介质、处理器
US20240036860A1 (en) Method and system for automatically and quickly deploying front-end processor based on gray release
CN113467994B (zh) 一种数据备份方法、系统及电子设备、存储介质
CN115562702A (zh) 控制方法、控制装置、机器可读存储介质及处理器
CN111309520A (zh) 一种基于k1小型机操作系统的备份恢复方法及装置
Data User's Guide

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