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

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

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)-創(chuàng)新互聯(lián)

MongoDB Manual (Version 4.2)> Replication

MongoDB中的副本集是一組維護(hù)相同數(shù)據(jù)集合的  mongod進(jìn)程。副本集提供了冗余和高可用性,并且這是所有生產(chǎn)部署的基礎(chǔ)。本節(jié)介紹MongoDB中的復(fù)制以及副本集的組件和體系結(jié)構(gòu),并提供副本集常見(jiàn)任務(wù)的教程。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出定南免費(fèi)做網(wǎng)站回饋大家。

No 冗余和數(shù)據(jù)

復(fù)制提供了冗余并增加了數(shù)據(jù)可用性。對(duì)于不同數(shù)據(jù)庫(kù)服務(wù)器上的多個(gè)數(shù)據(jù)副本,復(fù)制為防止單臺(tái)數(shù)據(jù)庫(kù)服務(wù)器故障提供了一定程度的容錯(cuò)能力。

在某些情況下,復(fù)制可以提高讀取性能,因?yàn)榭蛻?hù)端可以將讀操作發(fā)送到不同的服務(wù)器上。在不同的數(shù)據(jù)中心維護(hù)數(shù)據(jù)副本可以提高分布式應(yīng)用程序的數(shù)據(jù)本地化和可用性。您還可以維護(hù)額外的副本以實(shí)現(xiàn)特殊用途,比如災(zāi)難恢復(fù)、報(bào)告或備份。

No 2 MongoDB的復(fù)制

副本集是一組維護(hù)相同數(shù)據(jù)集合的 mongod實(shí)例。副本集包含多個(gè)數(shù)據(jù)承載節(jié)點(diǎn)和一個(gè)可選的仲裁節(jié)點(diǎn)。在數(shù)據(jù)承載節(jié)點(diǎn)中,有且僅有一個(gè)成員為主節(jié)點(diǎn),其他節(jié)點(diǎn)為副本節(jié)點(diǎn)。

主節(jié)點(diǎn) 接收所有的寫(xiě)操作。一個(gè)副本集僅有一個(gè)主節(jié)點(diǎn)能夠用 { w: "majority" } 寫(xiě)關(guān)注點(diǎn)級(jí)別來(lái)確認(rèn)寫(xiě)操作;雖然在某些情況下,另一個(gè)mongod的實(shí)例也可以暫時(shí)認(rèn)為自己是主節(jié)點(diǎn)。[1] 主節(jié)點(diǎn)會(huì)將其數(shù)據(jù)集合所有的變化記錄到操作日志中,即oplog。有關(guān)主節(jié)點(diǎn)操作的更多信息,請(qǐng)參見(jiàn) 副本集主節(jié)點(diǎn)。

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)

副本節(jié)點(diǎn)復(fù)制主節(jié)點(diǎn)的oplog,并將這些操作應(yīng)用于它們的數(shù)據(jù)集,這樣以便副本節(jié)點(diǎn)的數(shù)據(jù)集能反映出主節(jié)點(diǎn)的數(shù)據(jù)集。如果主節(jié)點(diǎn)不可用,一個(gè)候選的副本節(jié)點(diǎn)將會(huì)發(fā)起選舉并使之成為新的主節(jié)點(diǎn)。有關(guān)副本成員的更多信息,請(qǐng)參見(jiàn)副本集副本成員。

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)

在某些情況下(比如您有一個(gè)主節(jié)點(diǎn)和一個(gè)副本節(jié)點(diǎn),但由于成本約束無(wú)法添加另一個(gè)副本節(jié)點(diǎn)),您可以選擇將一個(gè)  mongod 實(shí)例作為仲裁節(jié)點(diǎn)添加到一個(gè)副本集中。仲裁節(jié)點(diǎn)參與選舉但不持有數(shù)據(jù)(即不提供數(shù)據(jù)冗余)。有關(guān)仲裁節(jié)點(diǎn)的更多信息,請(qǐng)參見(jiàn)副本集仲裁節(jié)點(diǎn)。

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)

仲裁節(jié)點(diǎn)永遠(yuǎn)只能是仲裁節(jié)點(diǎn),但在選舉過(guò)程中主節(jié)點(diǎn)也許會(huì)降級(jí)成為副本節(jié)點(diǎn), 副本節(jié)點(diǎn)也可能會(huì)升級(jí)成為主節(jié)點(diǎn)。

No 3 異步復(fù)制

