自己管理型連鎖レプリケーション
バージョン 2.0 以降、MongoDBは 連鎖レプリケーションをサポートしています。 連鎖レプリケーションは、 セカンダリ メンバーが プライマリ ではなく別のセカンダリ メンバーから複製する場合に発生します。これは、例のように、セカンダリがping時間に基づいてレプリケーションソースを選択し、最も近いノードが別のセカンダリである場合に当てはまります。 操作のレプリケーションソースは、データが読み取られるノードです。
連鎖レプリケーションにより、プライマリの負荷を軽減できます。 ただし、ネットワークのトポロジーによっては、連鎖レプリケーションラグが増加する可能性もあります。
自己管理型レプリカセット構成settings.chainingAllowed
の 設定を使用して、連鎖レプリケーションが遅延を発生している状況では、連鎖レプリケーションを無効にできます。
MongoDB はデフォルトで連鎖レプリケーションを有効にします。 この手順では、これを無効にする方法と、再度有効にする方法について説明します。
注意
連鎖レプリケーションが無効になっている場合でも、 replSetSyncFrom
を使用して、セカンダリが別のセカンダリから複製されることを指定できます。 ただし、その構成が続くのは、セカンダリが同期元のメンバーを再計算するまでのみです。
連鎖レプリケーションの無効化
連鎖レプリケーションを無効にするには、settings.chainingAllowed
自己管理型レプリカセット構成 の フィールドをfalse
に設定します。
次の一連のコマンドを使用して、 settings.chainingAllowed
をfalse
に設定できます。
構成設定を
cfg
オブジェクトにコピーします。cfg = rs.config() 現在の構成設定に
settings
埋め込みドキュメントが含まれているかどうかをメモします。 その場合は、この手順をスキップしてください。警告
構成設定に
settings
埋め込みドキュメントが含まれている場合は、データの損失を防ぐために、この手順をスキップします。現在の構成設定に
settings
埋め込みドキュメントが含まれていない場合は、次のコマンドを発行して埋め込みドキュメントを作成します。cfg.settings = { } 次の一連のコマンドを発行して、
settings.chainingAllowed
をfalse
に設定します。cfg.settings.chainingAllowed = false rs.reconfig(cfg)
連鎖レプリケーションを再度有効化
連鎖レプリケーションを再度有効にするには、 settings.chainingAllowed
をtrue
に設定します。 次の一連のコマンドを使用できます。
cfg = rs.config() cfg.settings.chainingAllowed = true rs.reconfig(cfg)