1. 程式人生 > >資料備份及恢復(mongodump/mongorestore)

資料備份及恢復(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分鐘左右。其中資料恢復完成後,重建索引花費