資料備份及恢復(mongodump/mongorestore)
資料備份及恢復(mongodump/mongorestore)
2019年01月17日 16:22:29 DreamLRH 閱讀數 266
說明
1.mongodump建立高保真的BSON檔案,mongorestore可以用其恢復資料庫。對於小型資料庫的備份和恢復,這兩個工具非常簡單和高效,但對於大型資料庫的備份並不理想。
2.mongodump/mongorestore可以直接對正在執行的mongodb執行操作。
3.預設情況下,mongodump不會捕獲本地資料庫的內容,而只是捕獲其中的document,所以佔用空間較小(我試過了,佔用空間也不少,原空間佔用17G,備份完了37G)。不過,這也導致mongorestore恢復資料時,需要重建索引。
4.mongodump執行過程中會影響mongodb的效能。另外,即使執行結束後的一段時間效能依然會受到影響,因為讀取冷資料時,會把熱資料從快取中擠出去了。
5.如果資料大於系統記憶體,那麼查詢將會導致記憶體溢位,從而導致page faults。不過我測試時,待備份資料17G,機器記憶體8G,並沒有出現錯誤。
6.如果輸出資料夾中有檔案,mongodump會覆蓋。
--oplog
mongodump使用--oplog選項,捕獲備份過程中的修改,以保障備份資料的一致性。但這個需要另外配置,涉及複製功能。本文件未使用此選項。相對應的,如果備份時使用--oplog,那麼恢復資料時使用--oplogReplay選項。
--host/--port
可以使用--host/--port指定要備份的例項。用這兩個選項可以進行遠端備份。
--db/--collection
指定備份的資料和集合。
--out
mongodump使用此選項,指定備份的資料寫到哪個路徑。如果不指定,預設寫在當前工作目錄的dump/路徑下。
--objcheck
插入資料時,檢查完整性。
--drop
在恢復資料之前,刪除之前的集合。
操作步驟
1.執行備份命令,將備份資料寫入到/home/dump/資料夾下。如下各命令使用的使用者“root”是超級使用者,其角色為內建角色root。
mongodump --username "root" --password "xxxxxx" --out /home/dump/
如果出現如下內容,則表示備份完成:
備份的資料包含288萬多條document,資料庫大小16G多,耗時14分鐘左右。
2.執行恢復命令。
mongorestore --username "root" --password "xxxxxx" /home/dump/
如果出現如下內容,則表示恢復完成:
資料恢復總共耗時17分鐘左右。其中資料恢復完成後,重建索引花費