hotmail
作者hotmail·2015-03-26 17:17
软件开发工程师·hotmail

MongoDB备份和恢复

字数 1794阅读 1141评论 0赞 0

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/repair 
    mongod --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 test 
    db.repairDatabase() 

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广