復(fù)制集是額外的數(shù)據(jù)副本,是跨多個(gè)服務(wù)器同步數(shù)據(jù)的過(guò)程,復(fù)制集提供了冗余并增加了數(shù)據(jù)可用性,通過(guò)復(fù)制集可以對(duì)硬件故障和中斷的服務(wù)進(jìn)行恢復(fù)。
青川網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,青川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為青川近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的青川做網(wǎng)站的公司定做!
復(fù)制集的優(yōu)勢(shì)如下:
- 讓數(shù)據(jù)更安全
- 高數(shù)據(jù)可用性(24*7)
- 災(zāi)難恢復(fù)
- 無(wú)停機(jī)維護(hù)(如備份、索引重建、故障轉(zhuǎn)移)
- 讀縮放(額外的副本讀?。?/li>
- 副本集對(duì)應(yīng)用程序是透明的
MongoDB的復(fù)制集至少需要兩個(gè)節(jié)點(diǎn)。其中一個(gè)是主節(jié)點(diǎn)(Primary),負(fù)責(zé)處理客戶端的請(qǐng)求,其余的都是從節(jié)點(diǎn)(Secondary),負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)。
MongoDB各個(gè)節(jié)點(diǎn)常見(jiàn)的搭配方式為:一主一從或一主多從。主節(jié)點(diǎn)記錄其上的所有操作到oplog中,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
客戶端在主節(jié)點(diǎn)寫(xiě)入數(shù)據(jù),在從節(jié)點(diǎn)讀取數(shù)據(jù),主節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互保障數(shù)據(jù)的一致性。如果其中一個(gè)節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)馬上會(huì)將業(yè)務(wù)接過(guò)來(lái)而無(wú)須停機(jī)操作。
復(fù)制集特點(diǎn)如下:
- N個(gè)節(jié)點(diǎn)的群集
- 任何節(jié)點(diǎn)可作為主節(jié)點(diǎn)
- 所有寫(xiě)入操作都在主節(jié)點(diǎn)上
- 自動(dòng)故障轉(zhuǎn)移
- 自動(dòng)恢復(fù)
如何創(chuàng)建多實(shí)例,在我之前的博客中已經(jīng)寫(xiě)過(guò),可以參考Yum安裝MongoDB及數(shù)據(jù)庫(kù)管理每個(gè)實(shí)例創(chuàng)建時(shí)都應(yīng)該先創(chuàng)建數(shù)據(jù)文件目錄(mongo)和日志文件(mongod.log),同時(shí)在修改配置文件時(shí)要注意修改使用不同的端口號(hào)在做復(fù)制集時(shí),我們要多修改一個(gè)參數(shù),replication的參數(shù)值,并保證多個(gè)實(shí)例的該參數(shù)值都保持一致根據(jù)項(xiàng)目要求,需創(chuàng)建額外三個(gè)實(shí)例,加上原有的一個(gè)實(shí)例,一共四個(gè)實(shí)例。
我在做實(shí)驗(yàn)的時(shí)候發(fā)現(xiàn),MongoDB中對(duì)配置文件的格式也有嚴(yán)格要求,在對(duì)replication參數(shù)值進(jìn)行修改時(shí)要特別注意
replication:
replSetName: chenrs //該行內(nèi)容需在行首空出兩個(gè)空格,不空格或者多空格都會(huì)導(dǎo)致服務(wù)啟動(dòng)失敗
項(xiàng)目示意圖如下:
我們先配置包含三個(gè)節(jié)點(diǎn)的復(fù)制集,多出來(lái)的一個(gè)節(jié)點(diǎn),會(huì)在接下來(lái)再做一個(gè)節(jié)點(diǎn)添加的操作
mongo
chen={"_id":"chenrs","members":[{"_id":0,"host":"172.16.10.27:27017"},{"_id":1,"host":"172.16.10.27:27018"},{"_id":2,"host":"172.16.10.27:27019"}]}
在初始化復(fù)制集時(shí),要確保從節(jié)點(diǎn)沒(méi)有數(shù)據(jù),不然在初始化以后會(huì)造成從節(jié)點(diǎn)服務(wù)器的數(shù)據(jù)丟失。
rs.initiate(chen)
chenrs:SECONDARY> rs.status()
{
"set" : "chenrs",
"date" : ISODate("2018-07-14T14:40:20.756Z"),
··· //省略部分內(nèi)容
"members" : [
{
"_id" : 0,
"name" : "172.16.10.27:27017",
"health" : 1, //健康值為1,代表該節(jié)點(diǎn)處于運(yùn)行良好狀態(tài)
"state" : 1, //1代表主
"stateStr" : "PRIMARY", //處于peimary狀態(tài)
··· //省略部分內(nèi)容
},
{
"_id" : 1,
"name" : "172.16.10.27:27018",
"health" : 1,
"state" : 2, //2代表從
"stateStr" : "SECONDARY", //處于secondary狀態(tài)
··· //省略部分內(nèi)容
},
{
"_id" : 2,
"name" : "172.16.10.27:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
··· //省略部分內(nèi)容
}
}
chenrs:PRIMARY> //此時(shí)節(jié)點(diǎn)狀態(tài)已經(jīng)發(fā)生轉(zhuǎn)變
rs.add("172.16.10.27:27020")
rs.remove("172.16.10.27:27020")
ps aux | grep mongod //查詢本地的節(jié)點(diǎn)的進(jìn)程號(hào)
kill -9 40882 //殺死主節(jié)點(diǎn)進(jìn)程
chenrs:SECONDARY> rs.status()
{
"set" : "chenrs",
"date" : ISODate("2018-07-14T15:21:21.426Z"),
"myState" : 2,
"term" : NumberLong(2),
"syncingTo" : "172.16.10.27:27019",
"syncSourceHost" : "172.16.10.27:27019",
"syncSourceId" : 2,
··· //省略部分內(nèi)容
"members" : [
{
"_id" : 0,
"name" : "172.16.10.27:27017",
"health" : 0, //健康值為0,處于停機(jī)狀態(tài)
"state" : 8,
"stateStr" : "(not reachable/healthy)",
··· //省略部分內(nèi)容
},
{
"_id" : 1,
"name" : "172.16.10.27:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
··· //省略部分內(nèi)容
},
{
"_id" : 2,
"name" : "172.16.10.27:27019",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
··· //省略部分內(nèi)容
}
}
rs.freeze(30) //暫停30s不參與選舉
rs.stepDown(60,30) //交出主節(jié)點(diǎn)位置,維持從節(jié)點(diǎn)狀態(tài)不少于60秒,等待30秒使主節(jié)點(diǎn)和從節(jié)點(diǎn)日志同步
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。