一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种MongoDB数据库备份方法及装置与流程

2022-06-11 09:37:44 来源:中国专利 TAG:

一种mongodb数据库备份方法及装置
技术领域
1.本发明涉及mongodb数据库备份领域,具体提供一种mongodb数据库备份方法及装置。


背景技术:

2.mongodb是用c 语言编写的非关系型数据库,高性能、易部署、易使用,存储数据十分方便。mongodb常规的备份方式为:
3.(一)使用mongodb数据库内集成的方法mongodump/mongorestore,该备份方式存在以下不足之处:
4.1、该备份方式对大数据量时的备份可能存在内存溢出问题,因此只适合低数据量级的数据备份。
5.2、使用oplog进行增量备份时,如果增量数据太大可能会出现因oplog数据丢失导致备份失败。
6.3、即使增量备份成功,恢复时也不支持直接指定时间进行恢复,需要先到oplog.bson文件中找到指定数据操作的时间戳,否则只能指定oplog备份文件进行全量恢复,使用不方便。
7.4、同时该备份方式不支持原生热备份,虽然可以通过加锁方式使增量数据暂时写入缓存,但是如果该部分数据增量过大可能出现数控丢失,因此备份时需要暂停业务。
8.(二)使用基于linux系统的lvm快照系统作备份,该备份方式虽然速度较快,但是无法实现增量备份,而且不支持指定时间点的备份与恢复,同时快照需要作归档处理,归档时最多可能占用双倍存储空间,浪费用户存储资源。


技术实现要素:

