mongodb副本集的搭建

mongodb副本集即客戶端連接到整個(gè)副本集缤削,不關(guān)心具體哪一臺(tái)機(jī)器是否掛掉瘦棋。主服務(wù)器負(fù)責(zé)整個(gè)副本集的讀寫(xiě)猖闪,副本集定期同步數(shù)據(jù)備份鲜棠,一旦主節(jié)點(diǎn)掛掉,副本節(jié)點(diǎn)就會(huì)選舉一個(gè)新的主服務(wù)器萧朝,這一切對(duì)于應(yīng)用服務(wù)器不需要關(guān)心岔留。副本集中的副本節(jié)點(diǎn)在主節(jié)點(diǎn)掛掉后通過(guò)心跳機(jī)制檢測(cè)到后夏哭,就會(huì)在集群內(nèi)發(fā)起主節(jié)點(diǎn)的選舉機(jī)制检柬,自動(dòng)選舉一位新的主服務(wù)器。選舉還有個(gè)前提條件,參與選舉的節(jié)點(diǎn)數(shù)量必須大于副本集總節(jié)點(diǎn)數(shù)量的一半何址,如果已經(jīng)小于一半了所有節(jié)點(diǎn)保持只讀狀態(tài)里逆。因此,官方推薦我們的副本集機(jī)器數(shù)量至少為3個(gè):一個(gè)主節(jié)點(diǎn)用爪,兩個(gè)副本節(jié)點(diǎn)原押。當(dāng)然,mongodb副本集中可以有很多類型的節(jié)點(diǎn)偎血,其中有一個(gè)仲裁節(jié)點(diǎn)诸衔,即當(dāng)參與選舉的節(jié)點(diǎn)無(wú)法選出主節(jié)點(diǎn)時(shí)仲裁節(jié)點(diǎn)充當(dāng)仲裁的作用。仲裁節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù)颇玷,只是仲裁笨农。所以,我們的副本集可以設(shè)置為:1主+1從+1仲裁帖渠。

那么我們準(zhǔn)備3臺(tái)服務(wù)器:192.168.198.224(主)谒亦,192.168.198.225(從),192.168.198.226(仲裁)空郊。

1份招、分別在每臺(tái)機(jī)器上下載解壓mongodb安裝包

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.6.tgz
tar -zxvf mongodb-linux-x86_64-amazon-3.4.6.tgz
mv mongodb-linux-x86_64-amazon-3.4.6/ /usr/local/mongodb

2、分別在每臺(tái)機(jī)器上創(chuàng)建mongodb的data狞甚、log以及配置目錄

cd /usr/local/mongodb
mkdir -p data/db
mkdir log
touch log/mongod.log
mkdir etc
touch etc/mongod.conf

3锁摔、分別在每臺(tái)機(jī)器上配置config文件

vim etc/mongod.conf

為了啟動(dòng)方便,我們可以將mongodb的啟動(dòng)配置項(xiàng)直接在配置文件中:

dbpath = /usr/local/mongodb/data/db? ? ? ? # 指定數(shù)據(jù)庫(kù)路徑
logpath = /usr/local/mongodb/log/mongod.log? ? ? ? ? # 指定mongodb日志文件
logappend = true ? ? ? ?# 使用追加的方式寫(xiě)日志
port = 27017 ? ? ? ? ? ? ? #設(shè)置端口號(hào)為27017
fork = true ? ? ? ? ? ? ? ? ? #設(shè)置以守護(hù)進(jìn)程的方式啟動(dòng)mongod
replSet = myrs ? ? ? ? ? ?#設(shè)置副本集的名字為myrs哼审,同一副本集群的replSet名稱必需相同

4鄙漏、分別在每臺(tái)機(jī)器上啟動(dòng)副本集

cd /usr/local/mongodb
./bin/mongod -f ./etc/mongod.conf ? ?#指定以mongod.conf配置啟動(dòng)mongod

5、初始化副本集

登錄任意一臺(tái)機(jī)器的mongodb后臺(tái)管理shell:

cd /usr/local/mongodb
./bin/mongo
use admin
config = {
"_id":"myrs",
"members":[
? {"_id":0,"host":"192.168.198.224:27017"},
? {"_id":1,"host":"192.168.198.225:27017"},
? {"_id":2,"host":"192.168.198.226:27017",arbiterOnly:true}
]
}
rs.initiate(config); ? #初始化配置

