多対 1 の移行
重要
Cluster-to-Cluster Sync betaプログラム
この機能はmongosync
beta {0 でのみ使用できます。詳しくは、「 Cluster-to-Cluster Sync betaプログラム 」を参照してください。
mongosync
beta 1.8 以降では、多対 1 の移行を実行できます。 多対 1 の移行では、複数のソースクラスターを宛先クラスターと同時に同期できます。 たとえば、多数の小規模クラスターのデータを中央クラスターに統合できます。
構文
複数のソースクラスターを 1 つの宛先クラスターと同期するには、 mongosyncを起動するときに次のコマンドを実行します。
./bin/mongosync \ --cluster0 <source-A-connection-string> \ --cluster1 <destination-connection-string> \ --migrationName <string> ./bin/mongosync \ --cluster0 <source-B-connection-string> \ --cluster1 <destination-connection-string> \ --migrationName <string>
ソースクラスターと宛先クラスター間で同期操作を開始するには、「 クラスター間でのデータの同期 」を参照してください。
動作
名前空間はdatabase_name.collection_name
の組み合わせです。 競合しない名前空間のみを同期できます。
たとえば、次のシナリオについて考えてみましょう。
S 1と S 2の 2 つのソースクラスター。
宛先クラスター D.
S 1と S 2の両方に
inventory
とsales
という名前のデータベース。S 1と S 2の両方で、
products
、orderLines
、orderStatus
、orders
という名前のコレクション。これらの組み合わせの両方を同期できます。
inventory.products
D を持つ S 1上の とsales.orderStatus
。inventory.orderLines
D を持つ S 2上の とsales.orders
。
これらの組み合わせは競合するため、両方を同期することはできません。
inventory.products
inventory.orderLines
11Dinventory.products
inventory.orderLines
を使用して S 上の と 。D が最初に空の場合は、S を D と同期できます。 と は S1 から D にコピーされます。inventory.products
S 上の とinventory.orderLines
2 を D と同期します。S2 と D を同期することはできません。inventory.products
とinventory.orderLines
は、前のポイントのシナリオのシナリオですでに D 上の名前空間と競合するためです。
移行名
migrationName
string には、最大44個の英数字とアンダースコアの文字を含めることができます。 移行メタデータデータベース名を設定するために、string "mongosync_internal_"
にmigrationName
が追加されます。
たとえば、 migrationName
を"cluster_27000_to_cluster_35000_sync"
に設定すると、結果のmongosync
メタデータ データベース名は"mongosync_internal_cluster_27000_to_cluster_35000_sync"
になります。
検証
多対 1 の移行は 埋め込み検証子 と互換性がありません。検証子と多対 1 の移行の両方を有効にすると、 /start コマンドはエラーを返します。
詳細については、「データ転送を確認する 」を参照してください。
例
次の例では、ポート27000
と27001
で実行されているソースクラスターと、ポート35000
で実行されている宛先クラスターを接続します。 このコマンドでは、各同期の操作を説明し、移行メタデータを保存するために--migrationName
オプションも設定されています。
./bin/mongosync \ --cluster0 "mongodb://localhost:27000" \ --cluster1 "mongodb://localhost:35000" \ --migrationName "cluster_27000_to_cluster_35000_sync" ./bin/mongosync \ --cluster0 "mongodb://localhost:27001" \ --cluster1 "mongodb://localhost:35000" \ --migrationName "cluster_27001_to_cluster_35000_sync"