Docs Menu
Docs Home
/
MongoDB Cluster-to-Cluster Sync
/ /

commit

項目一覧

  • 説明
  • 要件
  • リクエスト
  • リクエスト ボディ パラメータ
  • 応答
  • 同期の準備ができていることを確認する
  • コミット リクエストの送信
  • 動作
  • 状態
  • データ検証
  • コレクションの特性変更
  • エンドポイント保護

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

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

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

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

    警告

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

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

    • lagTimeSeconds0に近いです(推奨されていますが、必須ではありません

      注意

      LakeTimeSeconds

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

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

    • 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状態になると、クラスター間の継続的な同期が停止します。

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

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

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

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

コレクションの特性
影響 commit
Unique Indexes
commit は、宛先クラスターでmongosyncが非一意としてレプリケートした一意のインデックスをリセットします。
TTL Indexes
commit は、 mongosyncが宛先クラスターのMAX_INTの値に設定したexpireAfterSecondsをリセットします。
Hidden Indexes
commit は、宛先クラスターで非表示でないとしてmongosyncが複製した非表示インデックスをリセットします。
書き込みブロッキング

書込みブロックを有効にすると、 mongosyncでは以下の書き込みがブロックされます。

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

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

書込みブロック」も参照してください

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

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

戻る

再開