当前位置: 首页 > news >正文

MongoDB备份与恢复

转自:https://www.cnblogs.com/shilin000/p/5248177.html

   https://www.cnblogs.com/timelesszhuang/p/5906068.html

 

mongodb的备份有两种方式:

1.直接拷贝数据目录下的一切文件

2.使用mongodump方式

3.主从复制:http://www.cnblogs.com/huangxincheng/archive/2012/03/04/2379755.html  (这篇详细介绍了主从复制)

下面一一说明:

1.直接拷贝数据目录下的一切文件:

这种方式用来备份整个mongodb的数据库,不能备份单个数据库或者集合或者子集合

在拷贝过程中必须阻止数据文件发生更改。因此需要对数据库加锁,以防止数据写入.

db.fsyncLock()

上面的命令将阻塞写入操作,并将脏数据刷新到磁盘上,确保数据一致。
然后,拷贝数据文件到备份目录下

cp -R /data/db/* /backup

文件复制完成后,对数据库进行解锁,允许写操作

 db.fsyncUnlock()

注意: 在执行db.fsyncLock()和db.fsyncUnlock()时,不能关闭当前的shell窗口,否则可能无法连接而需要重新启动mongod服务。

恢复时,确保mongod没有运行,清空数据目录,将备份的数据拷贝到数据目录下,然后启动mongod

cp -R /backup/* /data/db/
mongod -f mongod.conf

2.使用mongodump方式:

千万不要fsyncLock与mongodump配合使用,如果数据库被锁定了,mongodump将永远挂起。 

使用mongodump备份比较慢,在备份复制集时还有些问题,后续会说到。但是,用来备份单个数据库、集合、子集合还是比较好的方法。

  • 首先数据库备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 
mongodump -h 127.0.0.1 -u admin -p xxx  -d blog -o '/home/timeless/桌面/mongodump' --authenticationDatabase admin
注意  --authenticationDatabase  参数制定认证数据库   否则会提示错误:
Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.   //提示认证失败
复制代码
# ./mongodump --help
options:
  --help                                显示帮助信息
  -v [ --verbose ]                      打印出更多信息,如时间等等 -vvvvv
  --version                             打印版本信息
  -h [ --host ] arg                     指定连接的mongodb主机,复制集时设置为<set name>/s1,s2
  --port arg                            指定mongodb端口号,也可以这么指定--host hostname:port
  --ipv6                                启用支持IPv6 support
  -u [ --username ] arg                 用户名
  -p [ --password ] arg                 密码
  --authenticationDatabase arg          user source (defaults to dbname)
  --authenticationMechanism arg (=MONGODB-CR)
                                        authentication mechanism
  --dbpath arg                          直接访问mongod的数据库文件,而不是连接到mongodb服务器。需要锁定数据目录,如果mongod当前在访问相同路径将不能使用。也就是说,mongod运行的情况下不能使用--dbpath,mongod未运行的情况下可以直接指定--dbpath
  --directoryperdb                      每个db一个单独的目录,需要指定dbpath 
  --journal                             启用journaling,需要指定dbpath
  -d [ --db ] arg                       指定数据库
  -c [ --collection ] arg               指定集合
  -o [ --out ] arg (=dump)              指定输出目录,"-"表示标准输出
  -q [ --query ] arg                    json查询
  --oplog                               使用oplog来生产时间点快照
  --repair                              尝试恢复崩溃的数据库
  --forceTableScan                      强制表扫描,不使用$snapshot
复制代码

常用的是:mongodump -h 主机 -u 用户名 -p 密码 -d 数据库 -c 集合 -o 备份目录

mongodb恢复时采用mongorestore来恢复

复制代码
# ./mongorestore --help   //相同部分参数意义参加上面的mongodump
  -v [ --verbose ]                      
  --version                             
  -h [ --host ] arg                     
  --port arg                            
  --ipv6                                
  -u [ --username ] arg                 
  -p [ --password ] arg                 
  --authenticationDatabase arg          
  --authenticationMechanism arg (=MONGODB-CR)
  --dbpath arg                         
  --directoryperdb                      
  --journal 
  -d [ --db ] arg  
  -c [ --collection ] arg  
  --objcheck                            在插入前验证对象,默认启用
  --noobjcheck                          不在插入前验证对象
  --filter arg                          插入前过滤
  --drop                                在插入前删除所有文档
  --oplogReplay                         在恢复时应用oplog
  --oplogLimit arg                      include oplog entries before the 
                                        provided Timestamp (seconds[:ordinal]) 
                                        during the oplog replay; the ordinal 
                                        value is optional
  --keepIndexVersion                    don't upgrade indexes to newest version
  --noOptionsRestore                    don't restore collection options
  --noIndexRestore                      don't restore indexes
  --w arg (=0)                          minimum number of replicas per write
复制代码

恢复整个mongodb的数据库:

mongorestore -p 27017 dump/

恢复到特定的库和集合:

mongorestore --db ttlsa_com --collection posts dump/old_ttlsa_com/old_posts.bson

注意: mongodump和mongorestore版本最好相匹配。

转载于:https://www.cnblogs.com/zlf1/p/9337749.html

相关文章:

  • Linux 用户 用户组 相关命令
  • Unity获取Android平台音量
  • 人工智能技术在中小学课堂中的应用
  • 设计模式入门:工厂方法模式
  • 作为app运营,你需要get的技能有哪些? 总结七项APP运营技能
  • Java分布式锁之数据库实现
  • Netty(二):数据在ChannelPipeline中的流经
  • 771. Jewels and Stones - LeetCode
  • 主磁盘分区和逻辑磁盘分区的区别是什么?
  • Android tab页制作
  • 纯前端表格技术应用研讨会——华为供应链专场
  • PHP运算优先级导致的and绕过
  • oracle查看某表字段类型
  • python 中的 %s%用法
  • 一些css基础学习笔记
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java程序员幽默爆笑锦集
  • JS+CSS实现数字滚动
  • js作用域和this的理解
  • Nacos系列:Nacos的Java SDK使用
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Promise初体验
  • rabbitmq延迟消息示例
  • vue2.0项目引入element-ui
  • Web设计流程优化:网页效果图设计新思路
  • 检测对象或数组
  • 利用jquery编写加法运算验证码
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 排序(1):冒泡排序
  • 前端性能优化——回流与重绘
  • 嵌入式文件系统
  • 如何学习JavaEE,项目又该如何做?
  • 王永庆:技术创新改变教育未来
  • 我建了一个叫Hello World的项目
  • 小程序01:wepy框架整合iview webapp UI
  • 新版博客前端前瞻
  • 运行时添加log4j2的appender
  • No resource identifier found for attribute,RxJava之zip操作符
  • 1.Ext JS 建立web开发工程
  • 国内开源镜像站点
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​你们这样子,耽误我的工作进度怎么办?
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)Nginx简介和安装教程
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (南京观海微电子)——I3C协议介绍
  • (转)Linq学习笔记
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)四层和七层负载均衡的区别
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net 生成二级域名