簡體   English   中英

ReplicaSet中的MongoDB多個主服務器

[英]MongoDB Multiple Masters in ReplicaSet

我有一個關於MongoDB副本集中多個主人的問題。 我有以下布局:

服務器A - >使用MongoDB和幾個應用程序

服務器B - >使用MongoDB和幾個應用程序

MongoDB的兩個實例都組織在同一副本集中(服務器A作為主服務器,服務器B作為輔助服務器)。 但現在有問題了。 兩個數據庫都應包含服務器上應用程序的數據。

是否可以部署具有兩個主服務器的副本集,以便服務器A的數據在服務器B的MongoDB中可用,反之亦然?

非常感謝你提前

MongoDB中的副本集此時只能有一個主服務器。 (它被稱為副本集的主要副本。)對於您的方案,解決方案通常是使用分片群集。 在您的示例中,您將有兩個分片:一個用於服務器A的數據,另一個用於服務器B的數據。兩個分片都實現為副本集,因此每個分片至少有三個服務器。 然后,您可以將A分片的主分區放在同一數據中心A中,並將B分片的主分區放在數據中心B中。每個分片的至少一個副本(稱為輔助分片)將位於另一個數據中心。

這意味着每個數據中心都可以使用所有數據,但是寫入A分片總是需要在數據中心A中進行,並寫入數據中心B中的B分片。(盡管寫入也可以遠程完成,所以你可以從數據中心B寫入分片A,這只是在這種情況下它是遠程寫入。)

沒有MongoDB只是單一主人。

在保持同步的同時創建這樣的兩個單獨副本的唯一方法是手動執行但不建議這樣做。

“MongoDB的兩個實例都組織在同一個副本集中”

“是否可以部署具有兩個主服務器的副本集,以便服務器A的數據在服務器B的MongoDB中可用,反之亦然?”

奇怪的是,復制確實是為了達到這個目的:在不同的服務器上冗余地存儲相同的數據。

如果您已將其設置到位,那么您已經實現了目標。 Sharding幾乎沒有(如果不是沒有)與高可用性有關。

如果您具有自動故障轉移功能,則不需要多主機配置。 為此,請確保您至少有3個數據承載副本成員或2 + 1個仲裁器,以便它們能夠占多數並選擇新的主服務器以防舊服務器脫機。

您可能要調整electionTimeoutMillis參數autofailover檢查,以更頻繁地發生。

將重要數據寫入數據庫時​​,可以使用{w:“majority”}寫入問題來確保您的更改已反映在大多數數據承載服務器上,因此是持久的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM