* MongoDB 副本集(repl set)介紹
10年積累的網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有大通免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。早期版本使用master-slave,一主一從和MySQL類似,但slave在此架構(gòu)中為只讀,當主庫宕機后,從庫不能自動切換為主
目前已經(jīng)淘汰master-slave模式,改為副本集,這種模式下有一個主(primary),和多個從(secondary),只讀。支持給它們設(shè)置權(quán)重,當主宕掉后,權(quán)重高的從切換為主
在此架構(gòu)中還可以建立一個仲裁(arbiter)的角色,它只負責裁決,而不存儲數(shù)據(jù)
再此架構(gòu)中讀寫數(shù)據(jù)都是在主上,要想實現(xiàn)負載均衡的目的需要手動指定讀庫的目標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) #初始化,如果查看狀態(tài)有了成員,下面的加載就不用執(zhí)行了。
>rs.add("172.7.15.112") #加載成員
>rs.add("172.7.15.101")
rs.status() //查看狀態(tài)
如果兩個從上的狀態(tài)為"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()會發(fā)現(xiàn)從的狀態(tài)變?yōu)镾ECONDARY
課后答疑:
問:1、實驗中,仲裁者是誰,是不是不要仲裁者也行?
2、實驗中,哪個參數(shù)是配置優(yōu)先級的,如果沒有,他是怎么判斷將哪臺機器作為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 不設(shè)置仲裁也沒有關(guān)系
2 參考文檔,http://www.apelearn.com/bbs/thread-9287-1-1.html
3 對config 重新賦值。
建議多使用搜索引擎嘗試搜一下
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。