mongosync プログラムは 変更ストリーム を使用して、ソースクラスターと宛先クラスター間でデータを同期します。mongosync はoplogに直接アクセスしませんが、変更ストリームが過去のイベントを返す場合、そのイベントは oplog の時間範囲内である必要があります。
mongosync は、ソースクラスターのoplogの操作を宛先クラスターのデータに適用します。 mongosyncが適用していなかった操作がソースクラスターのoplogをロールオフすると、同期は失敗し、 mongosyncは終了します。
注意
mongosync は、宛先クラスターへの同期中にソースクラスターで行われたapplyOps操作を複製しません。
最初の同期中に、ドキュメントが同時にコピーされるため、 mongosyncは操作を遅くする可能性があります。 最初の同期後、 mongosyncは変更をより速く適用し、ソースクラスターで発生しているリアルタイム書込みに近いoplog内の位置を維持する可能性が高くなります。
大規模なデータセットの同期が予想される場合、または同期を長期間にわたって一時停止する予定の場合、 oplog windowを超える可能性があります。 ソースクラスター上のoplogのサイズを増やすには、 oplogSizeMB設定を使用します。
最初の同期に必要な 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 と変化率は、同期中に変化する可能性があります。 移行中にこれらの手順を繰り返し、進行状況を監視します。