既然使用Mongodb,就不得不用他的安全備份機制:副本集。
Mongodb副本集是什么東西?
通俗的講就是用多台機器進行同一數據的異步同步,從而使多台機器擁有同一數據的多個副本,並且當主庫當掉時在不需要用戶干預的情況下自動切換其他備份服務器做主庫。而且還可以利用副本服務器做只讀服務器,實現讀寫分離,提高負載。
需要指數的是:Mongodb的主從復制模式官方已經不在推薦使用了。
那么該如何實現呢?
我用一台的機器的不同文件夾來做下模擬(生產環境下最好用不同的服務器來做物理隔絕)。
我的文件目錄是:
F:\mongodb1\
F:\mongodb2\
F:\mongodb3\
那現在開始操作。
以上就是啟動命令。
參數:port: Mongodb的監聽端口
dbpath:數據文件存儲路徑
logpath:系統日志存放路徑
replSet :副本集名稱,我用的是test,其他的節點必須使用這個名字做副本集名稱。
logappend:日志的寫入模式是追加,不是默認的覆蓋模式。
同樣對目錄mongodb2,mongodb3使用以上命令,端口號分別是:2222,3333,如下:
各個Mongodb啟動以后,就只剩下一步了,把他們串在一起。(此處新打開一個cmd來操作,所有的命令都在這里執行,不要把這個關閉了)
首先通過執行:mongo --port 1111連接到Mongodb1的實例上
然后定義配置信息:config_test,
最后通過rs.initiate(config_test)啟動副本集
至此整個副本集的配置已經完成。完成情況可通過rs.status()命令查看
這里面的幾個參數說明下:
health:1 //1表明狀態是正常,0表明異常
state:1 // 1表明是primary,2表明是slave,即做備份的機器
從結果看現在是一台主庫,兩台備份。
當一台服務器當掉會怎么樣呢?
我們把mongodb1停掉,然后再運行rs.status(),如下
可以看到Mongodb已經當掉,這時候Mongodb3成為了主庫。
配置完成后就免不了要做維護,關於維護請看我下篇文章