注意:如果執(zhí)行rs.initiate(config)報(bào)錯(cuò)棺蛛,那么我們需要檢查三臺(tái)服務(wù)器的防火墻27017端口是否開(kāi)放怔蚌。 如果沒(méi)有問(wèn)題,我們可以查看集群節(jié)點(diǎn):

rs.status();

至此旁赊,整個(gè)副本集已經(jīng)搭建成功了桦踊。
那么,我們可以測(cè)試一下副本集的基本功能:

1终畅、測(cè)試副本集的數(shù)據(jù)復(fù)制功能
此時(shí)在我的機(jī)器上192.168.198.224是主節(jié)點(diǎn)籍胯,我們用mongo來(lái)登錄shell。

cd /usr/local/mongodb
./bin/mongo
use test? #創(chuàng)建test數(shù)據(jù)庫(kù)
db.testdb.insert({"name":"yaya"}); ? ? ? #插入數(shù)據(jù)

我們用副本節(jié)點(diǎn)登錄shell离福,我這里是192.168.198.225:

cd /usr/local/mongodb
./bin/mongo
use test
show tables

此時(shí)會(huì)報(bào)錯(cuò):

[thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}?

因?yàn)閙ongodb默認(rèn)是從主節(jié)點(diǎn)讀寫(xiě)數(shù)據(jù)的杖狼,副本節(jié)點(diǎn)上不允許讀,需要設(shè)置副本節(jié)點(diǎn)可以讀妖爷。

myrs:SECONDARY> db.getMongo().setSlaveOk();

此時(shí)就可以讀取數(shù)據(jù)了:

repset:SECONDARY> db.testdb.find();

控制臺(tái)輸出:{ "_id" : ObjectId("59676d711881041abab44477"), "name" : "yaya" }
所以蝶涩,數(shù)據(jù)復(fù)制的功能是可用的。

2、測(cè)試副本集的故障轉(zhuǎn)移功能
將主節(jié)點(diǎn)192.168.198.224的mongod進(jìn)程殺死:

myrs:PRIMARY> use admin
myrs:PRIMARY> db.shutdownServer()

此時(shí)可以看到绿聘,192.168.198.225原本是副節(jié)點(diǎn)嗽上,此時(shí)自動(dòng)轉(zhuǎn)換為主節(jié)點(diǎn)∠ㄈ粒可以通過(guò)rs.status()來(lái)查看兽愤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挪圾,隨后出現(xiàn)的幾起案子浅萧,更是在濱河造成了極大的恐慌,老刑警劉巖哲思,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惯殊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡也殖,警方通過(guò)查閱死者的電腦和手機(jī)土思,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忆嗜,“玉大人己儒,你說(shuō)我怎么就攤上這事±粒” “怎么了闪湾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绩卤。 經(jīng)常有香客問(wèn)我途样,道長(zhǎng),這世上最難降的妖魔是什么濒憋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任何暇,我火速辦了婚禮,結(jié)果婚禮上凛驮,老公的妹妹穿的比我還像新娘裆站。我一直安慰自己,他們只是感情好黔夭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布宏胯。 她就那樣靜靜地躺著,像睡著了一般本姥。 火紅的嫁衣襯著肌膚如雪肩袍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天婚惫,我揣著相機(jī)與錄音氛赐,去河邊找鬼魂爪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鹰祸,可吹牛的內(nèi)容都是我干的甫窟。 我是一名探鬼主播密浑,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蛙婴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了尔破?” 一聲冷哼從身側(cè)響起街图,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懒构,沒(méi)想到半個(gè)月后餐济,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胆剧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年絮姆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩霍。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篙悯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铃绒,到底是詐尸還是另有隱情鸽照,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布颠悬,位于F島的核電站矮燎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赔癌。R本人自食惡果不足惜诞外,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灾票。 院中可真熱鬧浅乔,春花似錦、人聲如沸铝条。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)班缰。三九已至贤壁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埠忘,已是汗流浹背脾拆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工馒索, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人名船。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓绰上,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親渠驼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜈块,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容