如何在2台Linux伺服器間進行MongoDB備份與恢復?只需兩步!

有同事某天昏昏沉沉地走到我座位,說要請教我一個專業問題,我本準備洗耳恭聽,誰知他問,該怎麼向自己喜歡的女孩子表白?What??

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

Are you kidding me?認真再問一遍,他才反應過來說噢不不不,其實是想問,怎麼在2臺Linux服務器間進行MongoDB的備份與恢復?哈哈哈,暴露了吧!

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

既然都問到老司機我了,那我就不吝賜教,噢不不不,慷慨解囊了!

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

要點:本文記錄如何在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

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

備份的目標目錄可以不存在, mongodump會幫你自動創建它

為了確保備份正確, 我們回過頭看看源數據庫的情況: 數據庫(db)及數據表(collectons)的數據條數

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

再檢查一下備份出來的目錄

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

(2)把備份好的目錄拷貝到服務器B:

登錄SSH, 執行拷貝指令

scp -r /home/pi/Documents/mongodb_bak/* [email protected]:/home/downloads/mongodb_bak

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

(3)服務器B恢復數據庫:

登錄SSH, 執行恢復指令

mongorestore -h 192.168.6.42:27017 -d mydb1 /home/downloads/mongodb_bak/mydb/

可以指定一個新的數據庫名字,不一定要跟源數據庫同名

服務器B因為指定了一個IP連接, 所以此處不能使用127.0.0.1

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

恢復完成後, 查看一下數據庫情況

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!

可以看到恢復的數據表數據條數跟源數據庫一致, 成功啦!

怎麼樣,你學會了嗎?下次見~

如何在2臺Linux服務器間進行MongoDB備份與恢復?只需兩步!


分享到:


相關文章: