commit
説明
ソースクラスターと宛先クラスター間の同期を終了し、クラスター間の継続的な同期を停止します。
詳細については、 「カットオーバー プロセスを確定する」を参照してください。
要件
commit
エンドポイントを使用する前に
アプリケーションを停止して、ソースクラスターへそれ以上の書込みが行われないようにします。 During commit, you may still read from the source cluster.
警告
コミット中にソースクラスターに書込むと、データが失われる可能性があります。
進行状況エンドポイントを使用して、次の値を確認します。
lagTimeSeconds
は0
に近いです(推奨されていますが、必須ではありません)注意
LakeTimeSeconds
lagTimeSeconds
は、最後に適用されたイベントから現在の最新イベントの時間までの時間を示します。commit
リクエストを送信すると、mongosync
はlagTimeSeconds
によって報告された秒数だけCOMMITTING
状態になり、その後COMMITTED
状態に移行します。lagTimeSeconds
が0
の場合、ソースクラスターと宛先クラスターは一貫した状態になります。state: "RUNNING"
canCommit: true
注意
シャーディングされたクラスター間で同期するように複数のmongosync
インスタンスを構成する場合は、各mongosync
インスタンスに同一の API エンドポイント コマンドを送信する必要があります。
リクエスト
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", "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
リクエストが成功すると、 mongosync
はCOMMITTED
状態になります。 mongosync
がCOMMITTED
状態になると、クラスター間の継続的な同期が停止します。
データ検証
アプリケーションの負荷をソースクラスターから宛先に転送する前に、データをチェックして、同期が成功していることを確認してください。
詳細については、「データ転送を確認する 」を参照してください。
コレクションの特性変更
commit
同期中にmongosync
が一時的に変更したコレクションの特性を復元します。
次の表は、同期プロセス中にmongosync
が変更するコレクション特性へのcommit
の影響を示しています。
コレクションの特性 | 影響 commit |
---|---|
Unique Indexes | commit は、宛先クラスターでmongosync が非一意としてレプリケートした一意のインデックスをリセットします。 |
TTL Indexes | commit は、 mongosync が宛先クラスターのMAX_INT の値に設定したexpireAfterSeconds をリセットします。 |
Hidden Indexes | commit は、宛先クラスターで非表示でないとしてmongosync が複製した非表示インデックスをリセットします。 |
書き込みブロッキング | |
上限付きコレクション | commit は、上限付きコレクションの必要な最大サイズをリセットし、宛先クラスターで最大許容サイズに設定されmongosync 。 |
エンドポイント保護
mongosync
は、 commit
エンドポイントを保護しません。 ただし、デフォルトでは、API は localhost のみにバインドされ、他のソースからの呼び出しは受け入れません。 さらに、 commit
呼び出しでは接続認証情報やユーザー データは公開されません。