一: 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备份还原相关推荐

  1. 开启docker中MongoDB的认证授权

    开启docker中MongoDB的认证授权 思路 开启MongoDB服务后,默认是没有权限验证的.直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作.下面介绍一下如何开启docker中Mo ...

  2. 如何确认mongodb数据插入是否成功_go连接mongodb

    mongodb介绍 mongodb是基于分布式文件存储的数据库,一条数据存储为一个文档document,数据结构是由key-value对组成,文档类类似于平时使用的json对象.文档中字段值可以包含其 ...

  3. 获取mongodb数据变更_支持mysql、MongoDB数据变更订阅/监听分发

    1 概述 mysql.MongoDB数据变动监听分发 本项目意在简化监听mysql.MongoDB数据库的不同表的各种数据变动 项目依赖redis,mysql 使用场景:刷新缓存.异构系统... 2 ...

  4. qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?

    - 点击上方"中国统计网"订阅我吧!-MySQL备份 MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑.在MySQL中,使用mysaldump ...

  5. python数据存储系列教程——python中mongodb数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mongodb数据库,首先要在本地或服务器安装mongodb数据库.安装参考:http:// ...

  6. 查看mongodb数据路径_【数据库】mongodb数据库安装

    简介 本文简单介绍mongodb主从备份安装.包括两部分: 数据库安装 主从配置 安装数据库 1.配置yum源 cd /etc/yum.repos.d vi mongodb-org-4.0.repo ...

  7. 通过nodejs插入删除MongoDB数据

    通过nodejs插入删除MongoDB数据 首先确保你已经启动了Mongodb数据库服务(mongoDB默认的端口号是:27017) nodejs端,插入数据代码: var MongoClient = ...

  8. poi报空指针_POI 导出文件 报空指针异常 --Docker 中

    爬坑系列----Redis查询key报空指针异常,而redis中确实存在该key 现象: 1.在A方法中根据key查询一个list,可以获取到相应的值 2.在B方法中同样调用此方法,传入相同的key, ...

  9. mongodb数据备份

    mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport 一.mongodump备份数据 ...

最新文章

  1. vue3启动项目时,自动打开浏览器怎么配置?
  2. c++ string 另类写法
  3. mapreduce编程实例(2)-求最大值和最小值
  4. 实现SQL SERVER 下的PadLeft函数
  5. 一行命令搭建内部的管道
  6. 【计蒜客 - 蓝桥训练】蒜厂年会(单调队列优化dp,循环数列的最大子段和)
  7. linux cache buffer区别,Linux buffer/cache异同
  8. java list 之详解_Java高级技术之List详解
  9. Hbase常用数据库操作类
  10. 这首歌,竟然是AI生成的,太狠了...
  11. 完全分布式安装Hadoop,Hive,Hbase,Hwi,Zookeeper
  12. [Ubuntu] 解决Win10+Ubuntu双系统时间不一致问题
  13. Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
  14. 乔布斯其人的演讲技巧
  15. 路由器桥接显示无法连接服务器,路由器无法桥接怎么办
  16. 我的2018:微信朋友圈的24个瞬间
  17. 微信小程序卡包wx.addcard文档缺失-ext参数说明
  18. windows cmd 添加路由命令
  19. VSCode全配置(c++、unity、html...等配置和好用设置,持续更新)
  20. MyBatis基础篇

热门文章

  1. 伊家田园解读“区块链+农业”——将给农业带来怎样的蜕变?
  2. Python 爬虫:把教程转换成 PDF 电子书
  3. 【Bio】常见生物专业英语词汇
  4. LeetCode 176. 第二高的薪水
  5. pom文件 使用maven命令将项目打成可执行jar包
  6. 【基础知识】rubymine常用快捷键
  7. OKHttp3.10.0最新版的极致封装
  8. 追加审批人样式html,审批流程(报销)驳回(审批人驳回).html
  9. 大学生如何学编程?一步步来才是关键!
  10. ant design vue 表格中时间戳转换成时间格式显示