Docs 菜单
Docs 主页
/ /
Atlas App Services
/

迁移 Device Sync 模式

在此页面上

  • 要求
  • 迁移前须知
  • 迁移阶段
  • 将基于分区的同步迁移到 Flexible Sync
  • 开始迁移
  • 迁移权限和规则
  • 取消迁移
  • 提交迁移
  • 恢复迁移
  • 后端迁移后
  • 将客户端应用程序迁移到Flexible Sync

Atlas App Services 应用可以具有两种 Device Sync 模式之一:基于分区的同步Flexible Sync 。基于分区的同步是较旧的模式,应考虑迁移到 Flexible Sync。

将使用基于分区的同步的 App Services App 迁移到 Flexible Sync 是一个自动过程。 除了升级 SDK 版本之外,迁移同步模式不需要对客户端应用代码进行任何更改。

迁移导致基于分区的同步客户端与 Flexible Sync后端通信。 我们建议最终迁移客户端应用代码,以也使用 Flexible Sync 而不是基于分区的同步。

App Services App:

  • 当前使用基于分区的同步

关联 Atlas 集群:

  • 使用 MongoDB 5.0 或更高版本实现 Flexible Sync 兼容性

  • 启用存储自动伸缩

  • 成为 M10+ 集群层级

  • 启用基于时间的oplog设置

客户端应用程序:

  • 最低Atlas Device SDK版本:

    • Swift SDK v 10.40.0或更高版本

    • Kotlin SDK v 1.9.0或更高版本

    • Node.js SDK v 11.10.0或更高版本

    • React Native SDK v 11.10.0或更高版本

    • .NET SDK v 11.1.0或更高版本

    • Java SDK v 10.16.0或更高版本

  • 配置客户端重置处理程序

迁移应用程序的同步模式涉及会影响客户端应用程序和应用程序后端的更改。 您应该了解其影响并提前计划。

  • 不符合最低 SDK 版本要求的客户端应用程序将无法在迁移后进行同步。

  • 迁移所需的时间与需要迁移的数据量成正比。 数据越多,迁移所需的时间就越长。

  • 可以在迁移期间取消迁移,也可以在迁移完成后的特定时间范围内恢复迁移。

  • 迁移后,进度通知将不起作用,因为 Flexible Sync 不支持进度通知。

  • 在后端迁移到 Flexible Sync 后,连接到基于分区的同步后端的客户端应用程序将经历客户端重置。 您应该使用启用了恢复功能的客户端重置处理程序,这样就不会丢失客户端重置之前的任何待处理更改。

  • 从基于分区的同步客户端使用开发模式在迁移的 Flexible Sync 后端创建新表可能会导致意外行为。

您可以在 App Services 用户界面中查看迁移的阶段。 同步模式迁移分为三个阶段:

  1. 同步基于分区的同步元数据

    在此阶段,客户端应用程序可以连接到应用程序的后端,但本地写入不会同步。 如果没有客户端重置处理程序来恢复未同步的更改,这些写入操作将会丢失。

    客户端将收到已同步collection的更新,但无法发送上传内容或接收上传确认。

  2. 构建 Flexible Sync 元数据

    客户端在此阶段无法连接。 此阶段的持续时间与同步collection中的数据量成正比。

  3. 已完成的迁移

    Manage Sync Migration 如果尚未提交或恢复迁移,则会出现在 Device Sync 页面上。

迁移完成后,请查看迁移后部分,详细了解基于分区的同步客户端如何与 Flexible Sync 后端交互。

开始从基于分区的同步迁移到 Flexible Sync 后,该过程大部分是自动完成的。 但是,您可以控制迁移的重要部分。

在迁移过程中,您可以取消迁移。 迁移后,您可以恢复迁移或手动提交迁移。

在开始迁移之前,请确保您了解迁移阶段影响。

迁移通常与终止和重新启用 Device Sync 具有类似的效果。 迁移还会产生一些其他影响:

  • 在App Services用户界面中,所有配置页面均为只读。 示例,“规则”、“模式”、“函数”和“触发器”屏幕。

  • 您的应用将经历一段时间的只读同步,然后是一段停机时间。

  • 新的 Flexible Sync 配置将客户端最长离线时间设置为 30 天。

  • Atlas 集群中 Device Sync 元数据使用的存储空间暂时增加一倍。 基于分区的同步元数据和 Flexible Sync 元数据必须暂时共存。 根据同步数据的大小,这可能会影响每次迁移时的计费。 回滚或提交迁移后,重复的元数据将被删除。

从基于分区的同步迁移到 Flexible Sync:

  1. 导航至Device Sync屏幕:

    在App Services用户界面中,单击左侧导航菜单中的Device Sync 。 默认显示Dashboard标签页。

  2. 选择 Configuration 标签页。

  3. 单击 Start migration(连接)。

    开始迁移
    点击放大
  4. 查看迁移进程的信息,然后单击Next: Migration Requirements

  5. 确保您满足迁移要求,然后点击Start Migration

注意

临时同步中断

在迁移完成之前,客户端无法同步其本地写入。

迁移完成后,基于分区的同步客户端应用程序将进行客户端重置。 然后,它们就可以与应用程序的 Flexible Sync 后端通信。 您可以禁用并重新启用Flexible Sync,客户端应用程序仍将与后端通信。

