ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

commit

ソースクラスターと宛先クラスター間の同期を終了し、クラスター間の継続的な同期を停止します。

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

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

  • アプリケーションを停止して、ソースクラスターへそれ以上の書込みが行われないようにします。 During commit, you may still read from the source cluster.

    警告

    コミット中にソースクラスターに書込むと、データが失われる可能性があります。

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

    • lagTimeSecondsmongosync、検証子のソースクラスター、検証子の宛先クラスターはすべて 0 に近いです(推奨されますが、必須ではありません

      注意

      LakeTimeSeconds

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

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

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

    • state: "RUNNING"

    • canCommit: true

注意

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

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

POST /api/v1/commit

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

フィールド
タイプ
説明

success

ブール値

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

error

string

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

errorDescription

string

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

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

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

curl localhost:27182/api/v1/progress -XGET
{
"progress":
{
"state":"RUNNING",
"canCommit":true,
"canWrite":false,
"info":"change event application",
"lagTimeSeconds":0,
"collectionCopy":
{
"estimatedTotalBytes":694,
"estimatedCopiedBytes":694
},
"directionMapping":
{
"Source":"cluster0: localhost:27017",
"Destination":"cluster1: localhost:27018"
},
"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リクエストが成功すると、 mongosyncCOMMITTED状態になります。 mongosyncCOMMITTED状態になると、クラスター間の継続的な同期が停止します。

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

注意

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

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

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

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

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

Unique Indexes

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

TTL Indexes

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

Hidden Indexes

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

書き込みブロッキング

二重書込みブロックを有効にすると、mongosync は以下の書込みをブロックします。

  • 同期中の宛先クラスター上。

  • ソースクラスターで commit を受信したとき

mongosync では、宛先のみの書込みブロックがデフォルトで有効になります。

詳しくは、「 書込みブロック 」を参照してください。

上限付きコレクション

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

mongosynccommitエンドポイントを保護しません。 However, by default the API binds to localhost only and does not accept calls from other sources. さらに、 commit呼び出しでは接続認証情報やユーザー データは公開されません。