真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

monogdb復(fù)制原理詳解-創(chuàng)新互聯(lián)

一、復(fù)制介紹

復(fù)制是在多臺服務(wù)器之間同步數(shù)據(jù)的過程。

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都成都履帶攪拌車小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)頁設(shè)計營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

復(fù)制在為數(shù)據(jù)提供了冗余同時,也提高了數(shù)據(jù)的可用性。由于在不同的數(shù)據(jù)庫服務(wù)器上擁有多個數(shù)據(jù)鏡像,復(fù)制可以有效的防止由于單臺服務(wù)器故障而導(dǎo)致的數(shù)據(jù)丟失。復(fù)制還能夠幫助我們從硬件故障或是服務(wù)中斷中恢復(fù)數(shù)據(jù)。我們也可以通過增加復(fù)制節(jié)點來將其用于災(zāi)難恢復(fù)、報表或是備份。

在某些情況中,我們可以通過復(fù)制的方式來提高讀的性能。客戶端可以將讀與寫請求分別發(fā)送到不同的服務(wù)器上。我們還能夠通過在其他數(shù)據(jù)中心建立分布式復(fù)制節(jié)點的方式來做異地冗災(zāi),以進一步提高可用性。

MongoDB中的復(fù)制

復(fù)制集是由一組擁有相同數(shù)據(jù)集的 mongod 實例組成的。其中的一個節(jié)點為主節(jié)點(Primary),所有的寫請求都是在它上面完成的。而其他的節(jié)點都是從節(jié)點(secondary),從節(jié)點接收從主節(jié)點上傳來的操作并應(yīng)用,并以此來保證其與主節(jié)點的數(shù)據(jù)集一致。

主節(jié)點 接收所有來自客戶端的寫操作。一個復(fù)制集只能有一個主節(jié)點。由于在一個復(fù)制集中只有一個成員能夠接收寫操作,復(fù)制集為所有來自主節(jié)點的讀提供了 嚴格的一致性校驗 。主節(jié)點通過將所有數(shù)據(jù)集的變動記錄到 oplog 中以支持復(fù)制的實現(xiàn)。

monogdb復(fù)制原理詳解

從節(jié)點 將主節(jié)點上的oplog復(fù)制過來并應(yīng)用這些操作來修改其自己的數(shù)據(jù)集以確保從節(jié)點的數(shù)據(jù)集與主節(jié)點的數(shù)據(jù)集一致。一旦主節(jié)點不可用了,復(fù)制集就會將一個從節(jié)點選舉成為新的主節(jié)點??蛻舳四J是從主節(jié)點進行讀操作,但是客戶端也可以通過指定 復(fù)制集讀選項 來將讀操作發(fā)送給從節(jié)點。需要注意的是,在從節(jié)點上進行讀操作時,所獲得的數(shù)據(jù)可能不是此時主節(jié)點上的值

monogdb復(fù)制原理詳解

我們也可以為復(fù)制集新增一個額外的 mongod 實例作為 投票節(jié)點 。投票節(jié)點中并不包含數(shù)據(jù)集,投票節(jié)點的作用僅僅是在選舉過程中參與投票。當(dāng)復(fù)制集的成員個數(shù)為偶數(shù)時,添加一個投票節(jié)點可以防止平局的出現(xiàn),通過多數(shù)選票來選舉出新的主節(jié)點。由于投票節(jié)點僅提供投票功能,故無需一個專用的物理機。

monogdb復(fù)制原理詳解

投票節(jié)點 將只做投票使用。當(dāng) 主節(jié)點 降職變?yōu)?從節(jié)點 的時候,其他的一個 從節(jié)點 將在選舉中被推選為主節(jié)點。

異步復(fù)制

從節(jié)點從主節(jié)點上應(yīng)用操作的過程是異步的。由于從節(jié)點是在主節(jié)點之后應(yīng)用操作的,所以復(fù)制集在缺少某些成員的時候仍能繼續(xù)運行。然而在這種情況下,從節(jié)點返回給客戶端的數(shù)據(jù)可能并不是最新的數(shù)據(jù)。

自動化故障切換

