commit
説明
ソースクラスターと宛先クラスター間の同期を終了し、クラスター間の継続的な同期を停止します。
詳細については、「カットオーバー プロセスの終了 」を参照してください。
要件
commit
エンドポイントを使用する前に
アプリケーションを停止して、ソースクラスターへそれ以上の書込みが行われないようにします。 During commit, you may still read from the source cluster.
警告
コミット中にソースクラスターに書込むと、データが失われる可能性があります。
進行状況エンドポイントを使用して、次の値を確認します。
lagTimeSeconds
のmongosync
、検証子のソースクラスター、検証子の宛先クラスターはすべて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
エンドポイントを保護しません。 However, by default the API binds to localhost only and does not accept calls from other sources. さらに、 commit
呼び出しでは接続認証情報やユーザー データは公開されません。