AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

自己管理型 PSA レプリカセットを安全に変更

プライマリ セカンダリ アービター(PSA)レプリカセットを再構成する場合、または PSA アーキテクチャに変更する場合は、次の場合に特別な注意が必要です。

  • PSA アーキテクチャを使用して、既存の 3 ノードのレプリカセット内のセカンダリを、優先順位が 0 以外の投票権のあるデータを保持するノードになるように再構成する場合。

  • 1 つのプライマリと 1 つのアービタを含む既存の 2 ノードのレプリカセットに、優先順位が 0 以外の投票権のあるデータを保持する新しいノードを追加する場合。

警告

追加しているセカンダリが遅延しており、結果のレプリカセットが PSA 構成の場合、最初の構成変更によって 、 "majority"で変更をコミットする必要があるノードの数が変更されます。 この場合、コミット ポイントはセカンダリが追いつくまで遅延します。

このドキュメントでは、指定されたヘルパー メソッド を使用 せずrs.reconfigForPSASet() に、これらの特定のケースでレプリカセットを再構成する手順について説明します。

上記のいずれかの操作を実行している場合は、次の 2 つの手順でレプリカセットを再構成する必要があります。

  1. { votes: 1, priority: 0 }を使用してセカンダリを追加または変更するには、レプリカセットを再構成します。

  2. 追加または変更されたセカンダリがコミットされたすべての書込み (write) に追いつくと、セカンダリの優先順位がゼロ以外になるように再構成し{ votes: 1, priority: <num> }

2 段階のアプローチにより、新しいセカンダリが以前のプライマリからのコミットされた書込み (write) をすべて完了する前に新しいセカンダリに フェイルオーバー が発生した場合に、コミットされた書込みをロールバックする可能性を回避できます。

rs.reconfigForPSASet()メソッドを実行するには、レプリカセットのプライマリに接続する必要があります。

1

投票権のあるデータを保持するノードを追加または変更するときにコミットされていない書込みをロールバックしないようにするには、最初に{ priority: 0 }を持つノードを追加する必要があります。

In mongosh, modify the replica set configuration. To reconfigure an existing replica set, first retrieve the current configuration with rs.conf(), modify the configuration document as needed, and then pass the modified document to rs.reconfig():

cfg = rs.conf();
cfg["members"] = [
{
// existing member or members
},
{
"_id" : <num>, // The array position of the new member in the
// ``members`` array.
"host" : <host>,
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : { <tags> },
"secondaryDelaySecs" : <num>,
"votes" : 1
},
{
// existing member or members
}
]
rs.reconfig(cfg);
2

セカンダリが追いつくと、比率を任意の数値に設定します。 この再構成が成功する前に、セカンダリは投票がゼロのときにコミットされたすべての書込み (write) を複製する必要があります。 これは、 rs.reconfig()コマンドを発行すると自動的にチェックされます。

cfg = rs.conf();
cfg["members"] = [
{
// existing member or members
},
{
"_id" : <num>, // The array position of the new member in the
// ``members`` array.
"host" : <host>,
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : <num>,
"tags" : { <tags> },
"secondaryDelaySecs" : <num>,
"votes" : 1
},
{
// existing member or members
}
]
rs.reconfig(cfg);
このページを評価

項目一覧