MongoDB備份與恢復(3)—數據備份(mongodump)與恢復(mongorestore)


一、數據庫備份mongodump
1.概述

  • 在Mongodb中我們可以在不停止服務的情況下使用mongodump命令來備份MongoDB數據,該命令可以導出所有數據庫到指定目錄中。
  • mongodump備份的原理是通過一次查詢獲取當前服務器快照,並將快照寫入磁盤中,因此這種方式保存的也不是實時的,因為在獲取快照后,服務器還會有數據寫入,為了保證備份的安全,同樣我們還是可以利用fsync鎖使服務器數據暫時寫入緩存中。

2.常用命令格式:

mongodump -h dbhost -d dbname -o dbdirectory

 

  • 參數說明:
    -h:MongDB所在服務器地址
    -d:需要備份的數據庫實例,例如:Test
    -o:備份的數據存放位置,例如:D:\mongodb\data\dump,該目錄需要提前建立,在備份完成后,系統自動在 dump目錄下建立一個test目錄,這個目錄里面存放該數據庫實例的備份數據。

3.示例:

  • 在本地使用 27017 啟動你的mongod服務。打開命令提示符窗口,進入MongoDB安裝目錄的bin目錄輸入命令mongodump:
mongodump -h localhost -d daisyDB -o D:\mongodb\data\backup

 

  • 執行以上命令后,客戶端會連接到指定的MongoDB服務上,並備份所有數據到指定目錄中。命令輸出結果如下:
D:\mongodb\bin>mongodump -h localhost -d daisyDB -o D:\mongodb\data\backup
2016-10-24T14:50:57.390+0800    writing daisyDB.daisyDB to D:\mongodb\data\backu
p\daisyDB\daisyDB.bson
2016-10-24T14:50:57.390+0800    writing daisyDB.system.indexes to D:\mongodb\dat
a\backup\daisyDB\system.indexes.bson
2016-10-24T14:50:57.406+0800    writing daisyDB.daisyDB metadata to D:\mongodb\d
ata\backup\daisyDB\daisyDB.metadata.json
2016-10-24T14:50:57.406+0800    writing daisyDB.Account to D:\mongodb\data\backu
p\daisyDB\Account.bson
2016-10-24T14:50:57.421+0800    done dumping daisyDB.daisyDB (2 documents)
2016-10-24T14:50:57.421+0800    writing daisyDB.Account metadata to D:\mongodb\d
ata\backup\daisyDB\Account.metadata.json
2016-10-24T14:50:57.421+0800    done dumping daisyDB.Account (0 documents)

 

  • 如果不指定目錄,進入MongoDB安裝目錄的bin目錄直接輸入命令mongodump,備份內容會默認保存在D:\mongodb\bin\dump,系統會自動生成dump文件夾將全部的數據庫存放在該文件夾下。

二、數據庫恢復mongorestore
1.常用命令格式:

  • mongorestore命令腳本語法如下:
mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
  • 參數說明:
    -h: MongoDB所在服務器地址
    -d:需要恢復的數據庫實例
    --directoryperdb:備份數據所在位置
    --drop:恢復的時候,先刪除當前數據,然后恢復備份的數據。就是說,恢復后,備份后添加修改的數據都會被刪除,慎用

2.示例:

  • mongorestore
    執行以上命令輸出結果如下:
D:\mongodb\bin>mongorestore
2016-10-24T15:21:08.000+0800    using default 'dump' directory
2016-10-24T15:21:08.046+0800    building a list of dbs and collections to restor
e from dump dir
2016-10-24T15:21:08.062+0800    reading metadata file from dump\daisyDB\daisyDB.
metadata.json
2016-10-24T15:21:08.062+0800    reading metadata file from dump\test\Account.met
adata.json
2016-10-24T15:21:08.062+0800    restoring daisyDB.daisyDB from file dump\daisyDB
\daisyDB.bson
2016-10-24T15:21:08.062+0800    reading metadata file from dump\daisyDB\Account.
metadata.json
2016-10-24T15:21:08.062+0800    restoring test.Account from file dump\test\Accou
nt.bson
2016-10-24T15:21:08.062+0800    restoring daisyDB.Account from file dump\daisyDB
\Account.bson
2016-10-24T15:21:08.062+0800    restoring indexes for collection daisyDB.Account
 from metadata
2016-10-24T15:21:08.062+0800    error: E11000 duplicate key error index: daisyDB
.daisyDB.$_id_ dup key: { : ObjectId('580d75ee17445b792574c3aa') }
2016-10-24T15:21:08.078+0800    error: E11000 duplicate key error index: test.Ac
count.$_id_ dup key: { : 10.0 }
2016-10-24T15:21:08.078+0800    restoring indexes for collection daisyDB.daisyDB
 from metadata
2016-10-24T15:21:08.078+0800    restoring indexes for collection test.Account fr
om metadata
2016-10-24T15:21:08.093+0800    finished restoring daisyDB.Account (0 documents)
2016-10-24T15:21:08.093+0800    finished restoring daisyDB.daisyDB (2 documents)
2016-10-24T15:21:08.109+0800    finished restoring test.Account (1 document)
2016-10-24T15:21:08.109+0800    done
  • 以上就是mongodb的備份和恢復過程。當數據庫文件出現問題或者損壞時,MongoDB還提供了修復數據文件的命令Repair。

轉載地址:http://forum.foxera.com/mongodb/topic/176/mongodb%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D-3-%E6%95%B0%E6%8D%AE%E5%A4%87%E4%BB%BD-mongodump-%E4%B8%8E%E6%81%A2%E5%A4%8D-mongorestore/2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM