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数据备份与恢复的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享