自己管理型セカンダリの同期ターゲットの設定
Overview
セカンダリ は プライマリ からデータを取得して、セットのデータの最新のコピーを維持します。 ただし、デフォルトでは、セカンダリは、ノード間の ping 時間や他のノードのレプリケーションの状態の変化に基づいて、同期ターゲットを セカンダリ ノードに自動的に変更する場合があります。 詳細については、「 レプリカセット データの同期と自己管理型連鎖レプリケーション」を参照してください。
一部の配置では、デフォルトの同期ターゲット選択ロジックよりもカスタム レプリケーション同期トポロジーを実装する方が効果的な場合があります。 MongoDB には、同期ターゲットとして使用するホストを指定する機能が用意されています。
デフォルトの同期ターゲット選択ロジックを一時的に上書きするには、セカンダリノードの 同期ターゲット を手動で構成して、 oplogエントリを一時的にプルします。 次の は、この機能へのアクセスを提供します。
replSetSyncFrom
コマンド、またはrs.syncFrom()
のヘルパーmongosh
Considerations
同期ロジック
replSetSyncFrom
/ rs.syncFrom()
の実行時に最初の同期操作が進行中であった場合、 replSetSyncFrom
/ rs.syncFrom()
は進行中の最初の同期を停止し、新しいターゲットで同期プロセスを再開します。
デフォルトの同期ロジックは必要な場合にのみ変更し、常に注意を払ってください。
ターゲット
同期元のメンバーは、セット内の有効なデータソースである必要があります。 ノードから同期するには、ノードは次の操作を行う必要があります。
データを用意します。 スタートアップ モードまたはリカバリ モードではアービタになることはできず、データクエリに答えることができる必要があります。
アクセス可能であること。
レプリカセット構成で同じセットのノードである。
members[n].buildIndexes
設定でインデックスを構築します。セットの別のノード。それ自体からの同期を妨げます。
現在のメンバーより 10 秒以上遅れたメンバーから複製しようとすると、 mongod
は警告をログに記録しますが、遅延ノードからの複製は引き続き遅延します。 「レプリケーションラグとフロー制御 」も参照してください。
永続性
replSetSyncFrom
/rs.syncFrom()
は、デフォルトの動作の一時的なオーバーライドを提供します。 次の状況では、 mongod
はデフォルトの同期動作に戻ります。
手順
でreplSetSyncFrom
mongosh
コマンドを使用する方法
db.adminCommand( { replSetSyncFrom: "hostname<:port>" } );
でrs.syncFrom()
ヘルパーを使用するには次のようにします。mongosh
rs.syncFrom("hostname<:port>");