mongodb数据备份与恢复

2022/2/20 19:35:15

本文主要是介绍mongodb数据备份与恢复,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

为确保数据安全性,mongodb数据备份在实际生产环境下必不可少,一旦生产环境下的mongo所在服务器出现诸如掉电、宕机、甚至是一些不可预测的灾难情况,数据备份就显得尤为重要了,又备份,就有数据恢复

下面就通过实际的案例操作,演示下如何基于mongodb复制集做数据的备份与恢复操作

环境准备

1、提前搭建好mongodb的复制集群

关于环境搭建,可以参考我的另一篇,有详细的搭建步骤 使用mongoshake同步mongo数据
在这里插入图片描述

2、在复制集下创建一个数据库

并给数据库下随机插入一些测试用的数据,本例使用article这个库,在这个库下创建了一个comment的集合,并给该集合随机插入了几条测试数据

在这里插入图片描述

mongodb 数据备份操作

数据备份的命令语法

mongodump -h dbhost -d dbname -o dbdirectory
  • -h :MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
  • -d:需要备份的数据库实例,例如:test
  • -o:备份的数据存放位置,例如:/usr/local/dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个dump目录,这个目录里面存放该数据库实例的备份数据

1、全量备份到默认bin目录

这种备份方式会对当前mongodb所有数据库进行备份,如果数据量较大,建议考虑使用一台单独的服务器用于存储这些数据

进入mongodb的bin目录,执行下面的备份命令,使用oplog的方式进行全量备份

./mongodump --host IP:27017 --oplog

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

备份成功后,默认会在当前目录下生成一个dump的文件夹,里面存储了当前所有的mongo中数据库的数据

2、全量备份到指定目录

上面是备份到默认的bin目录下,下面演示下备份到指定的文件目录,执行下面的命令

./mongodump --host 172.17.0.2:27017 -o /usr/local/soft/mongo/backdump

在这里插入图片描述

这时候到backdump目录下,检查是否完成备份
在这里插入图片描述

3、备份指定的数据库到默认bin目录

备份articledb数据到当前bin目录下,执行下面的命令

./mongodump -d articledb --host 172.17.0.2:27017 -o ./

在这里插入图片描述

4、备份指定的数据库到指定目录

备份articledb数据到指定目录下,执行下面的命令

./mongodump -d articledb --host 172.17.0.2:27017 -o /usr/local/soft/mongo/backdump

在这里插入图片描述
在这里插入图片描述

mongodb 数据恢复操作

实验准备,登录mongodb复制集群的primary节点,删除articledb这个数据库,切换到articledb库,执行下面的删除命令

db.dropDatabase()

在这里插入图片描述

1、基于bin目录下的dump文件恢复

进入bin目录,执行如下命令进行恢复

./mongorestore --host 172.17.0.2:27017 --oplogReplay

在这里插入图片描述

执行成功后,切换到shell窗口,看看articledb数据库数据是否恢复
在这里插入图片描述

1、基于指定目录下的指定数据库dump文件恢复

当然,如果备份的是某个具体的数据库的话,可以只恢复特定的数据,先删除articledb
在这里插入图片描述
再执行下面的命令进行恢复

./mongorestore --host 172.17.0.2:27017 -d articledb /usr/local/soft/mongo/backdump/articledb 

在这里插入图片描述

然后检查数据库articledb数据是否恢复,可以看到,数据已经正常恢复

在这里插入图片描述

以上就是本篇的全部内容,实际生产环境中,可能情况略有不同,比如生产环境不是复制集而是分片集,再比如数据恢复的时候并不想全量恢复,而是只恢复某个时间点之后的数据,有兴趣的同学可以进一步深入探究



这篇关于mongodb数据备份与恢复的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程