天天看點

3.4-MongoDB副本集搭建

* MongoDB 副本集(repl set)介紹

早期版本使用master-slave,一主一從和MySQL類似,但slave在此架構中為隻讀,當主庫當機後,從庫不能自動切換為主

目前已經淘汰master-slave模式,改為副本集,這種模式下有一個主(primary),和多個從(secondary),隻讀。支援給它們設定權重,當主宕掉後,權重最高的從切換為主

在此架構中還可以建立一個仲裁(arbiter)的角色,它隻負責裁決,而不存儲資料

再此架構中讀寫資料都是在主上,要想實作負載均衡的目的需要手動指定讀庫的目标server

* MongoDB副本集搭建

三台機器: 172.7.15.111(primary)   172.7.15.112(secondary)    172.7.15.101(secondary) 

編輯三台機器的配置檔案,增加:

replication:

##oplog大小    #類似mysql的二進制日志

  oplogSizeMB: 20  #注意,此處開頭有2個空格

##複制集名稱

  replSetName: aminglinux  #注意,此處開頭有2個空格

分别重新開機三台機器

連接配接主,在主上運作指令mongo 

>use admin

>config={_id:"aminglinux",members:[{_id:0,host:"172.7.15.111:27017"},{_id:1,host:"172.7.15.112:27017"},{_id:2,host:"172.7.15.101:27017"}]} #config類似變量

>rs.initiate(config)      #初始化,如果檢視狀态有了成員,下面的加載就不用執行了。

>rs.add("172.7.15.112")   #加載成員

>rs.add("172.7.15.101")

rs.status() //檢視狀态

如果兩個從上的狀态為"stateStr" : "STARTUP", 則需要進行如下操作

> var config={_id:"aminglinux",members:[{_id:0,host:"172.7.15.111:27017"},{_id:1,host:"172.7.15.112:27017"},{_id:2,host:"172.7.15.101:27017"}]}

>rs.reconfig(config)

此時再次檢視rs.status()會發現從的狀态變為SECONDARY

課後答疑:

問:1、實驗中,仲裁者是誰,是不是不要仲裁者也行?

2、實驗中,哪個參數是配置優先級的,如果沒有,他是怎麼判斷将哪台機器作為primary的?

3、config={_id:"mongo1",members:[{_id:0,host:"10.10.10.60:27017"},{_id:1,host:"10.10.10.50:27017"},{_id:2,host:"10.10.10.70:27017"}]} ,這個指令裡的配置生效後,有沒辦法進行修改?

答:1 不設定仲裁也沒有關系

2 參考文檔,http://www.apelearn.com/bbs/thread-9287-1-1.html

繼續閱讀