博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5. MongoDB备份和恢复
阅读量:4048 次
发布时间:2019-05-25

本文共 1288 字,大约阅读时间需要 4 分钟。

 

1.mongodump和mongorestore

mongodump和mongorestore不能停机备份

(1) mongodump

使用普通的查询机制,所以产生的备份不一定是数据库数据的实时快照。

mongodump -d admin -o ./backup

 -h host / -d db / -c collection / -u username / -p password / -o output directory

 

(2)mongorestore

mongorestore -d test3 --drop ./backup/test2

 -h host / --port 也可以使用 --host hostname:port / -u username / -p password / -d db / -c collection / 

--dir input directiory / --drop  先删除在导入集合

 

2. fsync和锁

(1)fsync 强制服务器将所有缓冲区写入磁盘

下面的例子强制执行了fsync并获得写入锁,上了写入锁可以安全的将数据目录副本用作备份。只能运行在 admin管理数据库(use admin),将锁住全部数据库

 

db.runCommand({"fsync" : 1, "lock" : 1})

 

(2)解锁

同样只能运行在admin数据库

db.$cmd.sys.unlock.findOne();

 

3.从属备份

最好的备份方案是在从服务器上进行备份。

 

4.修复

针对停电、崩溃等情况下数据有可能损坏,MongoDB内置了修复功能

(1)方法一 --repair 

一般情况下,需要先删除lock 文件,然后通过mongod --repair来修复

 

# 删除lock文件rm -rf /var/lib/mongo/mongod.lock# 删除log文件rm -rf /var/log/mongodb/mongod.log# 删除mongodb进程文件rm -rf /var/run/mongodb/mongod.pid# 修复操作mkdir /var/lib/mongo/repairmongod --repair --dbpath /var/lib/mongo   --repairpath /var/lib/mongo/repair/# 删除lock文件rm -rf /var/lib/mongo/mongod.lock
 
repair的过程:将所有文档导出然后马上导入,忽略无效的文档,完成后重新建立索引。

 

 mongod --config /etc/mongod.conf --port=27017 --pidfilepath=/var/run/mongodb/mongod.pid --dbpath=/var/lib/mongo --directoryperdb --nojournal --noauth 

(2)方法二 修复运行中的数据库 repairDatabase

use testdb.repairDatabase()

 

 

转载地址:http://xqyci.baihongyu.com/

你可能感兴趣的文章
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
Java的对象驻留
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>
android中shader的使用
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>