Replication

如何選擇特定的 MongoDB 副本集成員作為主要成員?

  • June 9, 2018

我有一個包含 5 個成員的副本集。replica-1是主要的,其他副本是次要的:

  • 副本 1(主要)
  • 副本 2(輔助)
  • 副本 3(次要)
  • 副本 4(輔助)
  • 副本 5(次要)

如果主副本 ( replica-1) 出現故障,其中一個輔助副本將切換到主副本。解決任何問題後,我會提出replica-1。然後我需要replica-1再次成為主要。

我如何實現這一目標?我嘗試使用以下命令,但可以選擇任何輔助節點:

rs.stepDown()

我怎樣才能強製replica-1成為主要的?

您可以通過調整特定成員的優先級來影響選舉結果。預設優先級 1 可以更改為 0 到 1000 之間的任何浮點值(其中 0 表示不可選舉成員)。

對於您的案例,您可能希望將首選主節點的優先級設置為 10。除了所有成員優先級的數字順序之外,優先級值沒有任何特殊意義。例如:優先級值 1.01、10 或 1000 都高於預設優先級 1。

注意:使用優先級可能會導致額外的選舉,以確保首選成員在符合條件時成為主要成員。通常,最好將副本集成員視為具有相似資源的對等點,以便任何成員都可以擔任主要角色。除非有充分的理由將特定成員作為主要成員(例如,分佈在多個數據中心的副本集),否則我會避免使用優先級或考慮擁有幾個具有相同優先級的首選成員,以盡量減少選舉。

replica-1具有比具有預設優先級 (1) 的所有其他成員更高優先級 (10)的範例序列:

  • replica-1是目前的主要。
  • replica-1已關閉以進行升級。
  • replica-2被選為新的主節點。
  • replica-1重新啟動並恢復同步以趕上目前的主節點。
  • replica-1趕上目前的主節點並觸發選舉,因此它可以成為主節點。 replica-2當它降級到輔助時,將斷開所有目前連接。

replica-1和 設置replica-2為相同的優先級將避免額外的選舉。

引用自:https://dba.stackexchange.com/questions/209068