如果重新启用基于分区的同步,您将失去“已迁移”状态。 这意味着,如果您想在后端通过基于分区的同步客户端应用程序使用“Flexible Sync”,则需要再次进行迁移。

如果基于分区的同步规则具有直接等效的 App Services 规则,则应用的权限和规则将自动迁移。 这将覆盖之前定义的 App Services 规则。

在上面的第 4 步中,您将看到您的权限和规则是否可以自动迁移。 在 App Services 用户界面的Review Migration Process步骤中,查找Rules & Permissions

某些基于分区的同步规则策略无法直接转换为App Services 规则。您可能需要手动迁移包含以下内容的权限:

有关所有支持的扩展,请参阅灵活同步兼容扩展列表。

您还应该查看《设备同步权限指南》,了解有关如何使用权限的更多信息。

您可以随时取消正在进行的迁移。 这将使您的应用返回基于分区的同步,其中所有设置都保持为迁移开始之前的状态。

如果取消迁移,则需要从头开始进行未来的迁移尝试。

要取消迁移:

  1. 导航到Device Sync屏幕:

    在App Services用户界面中,单击左侧导航菜单中的Device Sync 。 默认显示Dashboard标签页。

  2. 选择 Configuration 标签页。

  3. 在通知横幅中,单击Cancel Migration

    取消迁移
    点击放大

    这将取消您的迁移。 如果您想将来启用“Flexible Sync”,则需要再次迁移。

迁移完成后,就处于评估状态。 您可以手动提交迁移以使其永久化,也可以还原迁移以将应用返回到基于分区的同步。

如果您不提交或恢复迁移,它将根据您的最小oplog window自动提交。 示例,如果您的最小oplog window为48小时,则您将有48小时的时间来恢复迁移。

提交迁移后,旧的基于分区的同步元数据将被删除,并且您无法恢复迁移。

要手动提交迁移,请执行以下操作:

  1. 导航到Device Sync屏幕:

    在App Services用户界面中,单击左侧导航菜单中的Device Sync 。 默认显示Dashboard标签页。

  2. 选择 Configuration 标签页。

  3. 在页面顶部,单击Manage migration下拉列表,然后选择Delete Partition-Based Sync metadata

    提交迁移
  4. 确认要删除元数据并提交迁移到 Flexible Sync。

    重要

    基于分区的同步元数据一旦删除,就无法恢复。

您可以在迁移完成之后、提交之前恢复迁移。

已完成的迁移将根据您的最小 oplog window自动提交。 您可以通过调整最小oplog window来增加或减少恢复迁移的时间。

已提交的迁移无法恢复。

与取消迁移类似,如果您恢复迁移,则需要从头开始进行未来的迁移尝试。

要恢复迁移,请执行以下操作:

  1. 导航到Device Sync屏幕:

    在App Services用户界面中,单击左侧导航菜单中的Device Sync 。 默认显示Dashboard标签页。

  2. 选择 Configuration 标签页。

  3. Manage Sync部分中,单击Manage migration下拉列表,然后选择Revert back to Partition-Based Sync

    恢复迁移

    这将恢复您的迁移。 如果您想将来启用“Flexible Sync”,则必须再次迁移。

迁移的后端使用对象模型中的分区键字段将基于分区的同步客户端对象映射到后端上的 Flexible Sync 等效项。 如果您的对象模型没有分区键字段,则后端会自动向基于分区的同步客户端创建的每个对象注入一个分区键字段。

以下是您应该注意的注入字段的其他一些特征:

  • 注入的字段遵循以下结构: <yourPartitionKey> == <yourPartitionValue> 。 字段键派生自旧的基于分区的同步后端配置。 该值派生自当前基于分区的同步客户端配置。

  • 注入的字段不会同步回创建该对象的客户端。 这意味着原始客户端将无法读取注入的partitionKey字段。

基于分区的同步客户端会自动为每个partitionKey == partitionValue的表创建同步订阅。 这将持续到您将客户端应用迁移到Flexible Sync。

将客户端应用迁移到Flexible Sync后,后端将停止注入分区键字段。 如果您的客户端应用依赖分区键字段来管理同步订阅,则应将分区键字段添加到对象模型中。

否则,在新版本应用中创建的对象将不会同步到使用旧版本客户端应用代码的客户端。

在应用程序的后端迁移到Flexible Sync后,我们建议您将客户端应用迁移到Flexible Sync。 当您将客户端应用迁移到Flexible Sync时,客户端将停止为应用程序的数据模型中的每个对象模型自动创建同步订阅。

我们还建议删除所有同步订阅,然后为数据创建新订阅。 这是控制迁移后同步数据的最清晰方法。

如果要删除单个订阅,自动生成的订阅将使用特定的命名格式: flx_migrated_ + 对象模型的名称。 例如, Person对象模型的订阅名称为flx_migrated_Person

如果您不想删除并重新创建自动生成的订阅,则可以保留它们。 但由于这些订阅不是在客户端代码中创建的,因此可能会加大维护和扩展客户端代码的难度。

有关从基于分区的同步迁移到 Flexible Sync 后更新客户端代码的更多信息,请参阅:

后退

Atlas Device Sync 协议