1. 程式人生 > >2.33mongodb副本集介紹~ 搭建以及測試

2.33mongodb副本集介紹~ 搭建以及測試

實現負載均衡 glin 都是 replicat 一個 錯誤 lin roc ror

2.33mongodb副本集介紹
早期版本使用master-slave,一主一從和MySQL類似,但slave在此架構中為只讀,當主庫宕機後,從庫不能自動切換為主
目前已經淘汰master-slave模式,改為副本集,這種模式下有一個主(primary),和多個從(secondary),只讀。支持給它們設置權重,當主宕掉後,權重最高的從切換為主
在此架構中還可以建立一個仲裁(arbiter)的角色,它只負責裁決,而不存儲數據
再此架構中讀寫數據都是在主上,要想實現負載均衡的目的需要手動指定讀庫的目標server

技術分享圖片

2.34mongodb副本集搭建

三臺機器: 192.168.133.130(primary) 192.168.133.132(secondary) 192.168.133.133(secondary)

編輯三臺機器的配置文件,更改或增加:
replication://把此行前面的#刪除
##oplog大小
oplogSizeMB: 20//前面有兩個空格
##復制集名稱
replSetName: aminglinux//前面有兩個空格
分別重啟三臺機器

連接主,在主上運行命令mongo

use admin
config={_id:"aminglinux",members:[{_id:0,host:"192.168.133.130:27017"},{_id:1,host:"192.168.133.132:27017"},{_id:2,host:"192.168.133.133:27017"}]}

rs.initiate(config)
rs.status() //查看狀態
如果兩個從上的狀態為"stateStr" : "STARTUP", 則需要進行如下操作
rs.add
var config={_id:"aminglinux",members:[{_id:0,host:"192.168.133.130:27017"},{_id:1,host:"192.168.133.132:27017"},{_id:2,host:"192.168.133.133:27017"}]}
rs.reconfig(config)
此時再次查看rs.status()會發現從的狀態變為SECONDARY

2.35mongodb副本集測試
主上建庫,建集合

use mydb
db.acc.insert({AccountID:1,UserName:"123",password:"123456"})
show dbs
從上查看
show dbs
若出現錯誤Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" },需要執行
rs.slaveok()

默認三臺機器權重都為1,如果任何一個權重設置為比其他的高,則該臺機器馬上切換為primary角色,所以我們預設三臺機器的權重分別為:130:3,132:2,133:1
在主上執行
cfg = rs.conf()
cfg.members[0].priority = 3
cfg.members[1].priority = 2
cfg.members[2].priority = 1
rs.reconfig(cfg)
這樣的話,第二個節點將會成為候選主節點。
主上執行 iptables -I INPUT -p tcp --dport 27017 -j DROP

2.33mongodb副本集介紹~ 搭建以及測試