MongoDB 3.2.8 複本集搭建

來源:互聯網
上載者:User

標籤:lan   程式   port   roc   data   size   manual   process   members   

記錄一下,MongoDB的角色建立及配置,以便以後使用

簡介

  Replica Set中文翻譯叫做複本集,不過我並不喜歡把英文翻譯成中文,總是感覺怪怪的。其實簡單來說就是叢集當中包含了多份資料,保證主節點掛掉了,備節點能繼續提供資料服務,提供的前提就是資料需要和主節點一致

 

    Mongodb(M)表示主節點,Mongodb(S)表示備節點,Mongodb(A)表示仲裁節點。主備節點儲存資料,仲裁節點不儲存資料。用戶端同時串連主節點與備節點,不串連仲裁節點。

       預設設定下,主節點提供所有增刪查改服務,備節點不提供任何服務。但是可以通過設定使備節點提供查詢服務,這樣就可以減少主節點的壓力,當用戶端進行資料查詢時,請求自動轉到備節點上。這個設定叫做Read Preference Modes,同時Java用戶端提供了簡單的配置方式,可以不必直接對資料庫進行操作。

       仲裁節點是一種特殊的節點,它本身並不儲存資料,主要的作用是決定哪一個備節點在主節點掛掉之後提升為主節點,所以用戶端不需要串連此節點。這裡雖然只有一個備節點,但是仍然需要一個仲裁節點來提升備節點層級。我開始也不相信必須要有仲裁節點,但是自己也試過沒仲裁節點的話,主節點掛了備節點還是備節點,所以咱們還是需要它的。

介紹完了叢集方案,那麼現在就開始搭建了。

複本集搭建

1、準備設定檔

# mongod.conf# for documentation of all options, see:#   http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.systemLog:  destination: file  logAppend: true  path: /home/dd/mongodb/logs/mongod.log #記錄檔存放目錄# Where and how to store data.storage:  dbPath: /home/dd/mongodb/db #資料檔案存放目錄  journal:    enabled: true#  engine:#  mmapv1:#  wiredTiger:# how the process runsprocessManagement:  fork: true  #以精靈的方式啟用,即在後台運行  pidFilePath: /home/dd/mongodb/mongod.pid  # location of pidfile# network interfacesnet:  port: 27017 #連接埠  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.#security:  #authorization: enabled #operationProfiling:replication:
  replSetName: matchData1#sharding:## Enterprise-Only Options#auditLog:#snmp:

紅色標示出複本集的名稱,複本集以此名稱來識別是否屬於同一個叢集中

2、啟動準備好的一台Mongodb資料庫

bin/mongod –f mongo.conf

3、串連到Mongo的admin庫

bin/mongo ip:port/admin

4、增加使用者

use admindb.createUser({user:"root",pwd:"root",roles:["root"]})use balldb.createUser(    {      user: "basket",      pwd: "basket",    roles: [{role: "readWrite", db: "ballmatch"}]    }  )

5、產生keyFile檔案

在伺服器上執行

openssl  rand  –base64 753  >  mongodb.keyfilechmod 600 keyFile

將keyFile配置到Mongo設定檔,同時開啟驗證

security:  authorization: enabled  keyFile:/home/dd/mongodb/mongodb.keyfile

沒有這個檔案的機器就無法加入複本集,開啟了keyFile,隱含就開啟了auth,這個時候串連複本集就需要進行認證了

6、重啟Mongo服務

7、拷貝到其他伺服器,修改對應得目錄

8、添加複本集配置

cfg={_id:"matchData1", members:[{_id:0, host:‘192.168.10.242:37017‘, priority:1},{_id:1, host:‘192.168.10.242:37018‘, priority:2}, {_id:2, host:‘192.168.10.242:37019‘, arbiterOnly:true}]};rs.initiate(cfg);

cfg:變數名,任意起

_id:”matchData1” 設定檔中配置的複本集名稱

host:Mongodb的ip+連接埠

 

priority:優先順序,數字越大優先順序越高(0-100),優先順序最高的會是初始的主節點,顯示為PRIMARY。如果不想讓某些成員在故障切換時成為primary,則將它們的優先順序設為0(為0永不會成為主節點)

 

當複本集切換失敗時,可用如下代碼重新設定:

rs.reconfig(cfg, {force:true});

9、複本集狀態

rs.status()"health" : 1, #代表機器正常 "stateStr" : "PRIMARY",  #代表是主節點,可讀寫,其中有以下幾下狀態  1. STARTUP:剛加入到複製集中,配置還未載入  2. STARTUP2:配置已載入完,初始化;  3. RECOVERING:正在恢複,不適用讀  4. ARBITER: 仲裁者  5. DOWN:節點不可到達  6. UNKNOWN:未擷取其他節點狀態而不知是什麼狀態,一般發生在只有兩個成員的架構 7. REMOVED:移除複製集  8. ROLLBACK:資料復原,在復原結束時,轉移到RECOVERING或SECONDARY狀態  9. FATAL:出錯。查看日誌grep “replSet FATAL”找出錯原因,重新做同步  10. PRIMARY:主節點  11. SECONDARY:備份節點  

10、維護

前提是這個ip:port必須是使用了同一個relpSet名稱的mongodb執行個體即可

添加副本,在登入到主節點下輸入

rs.add("ip:port"); 

刪除副本 

rs.remove("ip:port");

新增仲裁節點

rs.addArb(“ip:port”);

註:新加入複本集的節點,會自動同步當前複本集已有許可權及資料

MongoDB 3.2.8 複本集搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.