您好,登錄后才能下訂單哦!
* 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個空格
分別重啟三臺機器
* MongoDB副本集搭建
連接主,在主上運行命令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
3 對config 重新賦值。
建議多使用搜索引擎嘗試搜一下
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。