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

reverse

反转已提交同步操作的方向。

例如:

  • 您有一个COMMITTED同步操作。

  • cluster0 是源, cluster1是目标。

  • 同步操作为COMMITTED后,新的写入仅发生在目标集群上。 源集群不会接受新的写入。

在这种情况下,您可以使用reverse端点将写入从cluster1同步到cluster0 ,包括mongosync到达canWrite=true之后在cluster1上发生的任何写入。 要在同步期间检查canWrite状态,请使用 /progress端点。

有关使用reverse 端点的更多信息和教程,请参阅反向同步方向。

要使用reverse端点:

  • mongosync 必须在初始同步开始时配置。 对/start API 端点的调用必须设置:

    • reversible to true

    • enableUserWriteBlocking"sourceAndDestination"

注意

双重写入阻塞是运行 reverse的先决条件。

同步开始后,您无法更新这些选项。

  • mongosync 必须处于COMMITTED状态。

  • 目标集群 oplog 在mongosync到达canWrite=true和接收/reverse请求之间不得滚动。

警告

源集群上的唯一索引不得使用传统格式。

要验证源集群上的集合索引是否使用正确的格式,请参阅验证唯一索引。

  • 源集群和目标集群的分片数量必须相同。当集群具有不同的拓扑或主要版本时,将无法进行反向同步。

  • mongosync连接字符串中指定的用户必须对源集群和目标集群具有所需的权限。 这些权限会有所不同,具体取决于您的环境以及您是否要修改写入阻止设置或使用反向同步。

注意

当您配置多个mongosync实例在分片集群之间同步时,您必须向每个mongosync实例发送相同的 API 端点命令。

有关更多信息,请参阅反向多个 Mongosync。

为了反转方向,mongosync 要求源集群上的所有唯一索引(_id 除外)都没有旧版唯一索引键。

您可以通过 聚合阶段确保非_id $collStats唯一索引在源集群上使用正确的格式。要在集合上运行此聚合管道,请复制并粘贴示例代码,将<collection> 替换为集合名称,并将<field_name> 替换为索引字段的名称。对于具有唯一索引的所有集合,必须在所有节点上运行此命令。请注意,只有非_id 唯一索引需要具有 formatVersion1314

db.<collection>.aggregate( [
{ $collStats: { storageStats: { } } },
{ $project: { "storageStats.indexDetails.<field_name>.metadata.formatVersion": 1 } }
] )
[
{
storageStats: {
indexDetails: { <field_name>: { metadata: { formatVersion: 14 } } }
}
}
]

formatVersion 1314 的唯一索引保证没有旧键。

如果具有不同 formatVersion 的唯一索引,还可以使用带有db.collection.validate()full = false 方法来确认是否存在旧索引键。您必须在所有节点上为具有唯一索引的所有集合运行此命令。如果检测到传统格式索引键,validate() 会返回警告。

要更新索引的格式版本以与mongosync 兼容,您必须重新同步原始源集群中的所有节点。要重新同步所有节点:

1

有关重新同步节点的教程,请参阅重新同步副本集的节点。

2
3
POST /api/v1/reverse

此端点不使用 HTTP 请求正文参数。 但是,您必须指定带有空对象{ }--data选项。

字段
类型
说明

success

布尔

当请求成功时,该值为true

error

字符串

如果发生错误,则指示错误名称。 当successtrue时,响应中将省略此字段。

errorDescription

字符串

所发生错误的详细描述。 当successtrue时,响应中将省略此字段。

以下示例反转了已提交同步操作的方向。

curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
{"success":true}

reverse 端点启动 REVERSING 状态。 mongosync 会交换源集群和目标集群,并继续应用变更事件。

如果reverse同步成功, mongosync将进入RUNNING状态。 同步从原始同步作业的相反方向继续进行。 您无需重新启动整个同步进程即可复制原始数据。

要查看源集群和目标集群同步的映射方向,请使用进度端点并检查directionMapping对象。

默认下,会为副本集迁移启用嵌入式验证程序。

mongosync 不保护reverse端点。 但是,默认情况下,该 API 仅绑定到本地主机,不接受来自其他来源的调用。 此外, reverse调用不会公开连接档案或用户数据。

reverse 端点不支持:

后退

提交

在此页面上