mongodb副本集的搭建

mongodb副本集即客戶端連接到整個副本集,不關心具體哪一臺機器是否掛掉。主服務器負責整個副本集的讀寫,副本集定期同步數據備份,一旦主節(jié)點掛掉,副本節(jié)點就會選舉一個新的主服務器,這一切對于應用服務器不需要關心。副本集中的副本節(jié)點在主節(jié)點掛掉后通過心跳機制檢測到后,就會在集群內發(fā)起主節(jié)點的選舉機制,自動選舉一位新的主服務器。選舉還有個前提條件,參與選舉的節(jié)點數量必須大于副本集總節(jié)點數量的一半,如果已經小于一半了所有節(jié)點保持只讀狀態(tài)。因此,官方推薦我們的副本集機器數量至少為3個:一個主節(jié)點,兩個副本節(jié)點。當然,mongodb副本集中可以有很多類型的節(jié)點,其中有一個仲裁節(jié)點,即當參與選舉的節(jié)點無法選出主節(jié)點時仲裁節(jié)點充當仲裁的作用。仲裁節(jié)點不存儲數據,只是仲裁。所以,我們的副本集可以設置為:1主+1從+1仲裁。

那么我們準備3臺服務器:192.168.198.224(主),192.168.198.225(從),192.168.198.226(仲裁)。

1、分別在每臺機器上下載解壓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、分別在每臺機器上創(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、分別在每臺機器上配置config文件

vim etc/mongod.conf

為了啟動方便,我們可以將mongodb的啟動配置項直接在配置文件中:

dbpath = /usr/local/mongodb/data/db? ? ? ? # 指定數據庫路徑
logpath = /usr/local/mongodb/log/mongod.log? ? ? ? ? # 指定mongodb日志文件
logappend = true ? ? ? ?# 使用追加的方式寫日志
port = 27017 ? ? ? ? ? ? ? #設置端口號為27017
fork = true ? ? ? ? ? ? ? ? ? #設置以守護進程的方式啟動mongod
replSet = myrs ? ? ? ? ? ?#設置副本集的名字為myrs,同一副本集群的replSet名稱必需相同

4、分別在每臺機器上啟動副本集

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

5、初始化副本集

登錄任意一臺機器的mongodb后臺管理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)報錯,那么我們需要檢查三臺服務器的防火墻27017端口是否開放。 如果沒有問題,我們可以查看集群節(jié)點:

rs.status();

至此,整個副本集已經搭建成功了。
那么,我們可以測試一下副本集的基本功能:

1、測試副本集的數據復制功能
此時在我的機器上192.168.198.224是主節(jié)點,我們用mongo來登錄shell。

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

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

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

此時會報錯:

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

因為mongodb默認是從主節(jié)點讀寫數據的,副本節(jié)點上不允許讀,需要設置副本節(jié)點可以讀。

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

此時就可以讀取數據了:

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

控制臺輸出:{ "_id" : ObjectId("59676d711881041abab44477"), "name" : "yaya" }
所以,數據復制的功能是可用的。

2、測試副本集的故障轉移功能
將主節(jié)點192.168.198.224的mongod進程殺死:

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

此時可以看到,192.168.198.225原本是副節(jié)點,此時自動轉換為主節(jié)點。可以通過rs.status()來查看。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容