部署MongoDB複製集(主從複製、讀寫分離、高可用)

來源:互聯網
上載者:User

標籤:檔案   oplog   start   pen   replica   ini   map   技術分享   mod   

MongoDB 複製集

複製集(Replica Sets)是額外的資料副本,是跨多個伺服器同步資料的過程,複製集提供了冗餘備份並提高了資料的可用性,通過複製集可以對硬體故障和中斷的服務進行恢複。

MongoDB 複製集工作原理
  1. mongodb的複製集至少需要兩個節點。其中一個是主節點(Primary),負責處理用戶端請求,其餘的都是從節點(Secondary),負責複製主節點上的資料。
  2. mongodb各個節點常見的搭配方式為:一主一從、一主多從。主節點記錄其上的所有操作到 oplog 中,從節點定期輪詢主節點擷取這些操作,然後對自己的資料副本執行這些操作,從而保證從節點的資料與主節點一致。
  3. 用戶端在主節點寫入資料,在從節點讀取資料,主節點與從節點進行資料互動保障資料的一致性。如果其中一個節點出現故障,其他節點馬上會將業務接過來而無需停機操作。
MongoDB 複製集的特點及優勢
  • 複製集的特點:

    • N個節點的群集
    • 任何節點都可作為主節點
    • 所有寫入操作都在主節點上
    • 自動容錯移轉
    • 自動回復
  • 複製集的優勢:
    • 讓資料更安全
    • 高資料可用性(24x7)
    • 災難恢複
    • 無停機維護(如備份、索引重建、容錯移轉)
    • 讀縮放(額外的副本讀取)
    • 複本集對應用程式是透明的
MongoDB 複製集部署

我們可以在一台伺服器上建立多執行個體,來做複製集
MongoDB安裝及建立多執行個體詳解在博文CentOS 7安裝MongoDB(最新版4.0)

配置複製集
  1. 建立4個 MongoDB 執行個體
    # 建立執行個體的資料目錄mkdir -p /data/mongodb/mongodb{1,2,3,4} # 建立執行個體的日誌目錄mkdir -p /data/logs # 建立執行個體的記錄檔touch /data/logs/mongodb{1,2,3,4}.log  # 賦予記錄檔許可權 chmod 777 /data/logs/mongodb*.log  #建立執行個體的設定檔存放位置 mkdir -p /data/conf

     

  2. 建立設定檔,開啟複製集功能
    這裡博主偷了個小懶,將設定檔存放在之前建立的 /data/conf/ 目錄下,後面建立的啟動指令碼為實驗機的相對路徑
    # vim /data/conf/mongodb1.conf  //簡易配置為下,    dbpath=/data/mongodb/mongodb1    logpath=/data/logs/mongodb1.log    port=27017    replSet=testrc   #配置參數值為testrc    logappend=true    fork=true    maxConns=5000      storageEngine=mmapv1

    需要注意其他三個執行個體的設定檔中的資料檔案存放位置及記錄檔和連接埠要改
     

  3. 編寫指令碼方便對4條執行個體進行控制(這裡用的是相對路徑,請根據實際修改)
    [[email protected] conf]# cd /usr/local/mongodb/bin[[email protected] bin]# vim mongodb #!/bin/bashINSTANCE=$1ACTION=$2case "$ACTION" in‘start‘)/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;‘stop‘)/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown;;‘restart‘)/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;esac [[email protected] bin]# chmod +x mongodb[[email protected] bin]# ./mongodb mongodb1 restart[[email protected] bin]# ./mongodb mongodb2 restart[[email protected] bin]# ./mongodb mongodb3 restart[[email protected] bin]# ./mongodb mongodb4 restart[[email protected] bin]# netstat -ntap | grep mongod


     

  4. 配置三個節點的複製集
     
    4.1 查看複製集的狀態資訊
    mongo    #(預設連接埠:27017)> rs.status()


     
    4.2 定義cfg初始化參數(這裡添加三台,剩下的那台實驗添加節點功能)

    > cfg={"_id":"testrc","members":[{"_id":0,"host":"192.168.125.119:27017"},{"_id":1,"host":"192.168.125.119:27018"},{"_id":2,"host":"192.168.125.119:27019"}]}


     
    4.3 啟動複製集功能,初始化配置時保證從節點沒有資料,保持主從節點資料同步

    > rs.initiate(cfg)

     

  5. 添加節點
    testrc:PRIMARY>  rs.add("192.168.125.119:27020")

     

  6. 刪除節點
    testrc:PRIMARY>  rs.remove("192.168.125.119:27020")

部署MongoDB複製集(主從複製、讀寫分離、高可用)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.