Docs 菜单
Docs 主页
/
MongoDB Cluster-to-Cluster Sync
/ /

多对一迁移

在此页面上

  • 语法
  • 行为
  • 例子
  • 了解详情

重要

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上名为inventorysales的数据库。

  • S 1和 S 2上名为productsorderLinesorderStatusorders的集合。

  • 您可以同步这两种组合:

    • 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.productsinventory.orderLines会从 S 1复制到 D。

    • inventory.products S 2上的 inventory.orderLines 和 。您无法将 S 2与 D同步,因为inventory.productsinventory.orderLines与上点场景中 D 上已经存在的命名空间发生冲突。

migrationName 字符串最多可包含 44 个字母数字和下划线字符。migrationName 附加到字符串 "mongosync_internal_" 中以设置迁移元数据数据库名称。

例如,如果您将 migrationName 设置为 "cluster_27000_to_cluster_35000_sync",则生成的 mongosync 元数据数据库名称为 "mongosync_internal_cluster_27000_to_cluster_35000_sync"

以下示例将在端口2700027001上运行的源集群与在端口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"

后退

A->B-> C迁移