Mongo的備份和恢復(mongodump 和mongorestore )

--備份單個表
mongodump -u  superuser -p 123456  --port 27017 --authenticationDatabase admin -d myTest -c d -o /backup/mongodb/myTest_d_bak_201507021701.bak

--備份單個庫
mongodump  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest -o  /backup/mongodb/

--備份全部庫
mongodump  -u  superuser -p 123456 --authenticationDatabase admin  --port 27017 -o /root/bak 

--備份全部庫推薦使用添加--oplog參數的命令,這樣的備份是基於某一時間點的快照,只能用於備份所有庫時纔可用,單庫和單表不適用:
mongodump -h 127.0.0.1 --port 27017   --oplog -o  /root/bak 

--同時,恢復時也要加上--oplogReplay參數,具體命令以下(下面是恢復單庫的命令):
mongorestore  -d swrd --oplogReplay  /home/mongo/swrdbak/swrd/

--恢復單個庫:
mongorestore  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest   /backup/mongodb/

--恢復全部庫:
mongorestore   -u  superuser -p 123456 --port 27017  --authenticationDatabase admin  /root/bak

--恢復單表
mongorestore -u  superuser -p 123456  --authenticationDatabase admin -d myTest -c d /backup/mongodb/myTest_d_bak_201507021701.bak/myTest/d.bson

 

注:mysql

一、mongorestore恢復數據默認是追加,如打算先刪除後導入,能夠加上--drop參數,不過添加--drop參數後,會將數據庫數據清空後再導入,若是數據庫備份後又新加入了數據,也會將新加的數據刪除,它不像mysql有一個存在的判斷。sql

二、mongodump在mongo關閉時,也是能夠備份的,不過須要指定數據目錄,命令爲:mongodb

mongodump  --dbpath  /data/db

三、在備節點使用mongodump備份時,必須加上--oplog參數,不然備份的狀態不會和任何其餘集羣成員的狀態相吻合,另外在恢復時還需建立一份oplog,用來恢復備份期間所作的操做。數據庫

恢復:
1、將複製集中要恢復的節點移除
rs.remove("10.10.17.26:27000")
2、運行mongorestore --oplogReplay命令
mongorestore --host 10.10.17.26 --port  27000 --oplogReplay  /data/mongodbbackup/20150820/
3、建立oplog
use local 
db.createCollection("oplog.rs", {"capped" : true, "size" : 10000000})
4、恢復oplog
mongorestore --host 10.10.17.26 --port  27000 -d local -c oplog.rs  /data/mongodbbackup/20150820/oplog.bson
5、將該節點加入到複製集 
rs.add("10.10.17.26:27000")

四、mongodump與mongoexport的區別:json

  • mongodump導出的是bson格式,是二進制形式,不過可使用mongo自帶的bsondump命令查看裏面的數據,而mongoexport導出的則是文本,能夠是csv、json格式。
  • JSON可讀性強但體積較大,BSON則是二進制文件,體積小但對人類幾乎沒有可讀性。
  • 在一些mongodb版本之間,BSON格式可能會隨版本不一樣而有所不一樣,因此不一樣版本之間用mongodump/mongorestore可能不會成功,具體要看版本之間的兼容性。當沒法使用BSON進行跨版本的數據遷移的時候,使用JSON格式即mongoexport/mongoimport是一個可選項。跨版本的mongodump/mongorestore我的並不推薦,實在要作請先檢查文檔看兩個版本是否兼容(大部分時候是的)。
  • JSON雖然具備較好的跨版本通用性,但其只保留了數據部分,不保留索引,帳戶等其餘基礎信息。使用時應該注意。
相關文章
相關標籤/搜索