Docs Menu
Docs Home
/
MongoDB Cluster-to-Cluster Sync

よくある質問

このページでは、これまでに発生したよくある質問への回答を提供します。 さらに質問がある場合は、MongoDB サポートにお問い合わせください。

はい、 同期中に を再構成する mongosyncの手順に従って、移行中にクラスターのワークロードレベルを調整できます。

mongosync 同期中にソースから宛先への書込み (write) を結合し、順序を変更しコレクションの特性を一時的に変更します。その結果、mongosync は、同期が一時停止されている場合でも、同期が実行中の任意の点で、宛先がソースと一致することを保証できません(ソースの古いバージョンを含む)。宛先クラスターへのトラフィックを安全に受け入れるには、commitへの移行を待ちます。詳細については、同期中の考慮事項を参照してください。

同期中に宛先クラスターへの書き込みを実行すると、未定義の動作が発生します。 mongosync はデフォルトで 宛先クラスターへの書込みをブロックします。 書込みブロックの詳細については、「 書込みブロックと startを参照してください。

コミット時に、宛先クラスターは、canWritetrue の場合にのみ安全に書込み可能です。 の値を確認するには、canWrite progressエンドポイントを実行します。

同期中に許可される読み取りと書込みの詳細については、「 読み取りと書込み 」を参照してください。

注意

宛先クラスターでのインデックスビルドは、mongosync の同期中は書込みとして扱われます。

いいえ、現在、mongosync で障害復旧クラスターを維持することはできません。宛先クラスターへのトラフィックを安全に受け入れるには、mongosynccommit である必要があるためです。詳細については、「 mongosyncが同期している間に宛先クラスターへの読み取りまたは書込みを実行できますか? 」を参照してください。

次の要因により、宛先クラスターのインデックスサイズが増加する可能性があります。

  • mongosync は、移行中にデータを挿入および削除するため、ディスクにデータを非効率的に保存する可能性があります。

  • mongosyncmongosyncデフォルトでは 、_id はデータをコピーする前にインデックスをビルドします。 は の順序でデータをコピーします。インデックスが_id と相関しない場合、インデックスのサイズが大きくなる可能性があります。詳細については、 「 MongoDBマニュアルFAQ: インデックス 」ページを参照してください。

インデックスサイズの増加を軽減するには、次の方法を使用します。

  • パラメータをbuildIndexes neverに設定して移行を再開始します。移行が完了したら、宛先クラスターにインデックスを手動でビルドします。

  • 移行後、宛先クラスターでローリングの 最初の同期を実行します。

  • 移行後、宛先クラスターで 圧縮を実行します。これにより、インデックスが再ビルドされ、不要なディスク領域が OS に解放されますが、クラスターのパフォーマンスに影響可能性があります。

はい、 mongosyncは独自のハードウェアで実行できます。 MongoDB インスタンスをホストするサーバーではmongosyncを実行する必要はありません。 mongosyncが独自のハードウェアで実行される場合、ソースクラスターまたは宛先クラスターの OS とは異なるオペレーティング システム(OS)を使用できます。

ほとんどの移行では、宛先クラスターはソースクラスターよりも高いハードウェア仕様であり、次のプロパティが含まれている必要があります。

  • CPU

  • メモリ

  • Disk I/O

これらのハードウェア仕様により、宛先クラスターが mongosync の書込みを処理でき、同期がソースクラスターのワークロードに追いつくことができます。

宛先クラスターには、移行される論理データ サイズと最初の同期の宛先oplogエントリーに十分対応できるディスクストレージが必要です。 例、10 GBのデータを移行するには、宛先クラスターでデータには少なくとも 10 GBが使用可能であり、最初の同期からの挿入oplogエントリ用にはさらに 10 GB が必要です。

埋め込み検証 を使用するには、宛先のoplogがより大きくなければなりません。埋め込み検証子を有効にして宛先oplogのサイズを減らすと、埋め込み検証子が追いつけない可能性があり、mongosync がエラーを発生させる可能性があります。

宛先oplogエントリのオーバーヘッドを減らす必要があり、埋め込み検証子が無効になっている場合は、次の操作を実行できます。

  • replication.oplogSizeMB宛先クラスターのoplogサイズを小さくするには、 設定を使用します。

  • storage.oplogMinRetentionHoursを使用して 設定を解除し、宛先クラスターの最小oplog保持期間を短縮または削除します。

mongosync oplogは、コレクションコピー フェーズの後に、ソースクラスターの の操作を宛先クラスターのデータに適用します。mongosync が適用していなかった操作がソースクラスターの oplog をロールオフすると、同期は失敗し、mongosync は終了します。

注意

mongosync applyOpsは、宛先クラスターへの同期中にソースクラスターで行われた 操作を複製しません。

大規模なデータセット の同期が予想され、または同期を長期間にわたって一時停止する予定の場合、 oplog ウィンドウ を超える可能性があります。ソースクラスター上のreplication.oplogSizeMB のサイズを増やすには、oplog 設定を使用します。

