多对一迁移
重要
Cluster-to-Cluster Sync beta计划
此功能仅在 mongosync
beta中可用。 要学习;了解更多信息,请参阅 Cluster-to-Cluster Sync beta计划。
从mongosync
beta 1.8开始,您可以执行多对一迁移。 多对一迁移允许您同时将多个源集群与目标集群同步。 示例,您可以将许多小集群的数据整合到一个中央集群中。
语法
要将多个源集群与一个目标集群同步,请在启动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 。
目标集群D.
在 S 1和 S 2上名为
inventory
和sales
的数据库。S 1和 S 2上名为
products
、orderLines
、orderStatus
和orders
的集合。您可以同步这两种组合:
inventory.products
以及 S 1上的sales.orderStatus
和 D。inventory.orderLines
以及 S 2上的sales.orders
和 D。
您无法同步这两种组合,因为它们存在冲突:
inventory.products
以及 S 1上的inventory.orderLines
和 D。如果 D 最初为空,则可以将 S 1与 D同步。inventory.products
和inventory.orderLines
会从 S 1复制到 D。inventory.products
S 2上的inventory.orderLines
和 。您无法将 S 2与 D同步,因为inventory.products
和inventory.orderLines
与上点场景中 D 上已经存在的命名空间发生冲突。
迁移名称
migrationName
字符串最多可包含 44 个字母数字和下划线字符。migrationName
附加到字符串 "mongosync_internal_"
中以设置迁移元数据数据库名称。
例如,如果您将 migrationName
设置为 "cluster_27000_to_cluster_35000_sync"
,则生成的 mongosync
元数据数据库名称为 "mongosync_internal_cluster_27000_to_cluster_35000_sync"
。
例子
以下示例将在端口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"