副本節(jié)點(diǎn)復(fù)制主節(jié)點(diǎn)的oplog并異步地應(yīng)用操作到它們的數(shù)據(jù)集。通過(guò)讓副本節(jié)點(diǎn)的數(shù)據(jù)集反映主服務(wù)器的數(shù)據(jù)集,副本集可以在一個(gè)或多個(gè)成員失敗的情況下繼續(xù)運(yùn)行。

有關(guān)復(fù)制機(jī)制的更多信息,請(qǐng)參見(jiàn)副本集Oplog和副本集數(shù)據(jù)同步。

慢操作

從4.2版本開(kāi)始(從4.0.6開(kāi)始也是可行的),副本集的副本成員會(huì)記錄oplog中應(yīng)用時(shí)間超過(guò)慢操作閾值的慢操作條目。這些慢oplog信息被記錄在副本節(jié)點(diǎn)的診斷日志中,其路徑位于 REPL 組件的文本 applied op: took ms中。這些慢日志條目?jī)H僅依賴(lài)于慢操作閾值。它們不依賴(lài)于日志級(jí)別(無(wú)論是系統(tǒng)還是組件級(jí)別)、過(guò)濾級(jí)別,或者慢操作采樣比例。過(guò)濾器不會(huì)捕獲慢日志條目。

復(fù)制延遲和流控制

復(fù)制延遲 指的是將主節(jié)點(diǎn)的寫(xiě)操作拷貝(即復(fù)制)到副本節(jié)點(diǎn)所花費(fèi)的時(shí)間。一些小的延遲期可能是可以接受的,但是隨著復(fù)制延遲的增長(zhǎng),會(huì)出現(xiàn)嚴(yán)重的問(wèn)題,包括引起主節(jié)點(diǎn)的緩存壓力。

從MongoDB 4.2開(kāi)始,管理員可以限制主節(jié)點(diǎn)應(yīng)用寫(xiě)操作的速度,目的是將 majority committed 延遲保持在可配置參數(shù) flowControlTargetLagSeconds的大值之下。

默認(rèn)情況下,流控制是啟用的。

注意:

為了進(jìn)行流控制,復(fù)制集/分片集群必須滿(mǎn)足:參數(shù)featureCompatibilityVersion (FCV) 設(shè)置為 4.2并啟用majority讀關(guān)注點(diǎn)。也就是說(shuō),如果FCV不是  4.2 ,或者讀關(guān)注點(diǎn)majority被禁用,那么啟用流控制將不起作用。

啟用流控制后,當(dāng)延遲快接近 flowControlTargetLagSeconds參數(shù)指定的秒數(shù)時(shí),主節(jié)點(diǎn)上的寫(xiě)操作必須首先獲得許可單(tickets)才可以獲取寫(xiě)鎖。通過(guò)限制每秒發(fā)出的許可單的數(shù)量,流控制機(jī)制可以將延遲保持在目標(biāo)數(shù)值之下。

為獲取更多信息,請(qǐng)參見(jiàn)檢查復(fù)制延遲和流控制。

No 4 自動(dòng)故障轉(zhuǎn)移

當(dāng)主節(jié)點(diǎn)無(wú)法和集群中其他節(jié)點(diǎn)通信的時(shí)間超過(guò)參數(shù) electionTimeoutMillis配置的期限時(shí)(默認(rèn)10s),一個(gè)候選的副本節(jié)點(diǎn)會(huì)發(fā)起選舉來(lái)推薦自己成為新主節(jié)點(diǎn)。集群會(huì)嘗試完成一次新主節(jié)點(diǎn)的選舉并恢復(fù)正常的操作。

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)

副本集在選舉成功前是無(wú)法處理寫(xiě)操作的。如果讀請(qǐng)求被配置運(yùn)行在副本節(jié)點(diǎn)上,則當(dāng)主節(jié)點(diǎn)下線(xiàn)時(shí),副本集可以繼續(xù)處理這些請(qǐng)求。

假設(shè)采用默認(rèn)的副本配置選項(xiàng),集群選擇新主節(jié)點(diǎn)的中間過(guò)渡時(shí)間通常不應(yīng)超過(guò)12秒。這包括了將主節(jié)點(diǎn)標(biāo)記為unavailable、發(fā)起以及完成一次選舉的時(shí)間。您可以通過(guò)修改 settings.electionTimeoutMillis 復(fù)制配置選項(xiàng)來(lái)調(diào)整這個(gè)時(shí)間期限。網(wǎng)絡(luò)延遲等因素可能會(huì)延長(zhǎng)完成副本集選舉所需的時(shí)間,從而影響您的集群在沒(méi)有主節(jié)點(diǎn)的情況下運(yùn)行的時(shí)間。這些因素取決于您實(shí)際的集群架構(gòu)情況。

