MongoDB数据备份还原,及docker中MongoDB备份还原
一: MongoDB数据备份
在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。
mongodump命令可以通过参数指定导出的数据量级转存的服务器。
1)语法:
mongodump命令脚本语法如下:
mongodump -h dbhost -d dbname -o dbdirectory
参数说明:
-h:MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
其他参数参考:
--db:-d 指定导出的数据库
--collection:指定导出的集合
--excludeCollection:指定不导出的集合
--host :-h 远程ip
--username:-u 开启身份验证后,用户的登录名
--password:-p 用户的密码
--out(指定输出目录):-o 如果不使用这个参数,mongodump将输出文件保存在当前工作目录中名为dump的目录中
--archive:导出归档文件,最后只会生成一个文件,注意: archive 与 out 不能一起用
--gzip:压缩归档的数据库文件,文件的后缀名为.gz--authenticationDatabase <dbname> 指定创建User的数据库;在特定的数据库中创建User,该DB就是User的authentication database。
在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。
2)示例:
mongodump -h 127.0.0.1 --port 27017 -u=root -p=123456 -d test -o /dump
#备份本地数据库,账户root,密码123456,test数据库,指定到/dump目录
如果没有设置账户密码,或者端口都是默认的27017,则可以省略参数。如:
mongodump --archive=test.gz --gzip --db test
#将在终端所在的目录下生成一个指定名称(test.gz)的数据库文件,并压缩
二: MongoDB数据还原
mongodb使用 mongorestore 命令来恢复备份的数据。
1)语法:
mongorestore命令脚本语法如下:
mongorestore -h <hostname><:port> -d dbname <path>
参数:
--host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017--db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!<path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:/home/mongod/backup/test/
你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。--dir:
指定备份的目录,你不能同时指定 <path> 和 --dir 选项。--nsInclude :指定还原的集合,支持通配符(*)
--nsExclude:指定不还原的集合,支持通配符(*)
--nsFrom:修改集合名称,原来集合的名称,支持使用变量
--nsTo:修改集合名称,修改之后集合的名称,支持使用变量
2)示例:
mongorestore -h 10.0.0.152:27017 -uroot -proot -d test --drop /home/mongod/backup/test/
#恢复到10.0.0.152:27017,test数据库,恢复数据库备份位置/home/mongod/backup/test/
三: 基于docker的MongoDB数据备份还原
例子,此时有一个mongo容器
ubuntu@ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
645ae5ab17b8 mongo:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 27017/tcp mongo
方法一:
直接进入docker容器,一步一步还原。
sudo docker exec -it mongo(容器名称) /bin/bash
#进入容器
mongodump --archive=mongo.gz
#直接生成一个名字为mongo.gz的备份文件
exit
#退出容器
sudo docker cp mongo(容器名称):/mongo.gz /backup/
#将容器备份的数据复制到本地/backup/文件夹中
还原一样,步骤复制本地到容器中,进入容器中,还原复制过来的备份文件。
方法二:
一步到位备份:
sudo docker exec mongo(容器名称) sh -c 'mongodump --archive' > /var/backup_test/mongo_`date +%F`.gz
#将 mongo容器中所有数据,备份并按日期命名单个文件,备份至本地/var/backup_test文件夹。
还原:
sudo docker exec -i mongo(容器名称) sh -c 'mongorestore --archive' < /var/backup_test/mongo_2022-03-25.gz
MongoDB数据备份还原,及docker中MongoDB备份还原相关推荐
- 开启docker中MongoDB的认证授权
开启docker中MongoDB的认证授权 思路 开启MongoDB服务后,默认是没有权限验证的.直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作.下面介绍一下如何开启docker中Mo ...
- 如何确认mongodb数据插入是否成功_go连接mongodb
mongodb介绍 mongodb是基于分布式文件存储的数据库,一条数据存储为一个文档document,数据结构是由key-value对组成,文档类类似于平时使用的json对象.文档中字段值可以包含其 ...
- 获取mongodb数据变更_支持mysql、MongoDB数据变更订阅/监听分发
1 概述 mysql.MongoDB数据变动监听分发 本项目意在简化监听mysql.MongoDB数据库的不同表的各种数据变动 项目依赖redis,mysql 使用场景:刷新缓存.异构系统... 2 ...
- qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?
- 点击上方"中国统计网"订阅我吧!-MySQL备份 MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑.在MySQL中,使用mysaldump ...
- python数据存储系列教程——python中mongodb数据库操作:连接、增删查改、多级路径
全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mongodb数据库,首先要在本地或服务器安装mongodb数据库.安装参考:http:// ...
- 查看mongodb数据路径_【数据库】mongodb数据库安装
简介 本文简单介绍mongodb主从备份安装.包括两部分: 数据库安装 主从配置 安装数据库 1.配置yum源 cd /etc/yum.repos.d vi mongodb-org-4.0.repo ...
- 通过nodejs插入删除MongoDB数据
通过nodejs插入删除MongoDB数据 首先确保你已经启动了Mongodb数据库服务(mongoDB默认的端口号是:27017) nodejs端,插入数据代码: var MongoClient = ...
- poi报空指针_POI 导出文件 报空指针异常 --Docker 中
爬坑系列----Redis查询key报空指针异常,而redis中确实存在该key 现象: 1.在A方法中根据key查询一个list,可以获取到相应的值 2.在B方法中同样调用此方法,传入相同的key, ...
- mongodb数据备份
mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport 一.mongodump备份数据 ...
最新文章
- vue3启动项目时,自动打开浏览器怎么配置?
- c++ string 另类写法
- mapreduce编程实例(2)-求最大值和最小值
- 实现SQL SERVER 下的PadLeft函数
- 一行命令搭建内部的管道
- 【计蒜客 - 蓝桥训练】蒜厂年会(单调队列优化dp,循环数列的最大子段和)
- linux cache buffer区别,Linux buffer/cache异同
- java list 之详解_Java高级技术之List详解
- Hbase常用数据库操作类
- 这首歌,竟然是AI生成的,太狠了...
- 完全分布式安装Hadoop,Hive,Hbase,Hwi,Zookeeper
- [Ubuntu] 解决Win10+Ubuntu双系统时间不一致问题
- Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
- 乔布斯其人的演讲技巧
- 路由器桥接显示无法连接服务器,路由器无法桥接怎么办
- 我的2018:微信朋友圈的24个瞬间
- 微信小程序卡包wx.addcard文档缺失-ext参数说明
- windows cmd 添加路由命令
- VSCode全配置(c++、unity、html...等配置和好用设置,持续更新)
- MyBatis基础篇
热门文章
- 伊家田园解读“区块链+农业”——将给农业带来怎样的蜕变?
- Python 爬虫:把教程转换成 PDF 电子书
- 【Bio】常见生物专业英语词汇
- LeetCode 176. 第二高的薪水
- pom文件 使用maven命令将项目打成可执行jar包
- 【基础知识】rubymine常用快捷键
- OKHttp3.10.0最新版的极致封装
- 追加审批人样式html,审批流程(报销)驳回(审批人驳回).html
- 大学生如何学编程?一步步来才是关键!
- ant design vue 表格中时间戳转换成时间格式显示