名前空間の再マッピング
重要
Cluster-to-Cluster Sync betaプログラム
この機能はmongosync
beta {0 でのみ使用できます。詳しくは、「 Cluster-to-Cluster Sync betaプログラム 」を参照してください。
mongosync
beta 1.8 以降では、同期中にデータベース名を再マッピングできます。 これにより、ソースクラスターの 1 つのデータベースのデータを取得し、それを宛先クラスターの別のデータベースに移行できます。
名前空間の再マッピングを使用するには、ソースクラスターと宛先クラスターの両方でサポートされている MongoDB バージョンを使用する必要があります。
構文
/start API エンドポイントは、次の構文を持つ任意のnamespaceRemap
パラメータを受け入れます。
curl <host>:<port>/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" "namespaceRemap": [ { "from": { "database": "<source-database>" }, "to": { "database": "<destination-database>" } } ] } '
パラメーター フィールド
フィールド | タイプ | 必須 | 説明 |
---|---|---|---|
namespaceRemap | 配列 | 任意 | 同期中に行う名前空間の変更を指定するドキュメントの配列。 バージョン1.8の新機能: beta |
namespaceRemap[n]. from | ドキュメント | 必須 | 再マッピング操作 で移行するソースクラスター上のデータベースを指定するドキュメント。 バージョン1.8の新機能: beta |
namespaceRemap[n]. from.database | string | 必須 | ソースクラスターで移行するデータベース。 バージョン1.8の新機能: beta |
namespaceRemap[n]. to | ドキュメント | 必須 | リマッピング操作で移行する宛先クラスター上のデータベースを指定するドキュメント。 バージョン1.8の新機能: beta |
namespaceRemap[n]. to.database | string | 必須 | 宛先クラスターで移行するデータベース。 バージョン1.8の新機能: beta |
動作
有効な名前空間再マッピング
名前空間の再マッピングには次の制限が適用されます。
名前空間の再マッピングでは、
system
、config
、admin
、またはlocal
データベースへの書き込み、またはmongosync
で使用される内部データベースへの書き込みは許可されません。宛先クラスター上のデータベース名は、Windows の制限内で有効である必要があります。
詳細については、「 Windows のデータベース名に関する制限 」を参照してください。
宛先クラスターで再マッピングされたデータベース名は、大文字と小文字のみが異なることはありません。
名前空間のリマップを指定して、
reversible
フラグをtrue
に設定することはできません。再マップにより、宛先クラスターで名前空間の競合が発生することはありません。
以下に例を挙げます。
"namespaceRemap": [ { "from": { "database": "us-west" }, "to": {"database": "us-accounts" } }, { "from": { "database": "us-south" }, "to": { "database": "us-accounts" } } ] ソースクラスターの各データベースに
texas
コレクションが含まれている場合、mongosync
は失敗したり、データが破損したり、予期しない動作が発生したりする可能性があります。
手順
名前空間の再マッピングでクラスターを同期する
次の/start呼び出しで同期が開始され、ソースクラスターのaccounts
データベースが宛先クラスターのsales
データベースに再マッピングされます。
curl -X POST "http://localhost:27182/api/v1/start" --data ' { "source": "cluster0", "destination": "cluster1", "namespaceRemap": [ { "from": { "database": "accounts", }, "to": { "database": "sales", } } ] } '
応答例:
{"success":true}