數據庫應用——MongoDB複製集

                                                         MongoDB複製集

一、配置MongoDB複製集
1、MongoDB複製集概述
(1)什麼是複製集
    ①複製集(Replica Sets)是額外的數據副本,是跨多個服務器同步數據的過程,複製集提供了冗餘並增加了數據可用性,通過複製集可以對硬件故障和中斷的服務進行恢復
    ②優勢
        1)讓數據更安全
        2)數據高可用性
        3)災難恢復
        4)無停機維護(備份、索引重建、故障轉移)
        5)讀縮放(額外的副本讀取)
        6)副本集對應用程序是透明的
(2)複製集工作原理
    ①主節點記錄所有變化到oplog日誌,輔助節點複製主節點的oplog並將這些日誌在輔助節點重做,各個節點之間會定期發送心跳信息,一旦主機宕機,則處罰選舉一個新的主節點,剩餘輔助節點指向新的主節點
    ②大多數原則
集羣存貨節點小於等於二分之一時集羣不可寫,只可讀,是否能選舉出新的主節點,是由當前複製集成員存貨數量來決定的
    ③三類節點
        1)標準(host)節點:存儲數據,可能被選爲活躍節點,有選舉權
        2)被動(passive)節點:有完整腹部,不可能成爲活躍節點,有選舉權
        3)仲裁(arbiter)節點:負責選舉,不存儲數據,不能充當主從節點
    ④特點
        1)N個節點集羣
        2)任何節點可作爲主節點
        3)所有寫入操作都在主節點上
        4)自動故障轉移
        5)自動恢復
    ⑤從節點默認無法讀取數據
        1)rs.slaveOK():允許從節點讀取數據

2、MongoDB複製集部署
(1)配置複製集
    ①創建數據文件和日誌文件目錄
        1)mkdir -p /data/mongodb{1,2,3,4}/
        2)touch /data/logs/mongodb/mongodb{1,2,3,4}.log
        3)chmod -R 777 /data/logs/mongodb/*log
    ②編輯配置文件
        1)replSet=fzj
        2)修改port及目錄設置
    ③編寫服務器腳本,啓動4個實例
    ④初始化配置複製集
        1)只有主節點可以有數據,初始化配置在主節點進行
        2)cfg={“_id”:”fzj”,”members”:[{“_id”:0,”host”:”192.168.11.101:27017”},
            {“_id”:1,”host”:”192.168.11.101:27012”},
            {“_id”:0,”host”:”192.168.11.101:27013”}]}

        3)rs.initiate(cfg)
    ⑤查看複製集狀態
        1)rs.status()
        2)health爲1代表健康,0代表宕機
        3)state爲1代表主節點,2代表從節點
(2)增加刪除節點
    ①增加:rs.add(“192.168.11.101:27020”)
    ②刪除:rs.remove(“192.168.11.101:27020”)

3、MongoDB複製集切換
(1)通過kill命令停止複製集當前主節點,然後查看切換結果
(2)手動主從切換
    ①rs.free(30):暫停30秒不參加選舉
    ②rs.stepDown(60,30):交出主節點位置,並維持從節點狀態不少於60秒,等待30秒以使主節點和從節點日誌同步

二、MongoDB複製選舉原理
1、複製集的選舉原理

2、驗證複製集選舉原理
(1)查看oplog日誌:
use local
show collections
db.oplog.rs.find()
(2)配置複製集優先級
    ①重新配置複製集,設置兩個標準節點,一個被動節點和一個仲裁節點
        cfg={"_id":"fzj","members":[{"_id":0,"host":"192.168.11.101:27017","priority":100},
        {"_id":1,"host":"192.168.11.101:27012","priority":100},{"_id":2,"host":"192.168.11.101:27013","priority":0},
        {"_id":3,"host":"192.168.11.101:27014","arbiterOnly":true}]}

(3)模擬節點故障後,複製集會選舉第二個標準節點爲主節點
(4)當所有標準節點故障後,被動節點也不能成爲主節點


三、MongoDB複製集管理
1、配置允許在從節點讀取數據:rs.slaveOK()

2、查看複製狀態信息
(1)rs.printReplicationInfo()
(2)rs.pringSlaveReplicationInfo()

3、更改oplog大小
(1)oplog默認佔用實例5%大小,入職過程中,如果oplog不夠大,因爲同步時間差,可能導致從節點跟不上主節點。因此需要保證主節點oplog足夠大
(2)更改命令:rs.runCommand({"convertToCapped":"oplog.rs","size":102400000})

4、部署認證的複製
(1)編輯所有配置文件添加
clusterAuthMode=keyFile
keyFile=/usr/local/mongodb/bin/.keyfile
(2)生成rskey祕鑰文件
openssl rand -base64 102 >/usr/local/mongodb/bin/.keyfile
chmod 600 /usr/local/mongodb/bin/.keyfile

 

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