9.本发明是针对上述现有技术的不足,提供一种实用性强的mongodb数据库备份方法。
10.本发明进一步的技术任务是提供一种设计合理,安全适用的mongodb数据库备份装置。
11.本发明解决其技术问题所采用的技术方案是:
12.一种mongodb数据库备份方法,其特征在于,在公有云环境上的mongodb数据库实例,基于ansible自动化运维管理工具编写自动化备份脚本,使用client和agent两部分备份工具,所述client负责下发命令,向mongodb admin数据库中的command集合写入备份元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,针对多数据库实例实现自动化备份的管理。
13.进一步的,备份初始化时,首先到仓库中拉取备份工具镜像,启动镜像,镜像执行初始化脚本,将启动参数中指定的配置文件解析注入到agent程序中并启动agent,连接到mongodb数据库,创建backup用户,所述用户具有admin库的读写权限,根据各个节点agent
的启动情况返回成功或失败,全部启动成功返回成功,否则返回失败。
14.进一步的,公有云数据库实例控制台判断实例的集群状态是否正常,不正常返回异常信息到控制台给用户;正常的话,后端调用ansible执行器下载mongodb备份相关脚本文件。
15.进一步的,所述ansible执行器还执行备份预检查脚本,所述脚本执行预检查检查备份工具是否已经安装,若未安装,调用安装备份工具脚本,进行备份的初始化,安装成功正常执行;安装失败退出执行。
16.进一步的,检查备份工作安装好之后,预检查脚本ssh连接到各个节点检查以下内容项:
17.各节点备份工具client与agent是否正常、内置备份用户权限是否正常、对象存储连接是否正常。
18.进一步的,脚本ssh连接到各个节点检查正常后,备份脚本调用client工具执行备份命令,所述元数据包括type、status和time。
19.进一步的,各节点agent监听到admin数据库中的command集合有数据变动,读取数据中的关键字段type为backup,并且status为waiting,然后执行备份流程;
20.各节点agent互相通信选取备份执行节点,首先读取配置文件中的各节点权重信息,如果用户设置了权重,则选择最大权重节点执行备份,并将元数据status置为backing up;
21.如果未设置权重,则各节点agent分别在当前节点上执行节点选择方法得出临时权重;
22.所述的选择方法通过cpu、内存、网络带宽指标综合计算出一个临时权重,使用公式如下:
[0023][0024]
进一步的,各agent对比节点权重选出最优备份节点执行备份,备份时先对数据卷作磁盘快照,然后对快照卷进行全量备份,备份过程中监听oplog的变动,将oplog所有新增数据做持久化处理,写入本次备份的oplog文件,并以流的形式将本次备份的两个文件上传至对象存储中,备份结束后将元数据的status改为success;
[0025]
ansible执行器返回备份成功给后端,后端保存结果后发给前端进行展示。
[0026]
一种mongodb数据库备份装置,包括:至少一个存储器和至少一个处理器;
[0027]
所述至少一个存储器,用于存储机器可读程序;
[0028]
所述至少一个处理器,用于调用所述机器可读程序,执行一种mongodb数据库备份方法。
[0029]
本发明的一种mongodb数据库备份方法及装置和现有技术相比,具有以下突出的有益效果:
[0030]
本发明通过对比集群各节点网络及cpu、内存使用情况等性能数据选出优势备份节点,然后在指定节点上进行备份;不影响主节点的业务。支持热备份,不中断业务;备份数据不落盘,减少磁盘使用量;该方法采用ansible批量部署进行自动化备份,避免人工执行备份命令的误操作。
附图说明
[0031]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]
附图1是一种mongodb数据库备份方法的流程示意图;
[0033]
附图2是一种mongodb数据库备份方法中初始化流程示意图。
具体实施方式
[0034]
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
[0035]
下面给出一个最佳实施例:
[0036]
如图1、2所示,本实施例中的一种mongodb数据库备份方法,针对部署在公有云环境上的mongodb数据库实例,基于ansible自动化运维管理工具编写自动化备份脚本,使用备份工具执行备份命令,针对多数据库实例实现自动化备份的管理。
[0037]
在数据库实例状态为运行中,mongodb数据库集群状态正常和存储网络通信正常的情况下。
[0038]
具体步骤为:
[0039]
s1、公有云数据库实例控制台判断实例的集群状态是否正常,正常执行步骤s2,不正常返回异常信息到控制台给用户。
[0040]
s2、后端调用ansible执行器下载mongodb备份相关脚本文件。
[0041]
s3、ansible执行器执行备份预检查脚本。
[0042]
s4、脚本执行预检查,检查备份工具是否已安装,未安装执行步骤s5;已安装并且运行正常执行步骤s6。
[0043]
s5、调用安装备份工具脚本,该备份工具分为client和agent两部分,client负责下发命令,写入元数据,agent负责监听元数据并做出相应执行,可以自主选择最优节点,提高备份速度。初次执行备份时也需要安装该备份工具。
[0044]
在mongodb集群状态正常,集群节点与工具所在镜像仓库通信正常和节点docker服务正常的情况下,具体流程为:
[0045]
(1)到仓库中拉取备份工具镜像;
[0046]
(2)启动镜像,镜像执行初始化脚本;
[0047]
(3)将启动参数中指定的配置文件解析注入到agent程序中并启动agent,配置文件重点包括以下内容:远端对象存储类型及连接方式(必配)、节点权重信息(选配)。
[0048]
(4)连接到mongodb数据库,创建backup用户,该用户具有admin库的读写权限。
[0049]
(5)根据各个节点agent的启动情况返回成功或失败,全部启动成功返回成功,否则返回失败。
[0050]
s6、预检查脚本ssh连接到各个节点检查以下内容项:
[0051]
各节点备份工具client与agent是否正常、内置备份用户权限是否正常、对象存储连接是否正常,如果以上检查项均正常则执行步骤s7。
[0052]
s7、备份脚本调用client工具执行备份命令,使用预置用户向mongodb admin数据库中的command集合插入一条元数据,该数据包含以下关键字段:type(命令类型,备份时为backup)、status(执行状态,初始为waiting)、time(命令下发时间)。
[0053]
s8、各节点agent监听到admin数据库中的command集合有数据变动,读取数据中的关键字段type为backup,并且status为waiting,然后执行备份流程。
[0054]
s9、各节点agent互相通信选取备份执行节点,首先读取配置文件中的各节点权重信息,如果用户设置了权重,则选择最大权重节点执行备份,并将元数据status置为backing up。如果未设置权重,则各节点agent分别在当前节点上执行节点选择方法得出临时权重。选择方法通过cpu、内存、网络带宽指标综合计算出一个临时权重,使用公式如下:
[0055][0056]
s10、各agent对比节点权重选出最优备份节点执行备份。备份时先对数据卷作磁盘快照,然后对快照卷进行全量备份,备份过程中监听oplog的变动,将oplog所有新增数据做持久化处理,写入本次备份的oplog文件,并以流的形式将本次备份的两个文件上传至对象存储中,备份结束后将元数据的status改为success。
[0057]
备份过程中的数据管理、日志系统、锁机制等均基于元数据来实现,备份数据管理依赖于backups集合,备份成功后向该集合插入一条数据,包含备份名字、备份id、备份时间、备份状态及备份大小等信息。日志系统依赖logs集合,备份执行关键节点会保存日志信息,包含备份id、时间、日志内容等。备份过程启动时会向lock集合插入一条数据,备份未完成时如果有冲突命令下发(比如恢复)需要等待备份完成,备份完成会自动删除该数据。在做全量备份时,mongodump会将mongo下的所有数据全部写入内存执行备份操作,当数据量比较大时可能会导致数据库性能下降甚至内存溢出问题,本工具在执行备份前会预估数据大小,如果数据大于内存余量,会智能分库分表执行备份,对每个集合单独执行备份,并将数据追加到备份文件中,尽可能的避免了大数据量下的内存溢出问题。当执行过一次正确的全量备份之后,agent将会后台定时执行增量备份,默认间隔时间为一天,执行时对比原生oplog文件中的最新记录与上次备份时的最后一条记录,将该部分增量数据追加至对象存储的oplog文件中。
[0058]
s11、ansible执行器返回备份成功给后端,后端保存结果后发给前端进行展示。
[0059]
s12、执行指定时间点恢复时,agent会将读取到的时间点与备份记录中的时间作对比,找到距离指定时间点最近的一次备份下载到本地并解压,然后读取其中的oplog文件,找到oplog文件中的最接近指定时间点的日志记录并记录该条数据的时间戳,然后调用mongodump命令并指定恢复到时间点,以此实现便于使用的指定时间点恢复功能。
[0060]
一种mongodb数据库备份装置,包括:至少一个存储器和至少一个处理器;
[0061]
所述至少一个存储器,用于存储机器可读程序;
[0062]
所述至少一个处理器,用于调用所述机器可读程序,执行一种mongodb数据库备份方法。
[0063]
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限
于上述具体的实施方式,任何符合本发明的一种mongodb数据库备份方法及装置权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
[0064]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献