成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MongoDB復(fù)制集成員及狀態(tài)轉(zhuǎn)換

darryrzhong / 2806人閱讀

摘要:大體分為成員的角色及轉(zhuǎn)換成員狀態(tài)及轉(zhuǎn)換兩部分。每個(gè)復(fù)制集成員在啟動(dòng)后,都先進(jìn)入狀態(tài),然后加載成員的復(fù)制集配置,之后進(jìn)入到狀態(tài)。選舉行為除了受和兩個(gè)屬性影響外,成員的狀態(tài)也會(huì)影響選舉,僅有和五種狀態(tài)的成員允許進(jìn)行投票操作。

此文已由作者溫正湖授權(quán)網(wǎng)易云社區(qū)發(fā)布。

歡迎訪問(wèn)網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營(yíng)經(jīng)驗(yàn)。

復(fù)制集(Replica Set)是MongoDB核心組件,相比早期版本采用的主從(Master-Slave)架構(gòu),復(fù)制集具有很多天然的優(yōu)勢(shì),包括自動(dòng)故障恢復(fù)、多機(jī)房部署、讀寫行為控制等。本文介紹復(fù)制集中最基礎(chǔ)的部分,就是復(fù)制集成員(Replica Set Member)。大體分為成員的角色及轉(zhuǎn)換、成員狀態(tài)及轉(zhuǎn)換兩部分。

先來(lái)說(shuō)說(shuō)成員角色,可分為Primary、Secondary和Arbiter三類。其中前兩種是常規(guī)角色,每個(gè)復(fù)制集在正常狀態(tài)下都會(huì)有這兩種角色,Arbiter是一種特殊角色,其不包含用戶數(shù)據(jù),僅在選舉時(shí)起作用。在這之中,Secondary又可以細(xì)分出很多熟悉,詳見(jiàn)下面描述。

MongoDB在分布式架構(gòu)上與Raft相類似,其Leader被稱為Primary,F(xiàn)ollower稱為Secondary,但MongoDB中沒(méi)有定義candidate角色。Primary即復(fù)制集的主節(jié)點(diǎn),是唯一有權(quán)限接受客戶端寫請(qǐng)求的節(jié)點(diǎn),會(huì)將所有的插入和更新操作記錄到oplog中,Primary也是默認(rèn)所有讀請(qǐng)求的目標(biāo)節(jié)點(diǎn)。Secondary復(fù)制Primary(或其他Secondary)的oplog記錄并本地回放,來(lái)保持與Primary數(shù)據(jù)一致,可設(shè)置為允許客戶端讀,但默認(rèn)情況下Secondary不允許讀,需要設(shè)置slaveok參數(shù)。

Arbiter與上述兩種角色不同,其不包含用戶數(shù)據(jù)副本,復(fù)制集中添加Arbiter的目的僅僅是為了選主操作。通常在擁有偶數(shù)個(gè)節(jié)點(diǎn)的復(fù)制集中添加(且僅能添加)一個(gè)Arbiter,這樣可以使一次選舉中達(dá)到大多數(shù)(majority)而避免選舉分裂(split vote)。如下所示:

當(dāng)Primary因?yàn)槟承┰驋斓艋蚪导?jí)時(shí),Secondary可通過(guò)選舉成為新的Primary,原Primary恢復(fù)并重新加入復(fù)制集后,變?yōu)镾econdary。Arbiter由于不包含用戶數(shù)據(jù),所以不可能成為Primary。這是他們間的相互轉(zhuǎn)換關(guān)系。Primary、Secondary和Arbiter應(yīng)獨(dú)立部署在不同的網(wǎng)絡(luò)節(jié)點(diǎn)上,對(duì)于云環(huán)境下,也不能位于相同的宿主機(jī)上,確保相互間數(shù)據(jù)安全性和選舉獨(dú)立性。

一個(gè)復(fù)制集中僅有一個(gè)Primary,在某些特殊場(chǎng)景下,可能沒(méi)有Primary。Arbiter在集群中不是必須的。所以,集群中最普通的角色是Secondary,一般不少于2個(gè)。不同的Secondary可以有不同的屬性,處于不同的狀態(tài)中。Secondary屬性有如下幾類:

與選舉相關(guān)的屬性:

1、 是否能被選為Primary,該屬性由priority控制,priority越高,就越有機(jī)會(huì)成為Primary,通常情況下,Primary總是復(fù)制集中priority最高的成員,priority為0的Secondary不能被選為Primary,該特性一般用于跨機(jī)房部署時(shí),避免failover后新Primary切到另一個(gè)機(jī)房;

2、 是否有選舉權(quán),MongoDB復(fù)制集可以有多大50個(gè)成員,但僅允許7個(gè)成員有選舉權(quán),該屬性由votes控制,votes為0的成員沒(méi)有選舉權(quán),但可以否決選舉,也可以成為Primary(可以理解為無(wú)法投贊成票,都可以投反對(duì)票和發(fā)起選舉,因?yàn)楸贿x舉權(quán)由priority控制)。MongoDB 3.0版本開(kāi)始,不允許設(shè)置成員的votes大于1。

與客戶端相關(guān)的屬性:

1、客戶端是否可見(jiàn),該參數(shù)由hidden控制,hidden為true表示不可見(jiàn),客戶端無(wú)法從該節(jié)點(diǎn)讀取數(shù)據(jù),mongos不會(huì)跟其交互;由于對(duì)客戶端不可見(jiàn),則肯定不能被選舉為Primary,所以其priority屬性必須為0;該節(jié)點(diǎn)一般用于進(jìn)行備份等用途。

