復(fù)制集是額外的數(shù)據(jù)副本,是跨多個服務(wù)器同步數(shù)據(jù)的過程,復(fù)制集提供了冗余并增加了數(shù)據(jù)可用性,通過復(fù)制集可以對硬件故障和中斷的服務(wù)進(jìn)行恢復(fù)。
復(fù)制集的優(yōu)勢如下:成都創(chuàng)新互聯(lián)擁有10年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供網(wǎng)站設(shè)計制作、成都網(wǎng)站制作服務(wù),對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、重慶App定制開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名與空間等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。
- 讓數(shù)據(jù)更安全
- 高數(shù)據(jù)可用性(24*7)
- 災(zāi)難恢復(fù)
- 無停機(jī)維護(hù)(如備份、索引重建、故障轉(zhuǎn)移)
- 讀縮放(額外的副本讀取)
- 副本集對應(yīng)用程序是透明的
MongoDB的復(fù)制集至少需要兩個節(jié)點(diǎn)。其中一個是主節(jié)點(diǎn)(Primary),負(fù)責(zé)處理客戶端的請求,其余的都是從節(jié)點(diǎn)(Secondary),負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)。
MongoDB各個節(jié)點(diǎn)常見的搭配方式為:一主一從或一主多從。主節(jié)點(diǎn)記錄其上的所有操作到oplog中,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
客戶端在主節(jié)點(diǎn)寫入數(shù)據(jù),在從節(jié)點(diǎn)讀取數(shù)據(jù),主節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互保障數(shù)據(jù)的一致性。如果其中一個節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)馬上會將業(yè)務(wù)接過來而無須停機(jī)操作。
復(fù)制集特點(diǎn)如下:
- N個節(jié)點(diǎn)的群集
- 任何節(jié)點(diǎn)可作為主節(jié)點(diǎn)
- 所有寫入操作都在主節(jié)點(diǎn)上
- 自動故障轉(zhuǎn)移
- 自動恢復(fù)
如何創(chuàng)建多實(shí)例,在我之前的博客中已經(jīng)寫過,可以參考Yum安裝MongoDB及數(shù)據(jù)庫管理每個實(shí)例創(chuàng)建時都應(yīng)該先創(chuàng)建數(shù)據(jù)文件目錄(mongo)和日志文件(mongod.log),同時在修改配置文件時要注意修改使用不同的端口號在做復(fù)制集時,我們要多修改一個參數(shù),replication的參數(shù)值,并保證多個實(shí)例的該參數(shù)值都保持一致根據(jù)項(xiàng)目要求,需創(chuàng)建額外三個實(shí)例,加上原有的一個實(shí)例,一共四個實(shí)例。
我在做實(shí)驗(yàn)的時候發(fā)現(xiàn),MongoDB中對配置文件的格式也有嚴(yán)格要求,在對replication參數(shù)值進(jìn)行修改時要特別注意
replication:
replSetName: chenrs //該行內(nèi)容需在行首空出兩個空格,不空格或者多空格都會導(dǎo)致服務(wù)啟動失敗
項(xiàng)目示意圖如下:
我們先配置包含三個節(jié)點(diǎn)的復(fù)制集,多出來的一個節(jié)點(diǎn),會在接下來再做一個節(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ù)制集時,要確保從節(jié)點(diǎn)沒有數(shù)據(jù),不然在初始化以后會造成從節(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> //此時節(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)程號
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)日志同步
新聞名稱:配置MongoDB復(fù)制集
網(wǎng)頁地址:http://muchs.cn/article44/pjjihe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、商城網(wǎng)站、移動網(wǎng)站建設(shè)、用戶體驗(yàn)、全網(wǎng)營銷推廣、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)