MongoDB復(fù)制集(一)

前言

在平時的學(xué)習(xí)開發(fā)中,我們一般都是在單點模式下進行的弄痹,也就是使用單臺服務(wù)器饭入,一個mongod服務(wù)器進程。對于單點模式肛真,首先部署起來很方便谐丢,只需要幾個簡單的參數(shù)或者使用默認配置就能將實例啟動,其次單點模式很節(jié)省資源蚓让。但是在生成環(huán)境中乾忱,如果服務(wù)器崩潰或者不可訪問怎么辦?數(shù)據(jù)庫至少有一段時間不可用历极。如果硬盤損壞或?qū)M饭耳,可能需要將數(shù)據(jù)轉(zhuǎn)移到另一個機器上。在最壞的情況下执解,硬盤或網(wǎng)絡(luò)出現(xiàn)問題可能會導(dǎo)致數(shù)據(jù)損壞或者數(shù)據(jù)不可訪問寞肖。這是就可以使用MongoDB的復(fù)制功能,即使一臺或多臺服務(wù)器出錯衰腌,也可以保證應(yīng)用程序正常運行和數(shù)據(jù)安全新蟆。

復(fù)制集介紹

MongoDB復(fù)制集是從傳統(tǒng)主從結(jié)構(gòu)(Master/Slave)演變而來,是由一組擁有相同數(shù)據(jù)集的mongod實例所組成的集群右蕊。

讀寫分離的主從結(jié)構(gòu):
讀寫分離的基本原理就是讓主數(shù)據(jù)庫處理事務(wù)性增琼稻、改、刪(寫)操作饶囚,而從數(shù)據(jù)庫處理查詢(讀)操作帕翻。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到其他從數(shù)據(jù)庫。以SQL為例萝风,主庫負責(zé)寫數(shù)據(jù)嘀掸、讀數(shù)據(jù)。讀庫僅負責(zé)讀數(shù)據(jù)规惰。每次有寫庫操作睬塌,同步更新到讀庫。寫庫就一個歇万,讀庫可以有多個揩晴,采用日志同步的方式實現(xiàn)主庫和多個讀庫的數(shù)據(jù)同步。

一個復(fù)制集包含多個數(shù)據(jù)節(jié)點和一個選舉節(jié)點贪磺。數(shù)據(jù)節(jié)點中僅有一個為主節(jié)點(Primary)硫兰,其它的為從節(jié)點(Secondary)。對于主節(jié)點寒锚,所有的請求都是在它上面完成的劫映,從節(jié)點接收主節(jié)點傳來的操作并以此來保證與主節(jié)點上的數(shù)據(jù)完全一致呻粹。需注意只有主節(jié)點能接收寫操作,從節(jié)點是絕對無法寫入的苏研。不同于MySQL設(shè)置read only的從節(jié)點若有super權(quán)限同樣可進行寫操作等浊。不難看出她紫,復(fù)制集是通過復(fù)制而實現(xiàn)數(shù)據(jù)的冗余而提高數(shù)據(jù)的可靠性戚绕。

replica-set-read-write-operations-primary

  從上圖可以看出,所有的讀寫請求都是由客戶端應(yīng)用程序通過驅(qū)動來指向MongoDB數(shù)據(jù)庫蛹含,寫請求都是指向當(dāng)前數(shù)據(jù)庫的主節(jié)點衅鹿,寫請求執(zhí)行完畢后撒踪,會記錄在主節(jié)點的oplog中(記錄寫操作而不記錄讀操作),從節(jié)點通過主節(jié)點的oplog來進行復(fù)制操作大渤。在默認情況下制妄,讀請求也是指向主節(jié)點的。因為MongoDB復(fù)制集是異步復(fù)制形式泵三,會由于磁盤的刷盤效率和網(wǎng)絡(luò)的原因?qū)е聫墓?jié)點的數(shù)據(jù)相對于主節(jié)點有一點延遲耕捞,驅(qū)動在沒有配置的情況下會指向主庫,也就是當(dāng)前最新的數(shù)據(jù)烫幕。當(dāng)然如果對數(shù)據(jù)的時效性要求不高時可以配置讀操作指向某一個從節(jié)點俺抽,實現(xiàn)讀寫分離。