當(dāng)主節(jié)點無法與復(fù)制集中其他成員進行溝通超過10秒時,復(fù)制集將嘗試推舉另一位成員成為新的主節(jié)點。這時,第一個獲得多數(shù)投票的從節(jié)點將升職為主節(jié)點。

monogdb復(fù)制原理詳解

其他特征

復(fù)制集提供了一些選項來支持實際應(yīng)用時的需求。例如,將一個復(fù)制集分布在多個數(shù)據(jù)中心 ,又或是通過設(shè)置 priority 來控制選舉的結(jié)果。復(fù)制集同時也支持將成員用于報表、災(zāi)難恢復(fù)或是備份。

二、復(fù)制概念介紹

復(fù)制集成員

MongoDB的 復(fù)制集 是由一組 mongod 實例所組成的,并提供了數(shù)據(jù)冗余與高可用性。復(fù)制集中的成員有以下幾種:

  • Primary.

  • 主節(jié)點 接收所有的寫操作請求。

  • Secondaries.

  • 從節(jié)點通過應(yīng)用主節(jié)點傳來的數(shù)據(jù)變動操作來保持其數(shù)據(jù)集與主節(jié)點的一致。從節(jié)點也可以通過增加額外的參數(shù)配置來對應(yīng)特殊的需求。例如,從節(jié)點可以是 non-voting 或是 priority 0 。

我們也可以為復(fù)制集設(shè)置一個 投票節(jié)點 。投票節(jié)點其本身并不包含數(shù)據(jù)集。但是,一旦當(dāng)前的主節(jié)點不可用時,投票節(jié)點就會參與到新的主節(jié)點選舉的投票中。

一個復(fù)制集最多可以擁有12個成員。 [1] 但是同時最多只有其中的7個可以進行投票。

一個復(fù)制集至少需要這幾個成員:一個 主節(jié)點 ,一個 從節(jié)點 ,和一個 投票節(jié)點 。但是在大多數(shù)情況下,我們會保持3個擁有數(shù)據(jù)集的節(jié)點:一個 主節(jié)點 和兩個 從節(jié)點

復(fù)制集主節(jié)點

在復(fù)制集中,主節(jié)點是唯一能夠接收寫請求的節(jié)點。MongoDB在 主節(jié)點 上進行寫操作,并會將這些操作記錄到主節(jié)點的 oplog 中。 從節(jié)點 會將oplog復(fù)制到其本機并將這些操作應(yīng)用到其自己的數(shù)據(jù)集上。

在擁有下述三個成員的復(fù)制集中,主節(jié)點將接收所有的寫請求,而從節(jié)點會將oplog復(fù)制到本機并在其自己的數(shù)據(jù)集上應(yīng)用這些操作。

復(fù)制集中任何成員都可以接收讀請求。但是默認情況下,應(yīng)用程序會直接連接到在主節(jié)點上進行讀操作。

復(fù)制集最多只能擁有一個主節(jié)點。一旦當(dāng)前的主節(jié)點不可用了,復(fù)制集就會選舉出新的主節(jié)點。

在擁有下述三個成員的復(fù)制集中,一旦當(dāng)前主節(jié)點不可用了,就會觸發(fā)選舉機制,并將在剩下的從節(jié)點中選舉出一個新的主節(jié)點。

復(fù)制集從節(jié)點

從節(jié)點的數(shù)據(jù)集與 主節(jié)點 中的一致。從節(jié)點將主節(jié)點上的 oplog 復(fù)制到本機,并異步的將這些操作記錄應(yīng)用在其自己的數(shù)據(jù)集上。每個復(fù)制集可以擁有多個從節(jié)點。

下述由三個成員組成的復(fù)制集擁有兩個從節(jié)點。這些從節(jié)點將主節(jié)點上的oplog復(fù)制過來并應(yīng)用在其自己的數(shù)據(jù)集上。

客戶端雖然無法在從節(jié)點上進行寫操作,但卻可以進行讀操作。

從節(jié)點是可以升職為主節(jié)點的。一旦現(xiàn)有的主節(jié)點不可用了,那么復(fù)制集將會發(fā)起 election 來選擇將哪個從節(jié)點提升為新的主節(jié)點。

