數據的備份非常中要,一下的兩種方式,當然也可以利用快照:
---------------------------------------------------------------------
一、直接拷貝數據文件方式備份還原
----------------------------------------------------------------------
注:當調用db.fsyncUnlock()和db.fsyncLock()命令是不要關閉shell,因爲如果你啓用了身份驗證或者斷開了鏈接,可能連不上,需要重新啓動mongod,這些命令就都失效了
1.將數據庫鎖定:db.fsyncLock()
這個命令禁止所有寫入,並將髒頁寫入磁盤保證數據不再變化。這個時候的寫操作都會在內存中排隊等待了,直到數據庫解鎖。
2.mkdir /mongodbback/zou
cp -R /server/mongo/data/* /mongodbback/zou
3.解鎖數據庫 db.fsyncUnlock()
備份完成之後,那如何回覆呢
4. cp -R /mongodb/zou/* /server/mongo/data/
注意:
恢復前應該確保mongod沒有運行,且/server/mongo/data/爲空。
刪除前一定確認cp命令成功執行。
恢復完成後,再啓動mongod。
啓動mongod使用一下命令:mongod -f /etc/mongod.conf --fork --nojournal
-----------------------------------------------------------------------------
二、mongodump備份
-----------------------------------------------------------------------------
1.數據庫mongod沒有運行的狀態下的備份
mongodump --dbpath /server/mongo/data/ --out /backup/zou/mongo
數據庫未啓動時的還原
mongorestore --dbpath /backup/zou/mongo/ --journal /server/mongo/data
若是要指定備份還原特定數據庫在文件路徑下指定數據庫文件夾的名字即可
2.遠程鏈接進行備份
mongodump --host www.zou.com --port 27017 --username zou --password 123.com --out /backup/zou/mongo/mongodump-2016-03-11
恢復
mongodump --host www.zou.com --port 27017 --username zou --password 123.com /backup/zou/mongo/mongodump-2016-03-11
3.使用oplog進行備份
mongodump不是快照備份,備份過程中系統可能會繼續進行操作。
oplog的設置就是避免這種情況發生的,不過使用oplog的前提是mongod啓動時使用了--replSet選項
備份和恢復同2相同,只不過加上--oplog 和 oplogReplay 參數