mongodb 备份命令和还原命令

1、执行备份还原前为了数据的安全 需要通过通过fsync和锁可以在[MongoDB]不是必须运行时,安全有效地使用复制数据目录的方式进行备份!fsync命令会强制服务器将所有缓冲区内容写入到磁盘!通过上锁,可以阻止数据库的进一步写入!下面演示具体做法:

 use admin;  
switched to db admin  
> db.runCommand({"fsync" : 1, "lock" : 1});  

命令正确运行结果

{  
        "info" : "now locked against writes, use db.fsyncUnlock() to unlock",  
        "seeAlso" : "http://www.mongodb.org/display/DOCS/fsync+Command",  
        "ok" : 1  
}  

1、开始执行备份命令

mongodump -h dbhost -d dbname -o dbdirectory
# -h MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
# 需要备份的数据库实例,例如:test
# 备份的数据存放位置,例如:c:\data\dump
mongodump -h 127.0.0.1 -u admin -p xxx  -d blog -o /home/timeless/桌面/mongodump --authenticationDatabase admin
注意:  --authenticationDatabase  参数制定认证数据库   否则会提示错误,注意认证库是和-u -p
指定的账号密码是对应的:

Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.   //提示认证失败
 注意: -0 指定的备份路径是具体的路径不要增加"" 如上/home/timeless/桌面/mongodump 不是‘/home/timeless/桌面/mongodump’

#恢复 同样要先lock 在 unclock (不是必须的)
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

–drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

 mongorestore -h XXX -u admin -p XXX -d blog  /home/timeless/桌面/mongodump/blog --authenticationDatabase admin  

3、备份完成后 恢复数据库锁

> use admin;  
switched to db admin  
> db.$cmd.sys.unlock.findOne();  
{ "ok" : 1, "info" : "unlock completed" }  
#db.currentOp()来确认解锁成功
> db.currentOp();  
{ "inprog" : [ ] }  

备份恢复说明实例

mongorestore -u "xxx" -p "xxx" -h 127.0.0.1:27017 -d dbbackTest  E:\mongoBak\host127.0.0.1\dbbackTest --authenticationDatabase dbbackTest
#注意这里的 --authenticationDatabase dbbackTest 是恢复时登录验证的数据库,可以是任意库。比如可以是admin 也可以是要恢复的库dbbackTest。
# 注意点二  --authenticationDatabase 后面跟那个库,-u -p 就是那个库的对应的账号和密码。并且这个账号和密码要有足够的权限角色执行恢复的命令。

你可能感兴趣的:(mongodb 备份命令和还原命令)