oplog のサイジング
mongosyncプログラムは変更ストリームを使用して、ソースクラスターと宛先クラスター間でデータを同期します。 mongosync
はoplogに直接アクセスしませんが、変更ストリームが過去のイベントを返す場合、そのイベントはoplog
の時間範囲内である必要があります。
mongosync
は、ソースクラスターのoplog
の操作を宛先クラスターのデータに適用します。 mongosync
が適用していなかった操作がソースクラスターのoplog
をロールオフすると、同期は失敗し、 mongosync
は終了します。
注意
mongosync
は、宛先クラスターへの同期中にソースクラスターで行われたapplyOps
操作を複製しません。
最初の同期中に、ドキュメントが同時にコピーされるため、 mongosync
は操作を遅くする可能性があります。 最初の同期後、 mongosync
は変更をより速く適用し、ソースクラスターで発生しているリアルタイム書込みに近いoplog
内の位置を維持する可能性が高くなります。
大規模なデータセットの同期が予想される場合、または同期を長期間にわたって一時停止する予定の場合、 oplog windowを超える可能性があります。 ソースクラスター上のoplog
のサイズを増やすには、 oplogSizeMB
設定を使用します。
Considerations
宛先クラスターには、移行される論理データ サイズと最初の同期の宛先oplogエントリーに十分対応できるディスクストレージが必要です。例、10 GBのデータを移行するには、宛先クラスターでデータには少なくとも 10 GBが使用可能であり、最初の同期からの挿入oplogエントリ用にはさらに 10 GBが必要です。
宛先oplogエントリのオーバーヘッドを軽減するには、次の操作を実行します。
oplogSizeMB
宛先クラスターのoplogサイズを小さくするには、 設定を使用します。oplogMinRetentionHours
を使用して 設定を解除し、宛先クラスターの最小oplog保持期間を短縮または削除します。
最初の同期に必要な oplog サイズを監視する
oplog window の決定
oplog
の最初と最後のエントリの差を秒単位で取得するには、 db.getReplicationInfo()
を実行します。 シャーディングされたクラスターをレプリケートする場合は、各シャードで コマンドを実行します。
db.getReplicationInfo().timeDiff
返される値は、クラスターの最小oplog
ウィンドウです。 シャードが複数ある場合、最小の数は最小のoplog
ウィンドウです。
mongosync レプリケーションラグの決定
lagTimeSeconds
値を取得するには、 /progressコマンドを実行します。 ラグタイムは、 mongosync
によって適用された最後のイベントとソースクラスター上の現在の最新イベントの時間までの時間(秒単位)です。
これは、ソースクラスターmongosync
がどれだけ遅れているかを測定します。
oplog サイズの検証
ラグ時間が最小oplog
ウィンドウに近づく場合は、次のいずれかを変更します。
oplog
ウィンドウを増やします。replSetResizeOplog
を使用して、minRetentionHours
を現在のoplog
ウィンドウよりも大きく設定します。mongosync
インスタンスをスケールアップします。 CPU またはメモリを追加してmongosync
ノードをスケールアップし、コピー率を高めます。
注意
レプリケーションラグのoplog window と変化率は、同期中に変化する可能性があります。 移行中にこれらの手順を繰り返し、進行状況を監視します。