electionTimeoutMillis復(fù)制配置選項(xiàng)從默認(rèn)的 10000(10秒)降低可以更快地檢測(cè)主節(jié)點(diǎn)故障。然而,由于諸如臨時(shí)性的網(wǎng)絡(luò)延遲等因素,集群可能會(huì)更頻繁地發(fā)起選舉,即使主節(jié)點(diǎn)在其他方面是健康的。這也許會(huì)增加w : 1 級(jí)別寫(xiě)操作發(fā)生回滾的可能性。

您的應(yīng)用程序連接邏輯應(yīng)該包括對(duì)自動(dòng)故障轉(zhuǎn)移和后續(xù)選舉的容錯(cuò)處理能力。從MongoDB 3.6開(kāi)始,MongoDB驅(qū)動(dòng)程序可以探測(cè)到主節(jié)點(diǎn)的丟失,并自動(dòng)重試某些寫(xiě)操作 一次,提供額外的自動(dòng)故障轉(zhuǎn)移和選舉的內(nèi)置處理:

  • MongoDB 4.2兼容的驅(qū)動(dòng)程序默認(rèn)啟用可重試寫(xiě)
  • MongoDB 4.0和3.6兼容的驅(qū)動(dòng)程序必須通過(guò)在 連接字符串中包含 retryWrites=true來(lái)顯式地啟用可重試寫(xiě)。

請(qǐng)參見(jiàn) 副本集選舉來(lái)獲取副本集選舉的完整信息。

為了解更多關(guān)于MongoDB失敗處理的信息,請(qǐng)參見(jiàn):

  • 副本集選舉
  • 可重試寫(xiě)
  • 副本集故障期間的回滾

No 5 讀操作

讀偏好 

默認(rèn)情況下,客戶(hù)端從主節(jié)點(diǎn)讀取[1];然而,客戶(hù)端可以定義一個(gè)讀偏好 將讀操作發(fā)送給副本節(jié)點(diǎn)。

關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)

異步復(fù)制至副本節(jié)點(diǎn),意味著從副本節(jié)點(diǎn)讀取返回的數(shù)據(jù)不能反映主節(jié)點(diǎn)上數(shù)據(jù)的狀態(tài)。

包含讀操作的多文檔事務(wù)必須使用讀偏好 primary。在給定的事務(wù)中所有操作都必須路由至相同的成員節(jié)點(diǎn)。

為了解更多關(guān)于副本集讀的信息,請(qǐng)參見(jiàn)讀偏好。

數(shù)據(jù)可見(jiàn)性 

根據(jù)讀關(guān)注點(diǎn),客戶(hù)端可以在寫(xiě)持久化前看到寫(xiě)結(jié)果:

  • 不管寫(xiě)的write concern級(jí)別是什么,其他使用了讀關(guān)注點(diǎn)級(jí)別為  "local" 或  "available" 的客戶(hù)端,可以在發(fā)起寫(xiě)操作的客戶(hù)端確認(rèn)其寫(xiě)成功之前查看該客戶(hù)端寫(xiě)的結(jié)果。
  • 使用了讀關(guān)注點(diǎn)級(jí)別為  "local" 或  "available" 的客戶(hù)端,能讀取在副本集故障轉(zhuǎn)移期間可能隨后被回滾掉的數(shù)據(jù)。

對(duì)于多文檔事務(wù)中的操作,當(dāng)事務(wù)提交時(shí),在事務(wù)中所做的所有數(shù)據(jù)更改都會(huì)被保存并在事務(wù)外部可見(jiàn)。也就是說(shuō),事務(wù)在回滾其他更改時(shí)不會(huì)提交某些更改。

在事務(wù)提交之前,事務(wù)中所做的數(shù)據(jù)更改在事務(wù)外部是不可見(jiàn)的。

然而,當(dāng)一個(gè)事務(wù)寫(xiě)入多個(gè)分片時(shí),并不是所有外部的讀操作都需要等待提交的事務(wù)的結(jié)果在分片中可見(jiàn)。例如,如果提交了一個(gè)事務(wù),并且在分片a上可以看到寫(xiě)1,但是在分片B上還不能看到寫(xiě)2,那么外部讀關(guān)注點(diǎn)為  "local" 的讀可以在不看到寫(xiě)2的情況下讀取寫(xiě)1的結(jié)果。