在擁有下述三個成員的復(fù)制集中,一旦當(dāng)前主節(jié)點不可用了,就會觸發(fā)選舉機制,并將在剩下的從節(jié)點中選舉出一個新的主節(jié)點。

我們可以通過修改參數(shù)的方式來將從節(jié)點用于特殊的需求。例如:

  • 我們可以通過禁止從節(jié)點升職為主節(jié)點的方式來將該節(jié)點永駐為從節(jié)點或是用于冷備。

  • 我們可以通過禁止應(yīng)用在該從節(jié)點上進行讀操作的方式,來讓一些需要進行流量隔離的應(yīng)用在其上進行讀。

  • 我們可以通過設(shè)置 “延時備份節(jié)點” 的方式來防止諸如誤刪除等的誤操作或是錯誤。

優(yōu)先級為0的復(fù)制集成員

一旦將優(yōu)先級設(shè)置為0,那么該從節(jié)點將 不能 升職為 主節(jié)點優(yōu)先級為0 的成員不會 觸發(fā) 選舉 。除此之外該節(jié)點與其他從節(jié)點沒有區(qū)別,優(yōu)先級為0 的從節(jié)點擁有與主節(jié)點一致的數(shù)據(jù)集,能接受讀請求,同時也能參與投票。通過將從節(jié)點的 優(yōu)先級設(shè)置為0 來防止其升職為主節(jié)點可以在分布式數(shù)據(jù)中心的結(jié)構(gòu)中起到很好的作用。

在下述這樣的擁有三個成員的復(fù)制集中,一個主節(jié)點和一個從節(jié)點坐落在某一個數(shù)據(jù)中心中,另一個不能升職為主節(jié)點的 優(yōu)先級為0 的從節(jié)點則在另一個數(shù)據(jù)中心。

將優(yōu)先級為0的成員作為備用節(jié)點

在很多情況下,我們可能不需要準備一個 優(yōu)先級為0 的備用節(jié)點。然而在一些硬件環(huán)境或是架構(gòu)的 地理分布 較為多變的情境中,一個 優(yōu)先級為0 的備用節(jié)點可以很好的保證符合條件的成員升職為主節(jié)點。

一個擁有特殊硬件配置或是系統(tǒng)優(yōu)化配置的 優(yōu)先級為0 的備用節(jié)點也可以有效的為特殊需求提供服務(wù)。比如可以將 優(yōu)先級設(shè)置為0 來讓其不能升職為主節(jié)點。

如果我們的復(fù)制集中已經(jīng)有了七個參與投票的節(jié)點,那么請將其他節(jié)點設(shè)置為 不參與投票

優(yōu)先級為0的節(jié)點與故障切換

當(dāng)配置一個 優(yōu)先級為0 的節(jié)點時,我們需要考慮到可能出現(xiàn)的故障切換情況,比如網(wǎng)絡(luò)故障等。需要注意的時,我們要確保在主數(shù)據(jù)中心中擁有足夠多可以參與投票和選舉的節(jié)點,并確保其擁有可以順利成為主節(jié)點的成員。

隱藏節(jié)點

隱藏節(jié)點擁有與 主節(jié)點 一致的數(shù)據(jù)集,但是它對于應(yīng)用程序來說是 不可見 的。隱藏節(jié)點可以很好的與 復(fù)制集 中的其他節(jié)點隔離,并應(yīng)對特殊的需求。隱藏節(jié)點也應(yīng)該是一個 不能升職為主節(jié)點優(yōu)先級為0的節(jié)點 。函數(shù) db.isMaster() 將不會列出隱藏節(jié)點。隱藏節(jié)點在 選舉 中是 可以進行投票 的。

在下述這樣擁有五個節(jié)點的復(fù)制集中,四個從節(jié)點都擁有與主節(jié)點一致的數(shù)據(jù)集,但其中的一個從節(jié)點是隱藏節(jié)點。

讀操