與數(shù)據(jù)延遲相關(guān)的屬性:

1、slaveDelay用于控制該Secondary節(jié)點(diǎn)跟Primary節(jié)點(diǎn)的復(fù)制延遲關(guān)系,例如slaveDelay為3600,表示其數(shù)據(jù)相比Primary落后1小時(shí),延遲判斷是通過(guò)oplog中的信息來(lái)確定。該屬性一般作為在線的歷史備份,用來(lái)回滾人為操作導(dǎo)致的錯(cuò)誤,包括誤刪除數(shù)據(jù)庫(kù)或集合等;該屬性潛在地需要priority屬性為0,hidden屬性為true;

可以看出,相比MySQL的Replication,MongoDB的Replica Set成員的類型和屬性更為豐富,當(dāng)然,主要原因是MySQL目前還是Master-Slave主從復(fù)制,所以與選舉相關(guān)的屬性或角色就沒(méi)有存在的必要。但,MySQL也有類似的slaveDelay功能。另外,尚處于實(shí)驗(yàn)室狀態(tài)MySQL Group Replication正式發(fā)布將會(huì)驚動(dòng)數(shù)據(jù)庫(kù)界。

聊完類型和屬性,下面再來(lái)看看成員狀態(tài),不多不少,MongoDB一共有10種狀態(tài),官方將其分為3大類,核心狀態(tài)(Core States)為三種成員類型對(duì)應(yīng)的屬性(PRIMARY/SECONDARY/ARBITER),還有7種屬性,被分為其他狀態(tài)(Other States)和錯(cuò)誤狀態(tài)(Error States)兩類。

按照時(shí)間序,其他狀態(tài)分別為STARTUP、STARTUP2和RECOVERING。每個(gè)復(fù)制集成員在mongod啟動(dòng)后,都先進(jìn)入STARTUP狀態(tài),然后加載成員的復(fù)制集配置,之后進(jìn)入到STARTUP2狀態(tài)。如果該成員需要進(jìn)行初始同步(initial sync),那么它將長(zhǎng)期處于該狀態(tài),知道同步完所有的數(shù)據(jù)和索引。隨后進(jìn)入到RECOVERING狀態(tài),處于該狀態(tài)的成員不能接受客戶端的讀請(qǐng)求,也不能被選舉為Primary,但可以進(jìn)行投票選舉。

錯(cuò)誤狀態(tài)如下所示:若成員已加入了復(fù)制集,但還未進(jìn)行狀態(tài)信息同步的,會(huì)被其他復(fù)制集成員標(biāo)記為UNKNOWN;若成員不再能夠通過(guò)心跳來(lái)進(jìn)行狀態(tài)同步,即失去聯(lián)系,則被其他成員標(biāo)記為DOWN;REMOVED表示該成員已經(jīng)被移出復(fù)制集;成員處于rollback過(guò)程時(shí),狀態(tài)為ROLLBACK,該狀態(tài)在舊的primary重新加入復(fù)制集時(shí)可能出現(xiàn),用于回滾其上還未同步到其他Secondary的操作;FATAL狀態(tài)表示成員遇到了無(wú)法恢復(fù)的錯(cuò)誤,必須進(jìn)行人工處理。

選舉行為除了受vote和priority兩個(gè)屬性影響外,成員的狀態(tài)也會(huì)影響選舉,僅有PRIMARY, SECONDARY, RECOVERING, ARBITER和ROLLBACK五種狀態(tài)的成員允許進(jìn)行投票操作。

網(wǎng)易云免費(fèi)體驗(yàn)館,0成本體驗(yàn)20+款云產(chǎn)品!

更多網(wǎng)易技術(shù)、產(chǎn)品、運(yùn)營(yíng)經(jīng)驗(yàn)分享請(qǐng)點(diǎn)擊。

文章來(lái)源: 網(wǎng)易云社區(qū)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25251.html

相關(guān)文章

  • React+Koa+MongoDB+Docker開(kāi)發(fā)環(huán)境

    摘要:已經(jīng)發(fā)布到,只要在環(huán)境下安裝即可。下面通過(guò)來(lái)構(gòu)建開(kāi)發(fā)環(huán)境,提高開(kāi)發(fā)體驗(yàn)。容器容器的實(shí)質(zhì)是進(jìn)程,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運(yùn)行于屬于自己的獨(dú)立的命名空間。部署開(kāi)發(fā)環(huán)境部署開(kāi)發(fā)環(huán)境其實(shí)很簡(jiǎn)單,只需要配置和即可。 前言 本次博文依然是對(duì) multi-spa-webpack-cli 的擴(kuò)充和完善。 集成 mongoose。 集成 Docker 開(kāi)發(fā)環(huán)境。 multi-spa-w...

    sarva 評(píng)論0 收藏0
  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來(lái)越近了。因此無(wú)論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過(guò)使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過(guò)期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來(lái)越近了。從2018年5月25日起,任何一個(gè)未能滿足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬(wàn)歐元——無(wú)論哪種罰...

    ningwang 評(píng)論0 收藏0
  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來(lái)越近了。因此無(wú)論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過(guò)使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過(guò)期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來(lái)越近了。從2018年5月25日起,任何一個(gè)未能滿足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬(wàn)歐元——無(wú)論哪種罰...

    Hwg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<