mongosync には、 readConcern: "過半数" writeConcern: "過半数" が必要です。

readConcernmajorityでない場合、 mongosyncはエラーを返します。

Invalid URI option, read concern must be majority

writeConcernmajorityでない場合、 mongosyncはエラーを返します。

Invalid URI option, write concern must be majority

mongosync は、他のすべての接続文字列オプションを受け入れます。

mongosync は、ネットワーク圧縮をサポートします。ネットワーク圧縮を有効にするには、構成が次の条件を満たす必要があります。

  • ソースクラスターと宛先クラスターではネットワーク圧縮が有効になっている必要があります

  • ソースクラスターと宛先クラスターの接続文字列には、compressors 接続文字列オプションが含まれている必要があります

  • クラスター構成と接続文字列オプションは、少なくとも 1 つの共通のコンプレッサーを共有する必要があります

ネットワーク圧縮構成オプションの詳細については、 データベース マニュアルの--networkMessageCompressors オプションを参照してください。

mongosync 標準のMongoDB 接続文字列を使用して、ソースクラスターと宛先クラスターに接続します。

LDAP X509 はサポートされています。利用可能な認証オプションについては、 「 認証 」を参照してください。

mongosync は、エラーが発生した場合に自動的に再起動しません。 ただし、スクリプトを作成したり、オペレーティング システムのプロセス マネージャー( systemdを使用してmongosyncプロセスを再起動したりすることはできます。

mongosyncバイナリはステートレスです。 再起動用のメタデータは宛先クラスターに保存されています。

同期中にmongosyncが利用できなくなった場合には、 mongosync操作を再開できます。 mongosyncが再度使用可能になったら、同じパラメータでmongosyncプロセスを再起動します。 mongosyncは、 mongosyncが使用できなくなったときに停止した場所から操作を再開します。

注意

mongosync 1.7.3以降、 同期操作を再開または再開する際に、 mongosyncが応答するまでに少なくとも 2 分かかる場合があります。 この間、 progressエンドポイントへの呼び出しが失敗する可能性があります。 progress呼び出しが失敗した場合は、安全に再試行できます。

はい、レプリカセットはアービタを使用できます。 ソース レプリカセットには 2 以上の非アービタ ノードが必要で、非アービタ ノードから同期する必要があります。 ソースクラスターの接続文字列を使用して、アービタ以外のデータを保持しているノードの読み込み設定(read preference)を指定します。

ソース クラスターで読み取り操作が低速、または宛先クラスターで書込み (write) 操作が低速な場合、 最初の同期 または 変更イベント の適用中に低速操作警告が表示されることがあります。 この警告は、ソースクラスターまたは宛先クラスターでネットワークの競合やリソースの負荷が増大していることを示している場合があります。

これらの警告自体は失敗を示すものではありませんが、低速操作によりmongosyncで操作タイムアウト エラーが発生したり、移行が失敗したりする可能性があります。

低速操作の警告が表示される場合は、ソースクラスターと宛先クラスターの CPU、メモリ、ネットワーク使用量を確認してください。 ニーズに対してクラスターのプロビジョニングが不十分な場合は、クラスター ハードウェアのアップグレードを検討してください。

いいえ、「error」または「failure」という単語を含むログは致命的でないエラーを表示し、 mongosyncを早期に停止する必要があることを示すものではありません。 これらのログは、 mongosyncの障害やデータの破損を示すものではありません。 致命的なエラーが発生した場合、 mongosyncは同期を停止し、致命的なログエントリを書込みます。

重複キー エラーは、同期プロセスの通常の一部です。 このようなエラーは、次の場合に発生する可能性があります。

  • mongosyncの起動後にソースクラスターにドキュメントを挿入します。 mongosyncはドキュメントを直接コピーし、後でドキュメントの挿入変更イベントを冗長に適用できます。

  • mongosyncを停止して再開します。 これにより、 mongosyncの再起動時に重複挿入が発生する可能性があります。

  • mongosync 一時的なエラーが発生し、すでに成功している可能性のある挿入を再試行します。

致命的なエラーは修正する必要がある問題を示し、移行を再開する必要があります。 エラーに対処した後、 mongosync_reserved_for_internal_useデータベースを含む宛先クラスター上のすべての移行データを削除します。 次に、 mongosyncを再起動し、新しい移行を開始します。

Cluster-to-Cluster Syncは、ソースクラスターから宛先クラスターへのindex-feature-ttl の同期をサポートしています。

いいえ、宛先シャーディングされたクラスターでのチャンク分散をカスタマイズするように mongosync を構成することはできません。 mongosync は初期化中に各コレクションをサンプリングし、移行後に宛先クラスターのシャード全体にドキュメントを効率的に分散する方法を判断します。

戻る

0.9

項目一覧