客戶端將不會把讀請求分發(fā)到隱藏節(jié)點上,即使我們設(shè)定了 復(fù)制集讀選項 。這些隱藏節(jié)點將不會收到來自應(yīng)用程序的請求。我們可以將隱藏節(jié)點專用于報表節(jié)點或是備份節(jié)點。 延時節(jié)點 也應(yīng)該是一個隱藏節(jié)點。

在分片集群中, mongos 將不與隱藏節(jié)點進行交流。

投票

在復(fù)制集的選舉中,隱藏節(jié)點是會 參加 投票的。當(dāng)關(guān)閉一個隱藏節(jié)點的時候,請確認復(fù)制集中的可用節(jié)點個數(shù)足夠進行選舉,以防 主節(jié)點 降職導(dǎo)致復(fù)制集對外不可用。

將隱藏節(jié)點用于備份,可以防止我們在備份過程中使用 db.fsyncLock()db.fsyncUnlock() 操作來對 mongod 實例加或解除寫鎖的過程中應(yīng)用程序的不可用。

延時節(jié)點

延時節(jié)點也將從 復(fù)制集 中主節(jié)點復(fù)制數(shù)據(jù),然而延時節(jié)點中的數(shù)據(jù)集將會比復(fù)制集中主節(jié)點的數(shù)據(jù)延后。舉個例子,現(xiàn)在是09:52,如果延時節(jié)點延后了1小時,那么延時節(jié)點的數(shù)據(jù)集中將不會有08:52之后的操作。

由于延時節(jié)點的數(shù)據(jù)集是延時的,因此它可以幫助我們在人為誤操作或是其他意外情況下恢復(fù)數(shù)據(jù)。舉個例子,當(dāng)應(yīng)用升級失敗,或是誤操作刪除了表和數(shù)據(jù)庫時,我們可以通過延時節(jié)點進行數(shù)據(jù)恢復(fù)。

行為

延時節(jié)點通過延時應(yīng)用 oplog 中的操作來實現(xiàn)其延時的效果。當(dāng)我們選擇延時時常的時候,需要考慮到以下內(nèi)容:

  • 必須大于或者等于你的維護視窗。

  • 必須 小于 oplog的存儲能力

分片

在分片集群中,當(dāng) 平衡器 平衡器打開的時候延時節(jié)點效果有限。因為延時節(jié)點延時的復(fù)制數(shù)據(jù)段,而若在延時的時間段內(nèi)進行過數(shù)據(jù)段遷移的話,復(fù)制集中的延時節(jié)點就無法為還原分片集群提供有效的幫助

例子

在下述這樣擁有五個成員的復(fù)制集中,主節(jié)點與所有從節(jié)點都擁有數(shù)據(jù)集的副本。其中一個從節(jié)點延時3600秒(1小時)應(yīng)用oplog中的操作。這個延時節(jié)點同時也是 隱藏節(jié)點優(yōu)先級為0 的節(jié)點。

配置方式

延時節(jié)點需要將 priority 設(shè)置為0,還需要將 hidden 設(shè)置為 true ,同時還需要將 slaveDelay 設(shè)置為想要延遲的時間(單位為秒):

{
   "_id" : ,
   "host" : ,
   "priority" : 0,
   "slaveDelay" : ,
   "hidden" : true}

投票節(jié)點

投票節(jié)點 并不含有 復(fù)制集中的數(shù)據(jù)集副本,且也 無法 升職為主節(jié)點。復(fù)制集中可能會有多個投票節(jié)點來為 選舉出新的主節(jié)點 進行投票。投票節(jié)點的存在使得復(fù)制集可以以偶數(shù)個節(jié)點存在,而無需為復(fù)制集再新增節(jié)點。

注意

不要將投票節(jié)點運行在復(fù)制集的主節(jié)點或者從節(jié)點機器上。

僅僅在復(fù)制集成員為偶數(shù)個的時候加入投票節(jié)點。如果在擁有奇數(shù)個復(fù)制集成員的復(fù)制集中新增了一個投票節(jié)點,復(fù)制集可能會遇到 選舉 僵局。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站題目:monogdb復(fù)制原理詳解-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://weahome.cn/article/eisgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部