説明
コミットされた同期操作の方向を逆にします。
以下に例を挙げます。
COMMITTED同期操作があります。cluster0がソースで、cluster1が宛先です。同期操作が
COMMITTED後、新しい書込み (write) は宛先クラスターでのみ発生します。 ソースクラスターは新しい書込み (write) を受け入れません。
このシナリオでは、 reverseエンドポイントを使用して、 cluster1からcluster0への書込み(write)を同期できます。これには、 mongosyncがcanWrite=trueに達した後にcluster1で発生した書込みも含まれます。 同期中にcanWriteステータスを確認するには、 /progressエンドポイントを使用します。
reverseエンドポイントの使用に関する詳細とチュートリアルについては、「 逆同期方向 」を参照してください。
要件
reverseエンドポイントを使用するには:
mongosync最初の同期を開始するときに構成する必要があります。 /start API エンドポイントの呼び出しでは、以下を設定する必要があります。reversible次の行動をします:trueenableUserWriteBlockingtrueに設定されている場合にのみ使用できます。
注意
書込みブロックは、 reverseを実行中するための前提条件です。
同期の開始後に、これらのオプションを更新することはできません。
mongosyncはCOMMITTED状態である必要があります。宛先クラスターの oplog は、
mongosyncがcanWrite=trueに達してから/reverseリクエストの受信までの間、ロールオーバーされないようにする必要があります。一意のインデックスには適切な形式が必要です。 MongoDB 4.2で最初に作成されたインデックスを持つコレクションには、適切な形式がない可能性があります。
コレクション インデックスが適切な形式を使用していることを検証するには、「一意なインデックスの検証 」を参照してください。
ソースクラスターと宛先クラスターは同じ数のシャードを持つ必要があります。 クラスターのトポロジーまたはメジャー バージョンが異なる場合、逆同期はできません。
mongosync接続文字列で指定されたユーザーには、ソースクラスターと宛先クラスターで必要な権限が必要です。権限は、環境と、書込み同期を実行するか、逆同期を実行するかによって異なります。
注意
シャーディングされたクラスター間で同期するように複数のmongosyncインスタンスを構成する場合は、各mongosyncインスタンスに同一の API エンドポイント コマンドを送信する必要があります。
詳細については、「複数の Mongosync を元に戻す 」を参照してください。
Validate Unique Indexes
方向を逆にするには、 mongosyncではすべての一意のインデックスが正しい形式を使用している必要があります。 MongoDB 4.2またはそれ以前のバージョンで開始され、アップグレード以降にアップグレードされたクラスターには、適切に形式されていない一意のインデックスが含まれている場合があります。
インデックスを修正するには、元のソースクラスター内のすべてのノードを再同期します。 すべてのノードを再同期するには:
すべてのセカンダリを 1 つずつ再同期します。
ノードの再同期のチュートリアルについては、「レプリカセットのノードの再同期 」を参照してください。
あるいは、再同期を回避するために、すべてのノードで一意なインデックスを持つ各コレクションでfull = falseとdb.collection.validate()メソッドを使用して、各コレクションに不適切な形式の一意なインデックスが含まれているかどうかを判断できます。 db.collection.validate()が一意なインデックスに関する警告を返さない場合は、再同期をスキップできます。
リクエスト
POST /api/v1/reverse
リクエスト ボディ パラメータ
このエンドポイントは、HTTP リクエスト本体のパラメータを使用しません。 ただし、空のオブジェクト{ }を使用して--dataオプションを指定する必要があります。
応答
フィールド | タイプ | 説明 |
|---|---|---|
| ブール値 | リクエストが成功した場合、この値は |
| string | エラーが発生した場合、 はエラーの名前を示します。 このフィールドは、 |
| string | 発生したエラーの詳細な説明。 このフィールドは、 |
例
次の例では、コミットされた同期操作の方向を逆にします。
リクエスト
curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
応答
{"success":true}
動作
逆エンドポイントはREVERSING状態を開始します。 mongosyncはソースクラスターと宛先クラスターをスワップし、変更イベントの適用を再開します。
reverseの同期が成功すると、 mongosyncはRUNNING状態になります。 同期は、元の同期ジョブとは逆方向に続行されます。 元のデータをコピーするために、同期プロセス全体を再起動する必要はありません。
ソースクラスターと宛先クラスターの同期のマッピング方向を表示するには、進行状況エンドポイントを使用し、 directionMappingオブジェクトを確認します。
エンドポイント保護
mongosync は、 reverseエンドポイントを保護しません。 ただし、デフォルトでは、API は localhost のみにバインドされ、他のソースからの呼び出しは受け入れません。 さらに、 reverse呼び出しでは接続認証情報やユーザー データは公開されません。