Mongodb複製集

  • Mongodb複製集簡介
    Mongodb複製集由一組Mongod實例(進程)組成,包含一個Primary節點和多個Secondary節點,Mongodb Driver(客戶端)的所有數據都寫入Primary,Secondary從Primary同步寫入的數據,以保持複製集內所有成員存儲相同的數據集,提供數據的高可用。
    客戶端在主節點寫入數據,在從節點讀取數據,主節點和從節點進行數據交互保證數據一致性,如果其中一個節點出了故障,其他發節點馬上將業務接過來無需停機操作
  • 複製集的優勢

    讓數據更安全
    搞數據可用性
    災難恢復
    無停機維護(如備份,重建索引,故障轉移)
    讀縮放(額外的副本讀取)
    副本集對應用程序是透明的

  • 複製集的特點

    N個幾點的羣集
    任何節點可作爲主節點
    所有寫入操作都在主節點上
    自動故障轉移
    自動恢復

  • 複製集部署
  • 安裝好的MongoDB
  • 添加配置4個實例
  • 點擊:安裝及實例添加教程

    # mkdir -p /data/mongodb/mongodb{2,3,4}     //創建數據目錄
    # mkdir /data/mongodb/logs
    # touch /data/mongodb/logs/mongodb{2,3,4}.log    //創建日誌文件
    # cd /data/mongodb/logs/
    # chmod 777 *.log     //賦予權限
  • 編輯4個實例的日誌文件

    # cp -p /etc/mongod.conf /etc/mongod2.conf
    # vim /etc/mongod2.conf
         path: /data/mongodb/logs/mongodb2.log               //每個實例指定自己日誌目錄
         dbPath: /data/mongodb/mongodb2                        //每個實例指定自己的數據目錄
         port: 27018                                                          //指定端口分別爲27017、 27018、 27019 、 27020
            .......
         replication:                                           //開啓所有實例的複製參數:定義一個 replSetName: kgcrs
                    replSetName: kgcrs
  • 啓動所有實例

    # mongod -f /etc/mongod.conf
    # mongo --port 27017
    
    # mongod -f /etc/mongod2.conf
    # mongo --port 27018
    
    # mongod -f /etc/mongod3.conf
    # mongo --port 27019
    
    # mongod -f /etc/mongod4.conf
    # mongo --port 27020
    # netstat -ntap | grep mongod

    Mongodb複製集

  • 初始化配置複製集
  • 確定節點上沒有數據

        # mongo   //進入實例
        > show dbs
        > rs.status()  //查看複製集狀態
        > cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.233.128:27017"},{"_id":1,"host":"192.168.233.128:27018"},{"_id":2,"host":"192.168.233.128:27019"}]}
         // 定義cfg初始化參數  id 是之前配置文件裏定義的,成員(3個  id分別定義 0 1 2   IP端口號27017、27018、27019)
         >  rs.initiate(cfg)     //啓動複製集
         >  rs.status()  //查看此時可以查看到複製狀態了

    Mongodb複製集

  • 增加和刪除節點
  • 配置啓動複製集後可以通過 rs.add() 和rs.remove() 來增加和刪除節點

    rs.add("192.168.233.128:27020") //增加節點
    rs.status()
    Mongodb複製集
    rs.remove("192.168.233.128:27020") //刪除節點

    • MongoDB複製集的切換
    • 當節點出現故障會自動切換到其他節點,管理員也可以手動切換

      # ps aux | grep  mongod

Mongodb複製集

        # kill -9 61070    //關閉主節點    複製集會自動切換
        > rs.status()   //查看
  • 手動切換

    kgcrs:PRIMARY> rs.freeze(30)      //PRIMARY暫停30s不參與選舉
    kgcrs:PRIMARY> rs.stepDown(60,30)   //交出主節點位置,維持從節點狀態不少於60秒,等待30秒使主節點和從節點日誌同步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章