復(fù)制集特點

  • MongoDB復(fù)制集的主是唯一的较曼,但不是固定的磷斧。
    當(dāng)前主節(jié)點出現(xiàn)故障時,比如網(wǎng)絡(luò)不通等等捷犹,集群會自動容災(zāi)弛饭,通過選舉在從節(jié)點中選出一個合適的充當(dāng)主節(jié)點。我們可以通過配置從節(jié)點優(yōu)先級來決定哪個從節(jié)點盡可能地成為主節(jié)點萍歉。
  • MongoDB有一個大多數(shù)原則侣颂。
    當(dāng)主節(jié)點出故障時,是否能選舉出新的主節(jié)點翠桦,并不是由復(fù)制集中投票節(jié)點存在與否來決定的横蜒,而是由當(dāng)前復(fù)制集成員存活數(shù)量來決定的胳蛮。當(dāng)存活節(jié)點小于等于二分之一時销凑,將全部降為從節(jié)點,只可讀不可寫仅炊。
  • 從庫無法寫入斗幼,這點在前面已經(jīng)介紹。
  • 傳統(tǒng)主從結(jié)構(gòu)僅剩的一絲尊嚴
    在某些情況下抚垄,可能由于硬盤空間的限制蜕窿,從節(jié)點并不想完全復(fù)制主節(jié)點中的數(shù)據(jù)谋逻,只想給特定的數(shù)據(jù)庫做冗余。這時就可以用主從結(jié)構(gòu)桐经,在搭建從節(jié)點時在配置文件中指定only選項毁兆,并把要復(fù)制的數(shù)據(jù)庫的庫名作為參數(shù)放在后面。但是only并不能應(yīng)用于復(fù)制集中阴挣,想象一下气堕,如果當(dāng)前主節(jié)點A擁有三個庫1、2畔咧、3茎芭,從節(jié)點只復(fù)制其中的一個庫1。當(dāng)主節(jié)點A掛了誓沸,則選舉出新的主節(jié)點B梅桩。當(dāng)A恢復(fù)正常重新投入使用,它要從新的主節(jié)點B中復(fù)制數(shù)據(jù)時拜隧,發(fā)現(xiàn)B中沒有2宿百、3庫,那么這時復(fù)制就會出錯洪添,這就是復(fù)制集不支持復(fù)制指定庫的原因犀呼。
  • 限制
    在3.0.0版本中,復(fù)制集最多擁有50個節(jié)點(之前的版本僅支持12個)且參與選舉的數(shù)據(jù)節(jié)點只能有7個薇组,超過該限制就需要使用主從結(jié)構(gòu)外臂。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市律胀,隨后出現(xiàn)的幾起案子宋光,更是在濱河造成了極大的恐慌,老刑警劉巖炭菌,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罪佳,死亡現(xiàn)場離奇詭異,居然都是意外死亡黑低,警方通過查閱死者的電腦和手機赘艳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來克握,“玉大人蕾管,你說我怎么就攤上這事∑邪担” “怎么了掰曾?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長停团。 經(jīng)常有香客問我旷坦,道長掏熬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任秒梅,我火速辦了婚禮旗芬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捆蜀。我一直安慰自己岗屏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布漱办。 她就那樣靜靜地躺著这刷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娩井。 梳的紋絲不亂的頭發(fā)上暇屋,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音洞辣,去河邊找鬼咐刨。 笑死,一個胖子當(dāng)著我的面吹牛扬霜,可吹牛的內(nèi)容都是我干的定鸟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼著瓶,長吁一口氣:“原來是場噩夢啊……” “哼联予!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起材原,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沸久,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后余蟹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卷胯,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年威酒,在試婚紗的時候發(fā)現(xiàn)自己被綠了窑睁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡葵孤,死狀恐怖担钮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佛呻,我是刑警寧澤裳朋,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站吓著,受9級特大地震影響鲤嫡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绑莺,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一暖眼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺裁,春花似錦诫肠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谚殊,卻和暖如春丧鸯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫩絮。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工丛肢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剿干。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓蜂怎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親置尔。 傳聞我的和親對象是個殘疾皇子杠步,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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