よくある質問
項目一覧
mongosync
が同期している間に負荷レベルを変更できますか。mongosync
の同期中に宛先クラスターへの読み取りまたは書込みを実行できますか。mongosync
を使用して障害復旧クラスターを維持できますか。- 宛先クラスターのインデックスがソースクラスターのインデックスよりも大きいのはなぜですか?
mongosync
は独自のハードウェアで実行できますか?- 宛先クラスターにはどのようなハードウェア仕様が必要か?
- ソースクラスター内の
oplog
のサイズを増やす必要があるか? mongosync
で許可される接続文字列オプションはどれですか。- どのセキュリティと認証オプションがサポートされていますか?
- エラーが発生した場合、
mongosync
は自動的に再起動しますか? - ソースまたは宛先は、アービタを含むレプリカセットにすることはできますか。
- 低速操作の警告が表示された場合はどうなりますか。
- ログに「error」または「failure」という単語が含まれている場合は、移行を停止する必要がありますか。
- ログに重複キー エラーが多数表示される場合はどうなりますか。
- mongosync が致命的なエラーを返した場合、どうすればよいですか。
mongosync
は TTL インデックスをサポートしていますか- シャーディングされたクラスターに同期するときに、チャンクの分散をカスタマイズできますか。
このページでは、これまでに発生したよくある質問への回答を提供します。 さらに質問がある場合は、MongoDB サポートにお問い合わせください。
mongosync
が同期している間に負荷レベルを変更できますか。
はい、 同期中に を再構成する mongosync
の手順に従って、移行中にクラスターのワークロードレベルを調整できます。
mongosync
の同期中に宛先クラスターへの読み取りまたは書込みを実行できますか。
mongosync
は、同期中にソースから宛先への書き込みを組み合わせて順序を変更し、コレクションの特性を一時的に変更します。その結果、mongosync
は、同期が一時停止されている場合でも、同期が実行中の任意の点で、宛先がソースと一致することを保証できません(ソースの古いバージョンを含む)。宛先クラスターへのトラフィックを安全に受け入れるには、commit
への移行を待ちます。詳しくは、「継続的な同期に関する考慮事項」を参照してください。
同期中に宛先クラスターへの書き込みを実行すると、未定義の動作が発生します。 mongosync
はデフォルトで 宛先クラスターへの書込みをブロックします。 書込みブロックの詳細については、「 書込みブロックと start
を参照してください。
コミット時に、宛先クラスターは、canWrite
が true
の場合にのみ安全に書込み可能です。 の値を確認するには、canWrite
progress
エンドポイントを実行します。
同期中に許可される読み取りと書込みの詳細については、「 読み取りと書込み 」を参照してください。
注意
宛先クラスターでのインデックスビルドは、mongosync
の同期中は書込みとして扱われます。
mongosync
を使用して障害復旧クラスターを維持できますか。
いいえ、現在、mongosync
で障害復旧クラスターを維持することはできません。宛先クラスターへのトラフィックを安全に受け入れるには、mongosync
が commit
である必要があるためです。詳細については、「mongosync
の同期中に宛先クラスターへの読み取りまたは書込みを実行できますか?」を参照してください。
宛先クラスターのインデックスがソースクラスターのインデックスよりも大きいのはなぜですか?
次の要因により、宛先クラスターのインデックスサイズが増加する可能性があります。
mongosync
は移行中にデータを挿入および削除するため、ディスクにデータを非効率的に保存する可能性があります。デフォルトでは 、
mongosync
はデータをコピーする前にインデックスをビルドします。mongosync
は_id
の順序でデータをコピーします。 インデックスが_id
と相関しない場合、インデックスのサイズが大きくなる可能性があります。 詳細については、「 MongoDBマニュアルFAQ: インデックス 」ページを参照してください。
インデックスサイズの増加を軽減するには、次の方法を使用します。
mongosync
は独自のハードウェアで実行できますか?
はい、 mongosync
は独自のハードウェアで実行できます。 MongoDB インスタンスをホストするサーバーではmongosync
を実行する必要はありません。 mongosync
が独自のハードウェアで実行される場合、ソースクラスターまたは宛先クラスターの OS とは異なるオペレーティング システム(OS)を使用できます。
宛先クラスターにはどのようなハードウェア仕様が必要か?
ほとんどの移行では、宛先クラスターはソースクラスターよりも高いハードウェア仕様であり、次のプロパティが含まれている必要があります。
CPU
メモリ
Disk I/O
これらのハードウェア仕様により、宛先クラスターが mongosync
の書込みを処理でき、同期がソースクラスターのワークロードに追いつくことができます。
宛先クラスターには、移行される論理データ サイズと最初の同期の宛先oplogエントリーに十分対応できるディスクストレージが必要です。 例、10 GBのデータを移行するには、宛先クラスターでデータには少なくとも 10 GBが使用可能であり、最初の同期からの挿入oplogエントリ用にはさらに 10 GB が必要です。
埋め込み検証 を使用するには、宛先のoplogがより大きくなければなりません。埋め込み検証子を有効にして宛先oplogのサイズを減らすと、埋め込み検証子が追いつけない可能性があり、mongosync
がエラーを発生させる可能性があります。
宛先oplogエントリのオーバーヘッドを減らす必要があり、埋め込み検証子が無効になっている場合は、次の操作を実行できます。
oplogSizeMB
宛先クラスターのoplogサイズを小さくするには、 設定を使用します。oplogMinRetentionHours
を使用して 設定を解除し、宛先クラスターの最小oplog保持期間を短縮または削除します。
ソースクラスター内のoplog
のサイズを増やす必要があるか?
mongosync
は、コレクションコピー フェーズ後に、ソースクラスターの
oplog
の操作を宛先クラスターのデータに適用します。mongosync
が適用していなかった操作がソースクラスターの oplog
をロールオフすると、同期は失敗し、mongosync
は終了します。
注意
mongosync
は、宛先クラスターへの同期中にソースクラスターで行われたapplyOps
操作を複製しません。
大規模なデータセットの同期が予想される場合、または同期を長期間にわたって一時停止する予定の場合、 oplog windowを超える可能性があります。 ソースクラスター上のoplog
のサイズを増やすには、
oplogSizeMB
設定を使用します。
mongosync
で許可される接続文字列オプションはどれですか。
mongosync
にはreadConcern: "majority"とwriteConcern: "majority" が必要です。
readConcern
がmajority
でない場合、 mongosync
はエラーを返します。
Invalid URI option, read concern must be majority
writeConcern
がmajority
でない場合、 mongosync
はエラーを返します。
Invalid URI option, write concern must be majority
mongosync
は他のすべての接続stringオプションを受け入れます。
どのセキュリティと認証オプションがサポートされていますか?
mongosync
は標準のMongoDB接続stringを使用してソースクラスターと宛先クラスターに接続します。
LDAPとX 509がサポートされています。 利用可能な認証オプションについては、「自己管理型配置での認証 」を参照してください。
エラーが発生した場合、 mongosync
は自動的に再起動しますか?
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」という単語が含まれている場合は、移行を停止する必要がありますか。
いいえ、「error」または「failure」という単語を含むログは致命的でないエラーを表示し、 mongosync
を早期に停止する必要があることを示すものではありません。 これらのログは、 mongosync
の障害やデータの破損を示すものではありません。 致命的なエラーが発生した場合、 mongosync
は同期を停止し、致命的なログエントリを書込みます。
ログに重複キー エラーが多数表示される場合はどうなりますか。
重複キー エラーは、同期プロセスの通常の一部です。 このようなエラーは、次の場合に発生する可能性があります。
mongosync
の起動後にソースクラスターにドキュメントを挿入します。mongosync
はドキュメントを直接コピーし、後でドキュメントの挿入変更イベントを冗長に適用できます。mongosync
を停止して再開します。 これにより、mongosync
の再起動時に重複挿入が発生する可能性があります。mongosync
は一時的なエラーが発生し、すでに成功している可能性のある挿入を再試行します。
mongosync が致命的なエラーを返した場合、どうすればよいですか。
致命的なエラーは修正する必要がある問題を示し、移行を再開する必要があります。 エラーに対処した後、 mongosync_reserved_for_internal_use
データベースを含む宛先クラスター上のすべての移行データを削除します。 次に、 mongosync
を再起動し、新しい移行を開始します。
mongosync
は TTL インデックスをサポートしていますか
Cluster-to-Cluster Sync は、ソースクラスターから宛先クラスターへのTTL インデックスの同期 をサポートしています。
シャーディングされたクラスターに同期するときに、チャンクの分散をカスタマイズできますか。
いいえ、宛先シャーディングされたクラスターでのチャンク分散をカスタマイズするように mongosync
を構成することはできません。 mongosync
は初期化中に各コレクションをサンプリングし、移行後に宛先クラスターのシャード全体にドキュメントを効率的に分散する方法を判断します。