有同事某天昏昏沉沉地走到我座位,說要請教我一個專業問題,我本準備洗耳恭聽,誰知他問,該怎麼向自己喜歡的女孩子表白?What??
Are you kidding me?認真再問一遍,他才反應過來說噢不不不,其實是想問,怎麼在2臺Linux服務器間進行MongoDB的備份與恢復?哈哈哈,暴露了吧!
既然都問到老司機我了,那我就不吝賜教,噢不不不,慷慨解囊了!
要點:本文記錄如何在2臺Linux服務器間進行MongoDB的備份與恢復
首先第一步,我們瞭解下涉及到的指令及語法:
在Mongodb中我們使用mongodump命令來備份MongoDB數據。該命令可以導出所有數據到指定目錄中
語法:
mongodump -h dbhost -d dbname -o dbdirectory
-h:
MongDB所在服務器地址,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017
-d:
需要備份的數據庫實例,例如:test
-o:
備份的數據存放位置,例如:c:\data\dump,當然該目錄需要提前建立,在備份完成後,系統自動在dump目錄下建立一個test目錄,這個目錄裡面存放該數據庫實例的備份數據。
mongorestore 命令負責恢復備份的數據
語法:
mongorestore -h<:port> -d dbname
--host <:port>, -h <:port>:
MongoDB所在服務器地址,默認為: localhost:27017
--db , -d :
需要恢復的數據庫實例,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2
--drop:
恢復的時候,先刪除當前數據,然後恢復備份的數據。就是說,恢復後,備份後添加修改的數據都會被刪除,慎用哦!
: mongorestore 最後的一個參數,設置備份數據所在位置,例如:c:\data\dump\test。
你不能同時指定
和 --dir 選項,--dir也可以設置備份目錄。 --dir:
指定備份的目錄
你不能同時指定
和 --dir 選項
第二步,我們需要從服務器A把數據庫備份下來,並恢復到服務器B中, 以下是操作過程
(1)服務器A:
登錄SSH, 執行備份指令
mongodump -h 127.0.0.1:27017 -d mydb -o /home/pi/Documents/mongodb_bak
備份的目標目錄可以不存在, mongodump會幫你自動創建它
為了確保備份正確, 我們回過頭看看源數據庫的情況: 數據庫(db)及數據表(collectons)的數據條數
再檢查一下備份出來的目錄
(2)把備份好的目錄拷貝到服務器B:
登錄SSH, 執行拷貝指令
scp -r /home/pi/Documents/mongodb_bak/* [email protected]:/home/downloads/mongodb_bak
(3)服務器B恢復數據庫:
登錄SSH, 執行恢復指令
mongorestore -h 192.168.6.42:27017 -d mydb1 /home/downloads/mongodb_bak/mydb/
可以指定一個新的數據庫名字,不一定要跟源數據庫同名
服務器B因為指定了一個IP連接, 所以此處不能使用127.0.0.1
恢復完成後, 查看一下數據庫情況
可以看到恢復的數據表數據條數跟源數據庫一致, 成功啦!
怎麼樣,你學會了嗎?下次見~
閱讀更多 物聯創客 的文章