MongoDB複製集管理最佳化

來源:互聯網
上載者:User

標籤:ssi   一個   mongodb複製   ons   驗證   dea   god   操作記錄   二進位日誌   

本文章將介紹MongoDB複製集的基本配置和管理,分別包括配置從節點可以讀取資料、查看複製集狀態、更改oplog大小、配置帶認證的複製集

  • 複製集的選舉原理

複製是基於動作記錄oplog,相當於Mysql中的二進位日誌,只記錄發生改變的記錄。複製是將主節點的oplog日誌同步並應用到其他從節點的過程。

  • 選舉的原理

節點的類型分為標準(host)節點、被動(passive)節點和仲裁(arbiter)節點。

  • 標準節點可能被選舉為活躍(primary)節點,有選舉權。
  • 被動節點有完整副本,不可能成為活躍節點,有選舉權。
  • 仲裁節點不複製資料,不可能成為活躍節點,只有選舉權。
  • 標準節點和被動節點的區別:priority值高的是標準節點,低的是被動節點。
  • 選舉規則是票高者獲勝,priority是優先權為0~1000的值,相當於額外增加0~1000的票數。選舉結果:票高者獲勝。若票數相同:資料新者獲勝。

  • 配置複製集的優先順序
  • 先建立4個執行個體 教程
  • 設定2個標準節點,一個被動節點,一個仲裁節點。

    > cfg={"_id":"kgcrs","members":[{"_id":0,"host":"192.168.86.128:27017","priority":100},{"_id":1,"host":"192.168.86.128:27018","priority":100},{"_id":2,"host":"192.168.86.128:27019","priority":0},{"_id":3,"host":"192.168.86.128:27020","arbiterOnly":true}]}

    > rs.initiate(cfg)    //初始化配置    > rs.isMaster()    //查看複製集的狀態

  • 類比主節點故障

    # mongod -f /etc/mongod.conf --shutdown   //主節點服務關掉# mongo --port 27018> rs.isMaster()   //查看節點的身份狀態  主節點已經換到27018

  • 類比所有標準節點故障

    # mongod -f /etc/mongod.conf --shutdown   # mongod -f /etc/mongod2.conf --shutdown    # mongo --port 27019> rs.isMaster()   //查看節點身份狀態 可以看到主節點沒有了(當所有標準節點故障,被動節點也不能成為主節點)

  • 允許從節點讀取資料
  • 預設的MongoDB複製集的基本配置和管理,可以使用rs.slaveOK() 命令允許能夠在從節點讀取資料。

    # mongo --port 27018> rs.slaveOk()        //允許預設從節點讀取資料> show dbs

  • 查看複製狀態資訊

  • 查看Master的oplog中繼資料資訊:

    > rs.printReplicationInfo()
  • 查看Slave的同步狀態:

    > rs.printSlaveReplicationInfo()
  • 查看主從配置資訊:

    > rs.conf() //或db.system.replset.find()

  • 更改oplog大小
  • oplog簡介:

oplog:operations log的簡寫,儲存在一個特殊的資料庫中(local),oplog就儲存在其中的oplog.$main集合裡面,這個集合是一個固定集合,新操作會自動替換舊的操作,以保證oplog不會超過預設的大小,其中的每個文檔都代表主節點上執行的一個操作,oplog會包含所有對資料有修改的的操作(查詢操作不會記錄),預設下,oplog大小會佔用64位的執行個體5%的可用磁碟空間。
mongo複製的過程:主節點應用業務操作修改到資料庫中,然後記錄這些操作到oplog中,從節點複製這些oplog,然後應用這些修改。ps:這些操作是非同步。如果從節點的操作已經被主節點落下很遠,oplog日誌在從節點還沒執行完,oplog可能已經輪滾一圈了,從節點跟不上同步,複製就會停下,從節點需要重新做完整的同步,為了避免此種情況,盡量保證主節點的oplog足夠大,能夠存放相當長時間的操作記錄。

    > use local    >  db.oplog.rs.find()             //查看.oplog    > db.oplog.rs.stats()             //查看.oplog內容    > rs.printReplicationInfo()    //查詢oplog的大小及儲存的操作記錄持續的時間長度

  • 這裡僅是單一實例27018的修改,其他執行個體參照如下
  • 關閉服務

     # mongo --port 27018 > use admin > db.shutdownServer()      //關閉服務
  • 登出replication:相關啟動參數,並修改port連接埠號碼27028

    # vim /etc/mongod2.conf 

  • 備份當前節點的所有oplog記錄

    # mongodump --port 27028 --db local --collection ‘oplog.rs‘# mongo --port 27028> use local> db.oplog.rs.drop()    //刪除原來的oplog> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } )    //建立新的> use admin> db.shutdownServer()


  • 開啟replication:相關啟動參數,並修改port連接埠號碼27018

    # vim /etc/mongod2.conf 

    mongod -f /etc/mongod2.confmongo //進入主節點

    rs.stepDown() //讓出主節點位置

  • 部署認證複製
  • 在主節點建立root使用者

    kgcrs:PRIMARY> use adminkgcrs:PRIMARY> db.createUser({"user":"root","pwd":"123","roles":["root"]})
  • 產生4個執行個體的密鑰檔案

     # cd /usr/bin/ # echo "kgcrs key"> kgcrskey1 # echo "kgcrs key"> kgcrskey2 # echo "kgcrs key"> kgcrskey3 # echo "kgcrs key"> kgcrskey4 # chmod 600 kgcrskey{1..4} # vim /etc/mongod.conf  (mongod2.conf /mongod3.conf/mongod4.conf 都要改)security:   keyFile: /usr/bin/kgcrskey1     //(分別為 kgcrskey2、kgcrskey3、kgcrskey4)   clusterAuthMode: keyFile
  • 4個執行個體依次重啟

    # mongod -f /etc/mongod.conf --shutdown# mongod -f /etc/mongod.conf
  • 進入主節點驗證

    > show dbs   #無法查看資料庫> rs.status()   #無法查看複製集

    > use admin    #身份登入驗證> db.auth("root","123")> rs.status()  #可以查看資料庫> show dbs    #可以查看複製集

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.