溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是MongoDB復(fù)制集

發(fā)布時(shí)間:2020-08-24 16:57:31 來源:億速云 閱讀:214 作者:Leah 欄目:編程語言

什么是MongoDB復(fù)制集?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

一、mongo復(fù)制集簡(jiǎn)介

近年來,隨著大數(shù)據(jù)越來越火,非關(guān)系型數(shù)據(jù)庫的重要性被越來越多的人所認(rèn)知,越來越多的開發(fā)者逐漸加入到NoSQL的陣營(yíng)中。我們知道NoSQL是Not Only SQL的意思,既然如此,很多關(guān)系型數(shù)據(jù)庫所支持的特性在非關(guān)系型數(shù)據(jù)中也是同樣適用,比如復(fù)制集。

什么是MongoDB復(fù)制集

MongoDB是支持?jǐn)?shù)據(jù)復(fù)制的,它在復(fù)制集方面的優(yōu)勢(shì)與其他數(shù)據(jù)復(fù)制集一樣,它通過將數(shù)據(jù)部署在多個(gè)不同的服務(wù)器上,防止因單機(jī)故障而造成數(shù)據(jù)的丟失,借助數(shù)據(jù)冗余來提高數(shù)據(jù)的可靠性和安全性。而且還可以通過復(fù)制技術(shù)構(gòu)建分布式數(shù)據(jù)庫,提高系統(tǒng)的訪問性能和安全性。

MongoDB的復(fù)制集模式是主從復(fù)制。在所有的數(shù)據(jù)庫服務(wù)的機(jī)器中,只有一臺(tái)機(jī)器擔(dān)當(dāng)Primary角色,其余的機(jī)器均是Secondaries。擔(dān)當(dāng)Primary角色的機(jī)器接收所有來自客戶端的寫(Write)操作請(qǐng)求,并完成該操作,從而保證了數(shù)據(jù)的一致性。擔(dān)當(dāng)Primary角色的機(jī)器還能夠把來自客戶端的讀(Read)操作分配給其他機(jī)器(Secondaries),減輕主數(shù)據(jù)庫服務(wù)器的壓力。

二、復(fù)制集創(chuàng)建和配置

1.如果之前開了mongo的服務(wù),那么首先要結(jié)束掉mongo的服務(wù)

cmd:pkill -9 mongo

2.刪除掉之前的dbs和log

cmd:rm -rf /home/m*

3.在三臺(tái)機(jī)器上分別配置dbs和log(這里使用一臺(tái)設(shè)備模擬三臺(tái)設(shè)備做復(fù)制集,所以在一臺(tái)設(shè)備上創(chuàng)建了三個(gè)數(shù)據(jù)庫地址以及日志存放路徑。)

mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog

什么是MongoDB復(fù)制集

4.啟動(dòng)三個(gè)實(shí)例,并且申明屬于同一個(gè)復(fù)制集

①、首先要切換到mongodb目錄下,在執(zhí)行下面的命令。

②、啟動(dòng)三個(gè)實(shí)例

./bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 27017 --replSet fmong --journal 
--smallfiles -storageEngine=mmapv1

--dbpath:指定數(shù)據(jù)庫路徑

--logpath:指定日志存放路徑

--fork:后臺(tái)運(yùn)行

--port:設(shè)置啟動(dòng)的端口

--replSet:設(shè)置同一個(gè)復(fù)制集,復(fù)制集的名稱自定義

--journal:32linux需要這個(gè)參數(shù)才能啟動(dòng),64位不需要這個(gè)參數(shù)

--smallfiles:?jiǎn)?dòng)時(shí)占用較小的空間,如果空間不是很缺少,一般不需要這個(gè)參數(shù)

-storageEngine:設(shè)置數(shù)據(jù)庫的引擎,由于不支持wiredTiger引擎,需要切換支持的引擎,64位系統(tǒng)不需要切換引擎。

什么是MongoDB復(fù)制集

三個(gè)數(shù)據(jù)實(shí)例啟動(dòng)成功截圖:

什么是MongoDB復(fù)制集

③、查看三個(gè)實(shí)例啟動(dòng)成功。

什么是MongoDB復(fù)制集

5、配置復(fù)制集文件,并初始化復(fù)制集

①、首先進(jìn)入任意一個(gè)實(shí)例的mongo客戶端命令模式

./bin/mongo

②、切換到admin

什么是MongoDB復(fù)制集

③、定義變量

var rsconf ={
_id:'fmong',
members:[
{
_id:0,
host:'192.168.135.1:27017'
},
{
_id:1,
host:'192.168.135.1:27018'
},
{
_id:2,
host:'192.168.135.1:27019'
}
]
}

查看變量是否生成打印變量名稱: printjson(rsconf)

什么是MongoDB復(fù)制集

④、根據(jù)上面的配置做初始化:rs.initiate(rsconf)

⑤、查看初始化成功后,各個(gè)節(jié)點(diǎn)的狀態(tài):rs.status()

什么是MongoDB復(fù)制集

6、節(jié)點(diǎn)的增加與刪除操作

①、刪除節(jié)點(diǎn):rs.remove('子節(jié)點(diǎn)的host:port')

②、查看刪除節(jié)點(diǎn)后的復(fù)制集節(jié)點(diǎn)狀態(tài):rs.status()

③、增加節(jié)點(diǎn):rs.add('子節(jié)點(diǎn)的host:port')(注意:使用增加節(jié)點(diǎn)命令添加的host必須是上面配置復(fù)制集變量包含的host在內(nèi)的才可以添加,如果沒有包含的host是添加不進(jìn)去的。如果想添加沒有包含的host需要修改復(fù)制集變量,才可以添加。)

7、修改復(fù)制集的節(jié)點(diǎn)變量和初始化

①、修改之前的復(fù)制集變量,只需要修改里面的host子節(jié)點(diǎn)即可。例如:將三臺(tái)設(shè)備修改為兩臺(tái)設(shè)備。

什么是MongoDB復(fù)制集

②、修改完的變量,初始化要使用reconfig方法。

什么是MongoDB復(fù)制集

三、復(fù)制集添加數(shù)據(jù)

①、在主節(jié)點(diǎn)上添加一條數(shù)據(jù)。

什么是MongoDB復(fù)制集

②、退出主節(jié)點(diǎn),進(jìn)入子節(jié)點(diǎn)

什么是MongoDB復(fù)制集

③、查看子節(jié)點(diǎn)數(shù)據(jù),如果發(fā)現(xiàn)報(bào)錯(cuò)為

什么是MongoDB復(fù)制集

原因:子節(jié)點(diǎn)只能和主節(jié)點(diǎn)通信,別人不能操作,需要將slaveOK改為可操作。需要執(zhí)行如下命令:

rs.slaveOk()

什么是MongoDB復(fù)制集

查看數(shù)據(jù),已經(jīng)同步到27018子節(jié)點(diǎn)上。

什么是MongoDB復(fù)制集

四、模擬主節(jié)點(diǎn)宕機(jī),啟動(dòng)子節(jié)點(diǎn)為主節(jié)點(diǎn)

①、首先在主節(jié)點(diǎn)命令下,切換到admin數(shù)據(jù)庫,然后執(zhí)行關(guān)閉主節(jié)點(diǎn)。

什么是MongoDB復(fù)制集

②、登錄子節(jié)點(diǎn)

什么是MongoDB復(fù)制集


看完上述內(nèi)容,你們掌握什么是MongoDB復(fù)制集的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI