命名空间重映射
重要
Cluster-to-Cluster Sync beta计划
此功能仅在 mongosync
beta中可用。 要学习;了解更多信息,请参阅 Cluster-to-Cluster Sync beta计划。
从mongosync
beta 1.8开始,您可以在同步期间重新映射数据库名称。 这样就可以将源集群上一个数据库中的数据迁移到目标集群上的另一个数据库中。
要使用命名空间重新映射,源集群和目标集群都必须使用受支持的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 | 阵列 | Optional | 指定在同步期间进行的命名空间更改的文档数组。 1.8 版本中的新增功能:beta |
namespaceRemap[n]. from | 文档 | 必需 | 用于指定在重新映射操作中从中迁移的源集群上的数据库的文档。 1.8 版本中的新增功能:beta |
namespaceRemap[n]. from.database | 字符串 | 必需 | 源集群上要迁移的数据库。 1.8 版本中的新增功能:beta |
namespaceRemap[n]. to | 文档 | 必需 | 用于指定在重映射操作中要迁移到的目标集群上的数据库的文档。 1.8 版本中的新增功能:beta |
namespaceRemap[n]. to.database | 字符串 | 必需 | 目标集群上要迁移到的数据库。 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}