更多請(qǐng)參見(jiàn)Read Isolation, Consistency, and Recency。

No 6 事務(wù)

 

從MongoDB 4.0開(kāi)始,副本集支持多文檔事務(wù)。

包含讀操作的多文檔事務(wù)必須使用讀偏好  primary。給定事務(wù)中所有的操作都必須路由至相同的成員節(jié)點(diǎn)。

在事務(wù)提交之前,事務(wù)中所做的數(shù)據(jù)更改在事務(wù)外部是不可見(jiàn)的。

然而,當(dāng)一個(gè)事務(wù)寫(xiě)入多個(gè)分片時(shí),并不是所有外部的讀操作都需要等待提交的事務(wù)的結(jié)果在分片中可見(jiàn)。例如,如果提交了一個(gè)事務(wù),并且在分片a上可以看到寫(xiě)1,但是在分片B上還不能看到寫(xiě)2,那么外部讀關(guān)注點(diǎn)為  "local" 的讀可以在不看到寫(xiě)2的情況下讀取寫(xiě)1的結(jié)果。

No7 變更流

從MongoDB 3.6開(kāi)始,副本集和分片集群支持變更流。變更流允許應(yīng)用程序訪(fǎng)問(wèn)實(shí)時(shí)數(shù)據(jù)更改,而不需要跟蹤oplog的復(fù)雜性和風(fēng)險(xiǎn)。應(yīng)用程序可以使用變更流來(lái)訂閱一個(gè)或多個(gè)集合上的所有數(shù)據(jù)更改。

No8 附加功能

副本集提供了許多選項(xiàng)來(lái)支持應(yīng)用程序的需求。例如,你可以使用多數(shù)據(jù)中心中的成員來(lái)部署一個(gè)副本集,或者通過(guò)調(diào)整一些成員的 members[n].priority 來(lái)控制選舉結(jié)果。副本集還支持用于報(bào)告、災(zāi)難恢復(fù)或備份功能的專(zhuān)用成員。

更多有關(guān)信息請(qǐng)參見(jiàn)優(yōu)先級(jí)0的副本集成員,隱藏副本集成員和延遲副本集成員 。

注意:

(1, 2) 在 某些場(chǎng)景下, 一個(gè)復(fù)制集中的兩個(gè)節(jié)點(diǎn)可能會(huì)認(rèn)為它們是主節(jié)點(diǎn),但最多,他們中的一個(gè)將能夠完成寫(xiě)關(guān)注點(diǎn)為{ w: “majority” }寫(xiě)操作。可以完成 { w: “majority” } 寫(xiě)的節(jié)點(diǎn)是當(dāng)前主節(jié)點(diǎn),而另一個(gè)節(jié)點(diǎn)是原先的主節(jié)點(diǎn),通常是由于網(wǎng)絡(luò)分區(qū)導(dǎo)致它還沒(méi)有意識(shí)到自己的降級(jí)。當(dāng)這種情況發(fā)生時(shí),連接到原先主節(jié)點(diǎn)的客戶(hù)端盡管已經(jīng)請(qǐng)求了讀偏好primary,但可能還會(huì)觀察到過(guò)時(shí)的數(shù)據(jù),并且對(duì)原先主節(jié)點(diǎn)新寫(xiě)的操作最終將回滾掉。

譯者:李正洋

MongoDB中文社區(qū)翻譯小組成員

目前在傳統(tǒng)金融行業(yè)從事DBA職務(wù),5年+工作經(jīng)驗(yàn),主要負(fù)責(zé)公司oracle/mongodb/es/redis各類(lèi)數(shù)據(jù)庫(kù)及數(shù)據(jù)中心監(jiān)控平臺(tái)運(yùn)維工作,oracle ocp,MongoDB認(rèn)證專(zhuān)家,RHCE,現(xiàn)階段對(duì)開(kāi)源分布式數(shù)據(jù)庫(kù)、云計(jì)算等領(lǐng)域有很大興趣;平時(shí)喜歡打羽毛球、看電影等。

原文鏈接:

https://docs.mongodb.com/manual/replication/


當(dāng)前文章:關(guān)于MongoDB復(fù)制,你了解多少(附副本集常見(jiàn)任務(wù)教程)-創(chuàng)新互聯(lián)
新聞來(lái)源:http://weahome.cn/article/diipjj.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部