MongoDB複製集

一、什麼是複製集
複製集是額外的數據副本,是跨多個服務器同步數據的過程,複製集提供了冗餘並增加了數據可用性,通過複製集可以對硬件故障和中斷的服務器進行恢復。
複製集的優勢:
1、讓數據更安全
2、高數據可用性
3、災難恢復
4、無停機維護(如備份、索引重建、故障轉移)
5、讀縮放(額外的副本讀取)
6、副本集對應用程序是透明的。
二、複製集的工作原理
MongoDB的複製集至少需要兩個節點。其中一個是主節點,負責處理客戶端的請求,其餘的都是從節點,負責主節點上的數據。
MongoDB各個節點常見的搭配方式爲:一主一從或一主多從。主節點記錄其上的所有操作到oplog中,從節點定期輪詢主節點獲取這些操作,然後對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。
客戶端在主節點寫入數據,在從節點讀取數據,主節點與從節點進行數據交互保障數據的一致性。如果其中一個節點出現故障,其他節點馬上將業務接過來而無需停機操作。
複製集特點如下:
1、多個基點的羣集
2、任何節點可作爲主節點
3、所有寫入操作都在主節點上
4、自動故障轉移
5、自動恢復
三、MongoDB複製集部署
下面將一步步介紹如何部署MongoDB複製集,包括複製集的初始化配置、啓動複製集和增加、刪除複製集的節點。
實驗環境:CentOS7一臺,並安裝MongoDB創建3個實例
1、準備工作
MongoDB複製集

這裏我們需要給配置文件裏插入一段內容。
MongoDB複製集
配置relSet參數值爲kgcrs。在所有實例的配置文件都插入相同的內容。使用mongod -f 配置文件路徑 --shutdown
如:mongod -f /etc/mongod2.conf --shutdown
2、配置複製集
MongoDB複製集
進入其中一臺MongoDB。使用cfg定義參數。
MongoDB複製集
使用rs.initiate(cfg)來初始化配置啓動複製集,這裏要保證從節點沒有數據。
初始化完成後,我們可以使用rs.status()來查看複製集狀態信息。其中health爲1代表健康,0代表宕機。state爲1代表主節點爲2代表從節點。
3、添加和刪除節點
MongoDB複製集
使用rs.add("IP地址:監聽端口")來添加節點。同樣可以使用rs.remove("IP地址:監聽端口")來刪除節點。
4、複製集切換
MongoDB複製集可以實現羣集的高可用,當其中主節點出現故障時會自動切換到其他節點。管理員也可以手動進行付志傑的主從切換。
1)模擬故障自動轉移
可以用過kill -9 監聽端口來停止複製集的當前主節點。如kill -9 27017。之後進入MongoDB使用rs.status()來查看主節點會不會自動切換到其他節點上。
2)手動進行主從切換
管理員也可以手動進行復制集的主從切換
MongoDB複製集
在主服務器使用freeze(30)爲暫停30秒不參加選舉;rs.stepDown(60,30)告訴主節點交出主節點位置,然後維持從節點狀態不少於60秒,同時等待30秒以使主節點和從節點日誌同步。
MongoDB複製集
再次查看複製集狀態信息,發現主節點已經切換到另一個實例。

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