1、執(zhí)行備份還原前為了數據的安全 需要通過通過fsync和鎖可以在[MongoDB]不是必須運行時,安全有效地使用復制數據目錄的方式進行備份!fsync命令會強制服務器將所有緩沖區(qū)內容寫入到磁盤!通過上鎖,可以阻止數據庫的進一步寫入!下面演示具體做法:
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、開始執(zhí)行備份命令
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 就是那個庫的對應的賬號和密碼。并且這個賬號和密碼要有足夠的權限角色執(zhí)行恢復的命令。