AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

commit

ソースクラスターと宛先クラスター間の同期を終了します。

詳細については、「カットオーバー プロセスの終了 」を参照してください。

commitエンドポイントを使用する前に

  • 警告

    移行 をコミットする前に書込みを確実に停止するには、以下の手順を実行する必要があります。

    • "majority"移行を通じてソースクラスター上の同期されたコレクションに書き込まれるすべてのアプリケーション書き込みに 書込み保証 (write concern)を使用します。

    • 同期されたコレクションへのすべての書き込みを正常にシャットダウンします。

    それ以外の場合、カットオーバーが開始された後に書込み (write) を適用できます。

    • カットオーバーの進行中に書込み (write) が適用されると、mongosync は書込みを検出します。移行は永続的に失敗するため、再度実行する必要があります。

    • カットオーバーが完了した後に書込み (write) が適用された場合、mongosync はそれらを検出しません。これらの書込み (write) は失われ、移行によって暗黙的にデータが破損します。

    コミット中も、ソースクラスターから読み取ることができます。

  • 進行状況エンドポイントを使用して、次の値を確認します。

    • lag.overallLagSeconds 0 に近い (推奨)

      注意

      lag.overallLagSeconds

      lag.overallLagSeconds 最後に適用されたイベントと現在の最新イベントの時間の間の時間を示します。commit リクエストを送信すると、mongosync は lag.overallLagSeconds によって報告された秒数だけ COMMITTING 状態になり、その後 COMMITTED 状態に移行します。

      lag.overallLagSecondsが0の場合、ソースクラスターと宛先クラスターは一貫した状態になります。

      lag フィールドの詳細については、progress を参照してください。

    • verification.source.lagTimeSeconds および verification.destination.lagTimeSeconds は 0 の近くにあります (推奨)

    • state: "RUNNING"

    • canCommit: true

      バージョン1.21での変更:

      canCommit mongosync の場合、または組み込みのベリファイアが 30 秒を超える遅延を報告した場合、false となります。canCommit が false の場合に /commit を呼び出すと、エラーが返されます。

注意

シャーディングされたクラスター間で同期するように複数のmongosyncインスタンスを構成する場合は、各mongosyncインスタンスに同一の API エンドポイント コマンドを送信する必要があります。

詳しくは、「複数のmongosyncインスタンスからの同期のコミット 」を参照してください。

POST /api/v1/commit

このエンドポイントは、HTTP リクエスト本体のパラメータを使用しません。 ただし、空のオブジェクト{ }を使用して--dataオプションを指定する必要があります。

フィールド
タイプ
説明

success

ブール値

リクエストが成功した場合、この値はtrueになります。

error

string

エラーが発生した場合、 はエラーの名前を示します。 このフィールドは、 successがtrueの場合、応答から省略されます。

errorDescription

string

発生したエラーの詳細な説明。 このフィールドは、 successがtrueの場合、応答から省略されます。

次の例では、宛先クラスターに同期操作をコミットします。

commitエンドポイントにリクエストを送信する前に、進行状況エンドポイントを使用して同期をコミットする準備ができていることを確認します。

curl localhost:27182/api/v1/progress -XGET
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "ceaStage":"steady state", "lag": { "overallLagSeconds": 0, "crudLagSeconds": 0, "ddlLagSeconds": null }, "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" }, "source": { "pingLatencyMs":250 }, "destination": { "pingLatencyMs":-1 }, "verification": { "source": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" }, "destination": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" } } }, "success": true}

progressエンドポイントは"canCommit":trueを返しました。つまり、 commitリクエストは正常に実行できます。

次のコマンドは、 commitエンドポイントに リクエストを送信します。

curl localhost:27182/api/v1/commit -XPOST --data '{ }'
{"success":true}

commitリクエストが成功すると、mongosync は COMMITTED 状態になります。mongosync が COMMITTED 状態になると、クラスター間のデータ移行が停止します。

アプリケーションの負荷をソースクラスターから宛先に転送する前に、データをチェックして、同期が成功していることを確認してください。

注意

mongosyncコミット中に canWrite: trueが停止した場合、/progress エンドポイントが を報告する前に、移行全体を再開して、確実に検証されるようにする必要があります。

詳細については、「データ転送を確認する 」を参照してください。

/startを呼び出すときに buildIndexes を "afterDataCopy" または "excludeHashedAfterCopy" に設定すると、宛先クラスターにすべてのソース インデックスが構築されるまで、mongosync は commit リクエストをブロックします。

commit 同期中にmongosyncが一時的に変更したコレクションの特性を復元します。

次の表は、同期プロセス中にmongosyncが変更するコレクション特性へのcommitの影響を示しています。

コレクションの特性
影響 commit

Unique Indexes

commit は、宛先クラスターでmongosyncが非一意としてレプリケートした一意のインデックスをリセットします。

TTL Indexes

commit は、 mongosyncが宛先クラスターのMAX_INTの値に設定したexpireAfterSecondsをリセットします。

Hidden Indexes

commit は、宛先クラスターで非表示でないとしてmongosyncが複製した非表示インデックスをリセットします。

書き込みブロッキング

デフォルトでは、同期中に宛先クラスターで commit と を呼び出すと、mongosync はソースクラスターへの書込みをブロックします。

mongosync が書込みブロックを処理する方法の詳細については、書込みブロック を参照してください。

上限付きコレクション

commit は、上限付きコレクションの必要な最大サイズをリセットし、宛先クラスターで最大許容サイズに設定されmongosync 。

mongosync は、 commitエンドポイントを保護しません。 ただし、デフォルトでは、API は localhost のみにバインドされ、他のソースからの呼び出しは受け入れません。 さらに、 commit呼び出しでは接続認証情報やユーザー データは公開されません。