説明
ソースクラスターと宛先クラスター間の同期を終了します。
詳細については、 「カットオーバー プロセスを確定する」を参照してください。
要件
commitエンドポイントを使用する前に
アプリケーションを停止して、ソースクラスターへそれ以上の書込みが行われないようにします。 During commit, you may still read from the source cluster.
警告
コミット中にソースクラスターに書込むと、データが失われる可能性があります。
進行状況エンドポイントを使用して、次の値を確認します。
lagTimeSecondsmongosync、検証子のソースクラスター、検証子の宛先クラスターはすべて0に近いです(推奨されていますが、必須ではありません)注意
LakeTimeSeconds
lagTimeSecondsは、最後に適用されたイベントから現在の最新イベントの時間までの時間を示します。commitリクエストを送信すると、mongosyncはlagTimeSecondsによって報告された秒数だけCOMMITTING状態になり、その後COMMITTED状態に移行します。lagTimeSecondsが0の場合、ソースクラスターと宛先クラスターは一貫した状態になります。lagTimeSecondsフィールドの詳細については、progressを参照してください。state: "RUNNING"canCommit: true
注意
シャーディングされたクラスター間で同期するように複数のmongosyncインスタンスを構成する場合は、各mongosyncインスタンスに同一の API エンドポイント コマンドを送信する必要があります。
リクエスト
POST /api/v1/commit
リクエスト ボディ パラメータ
このエンドポイントは、HTTP リクエスト本体のパラメータを使用しません。 ただし、空のオブジェクト{ }を使用して--dataオプションを指定する必要があります。
応答
フィールド | タイプ | 説明 |
|---|---|---|
| ブール値 | リクエストが成功した場合、この値は |
| string | エラーが発生した場合、 はエラーの名前を示します。 このフィールドは、 |
| string | 発生したエラーの詳細な説明。 このフィールドは、 |
例
次の例では、宛先クラスターに同期操作をコミットします。
同期の準備ができていることを確認する
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 |
|
TTL Indexes |
|
Hidden Indexes |
|
書き込みブロッキング | |
上限付きコレクション |
|
エンドポイント保護
mongosync は、 commitエンドポイントを保護しません。 ただし、デフォルトでは、API は localhost のみにバインドされ、他のソースからの呼び出しは受け入れません。 さらに、 commit呼び出しでは接続認証情報やユーザー データは公開されません。