MongoDB 備份與恢復的實踐

網站運行了不少日子了,一些數據需要備份。今天研究了下MongoDB的一些有關備份的方法:

1)使用mongodump和mongorestore工具:(參見http://cn.docs.mongodb.org/master/reference/program/mongodump/

使用起來很簡單,在任何目錄執行mongodump就行了(把mongodb安裝路徑下的bin加到環境變量path裏面),它會自動連接到MongoDB數據庫(通過默認host名和默認端口號),然後把dump出來的內容保存在名爲dump的子目錄下,每個database一個目錄,一個collection生成2個文件(bson和json)文件:json文件是collection的定義,bson是二進制的數據,可以用mongodb的另外一個自帶工具bsondump來查看(壓縮率大概是85%+)。恢復的話,也簡單,在同一目錄下執行 mongorestore dump就行了,他會把數據全部導回去。具體的一些參數和細節,可以官方文檔。


2)使用db.copyDatabase(...)命令來整個複製遠程數據庫:(參見http://docs.mongodb.org/manual/reference/method/db.copyDatabase/

我本地新裝了MongoDB,想備份遠程MongoDB的所有數據,就需要用到這個命令,在mongo.exe的命令行輸入:

> db.copyDatabase("CERConfig", "CERConfig", "cerreport.xxx.com")
{ "ok" : 1 }
> db.copyDatabase("CERDataCache", "CERDataCache", "cerreport.xxx.com")
{ "ok" : 1 }
> show dbs
CERConfig       0.203125GB
CERDataCache    3.9521484375GB
local   0.078125GB
test    (empty)
第一個參數是遠程數據庫的Database名字,第二個參數是拷貝到本地的哪個數據庫,第三個參數是遠程數據庫的host名。也很簡單。


3)使用db.repairDatabase()來壓縮數據庫:(參見http://docs.mongodb.org/manual/reference/command/repairDatabase/#dbcmd.repairDatabase
用的時間長了MongoDB就變得很大,需要清理一下,用這個命令就可以,先用use命令切換到哪個數據庫,然後執行db.repairDatabase()就行。注意,最好把數據庫停掉再壓縮。


4) 使用主從備份機制:(參見http://database.51cto.com/art/201107/278632_1.htm

啓動master數據庫:

bin\mongod --logpath "C:\CERWeb\mongodb\log\mongod.log" --dbpath "C:\CERWeb\mongodb\data" --master
啓動slave數據庫:

bin\mongod --dbpath "C:\CERWeb2\mongodb\data" --slave --source cerreport.xxx.com
好了,一旦從數據庫啓動,就會自動sync數據,可以在很明顯的在控制檯看到他辛勤的勞作~


其他參考:

http://database.51cto.com/art/201107/278632_1.htm

http://blog.csdn.net/wangpeng047/article/details/7705588

http://www.2cto.com/database/201307/224647.html

http://www.cr173.com/html/19181_1.html





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章