如果应用能接受停服维护的话,可以通过导入导出解决。
- 选择一个合适的停服维护时间(注意中午 12 点后无法导出数据),去控制台安全中心把「数据存储」的服务开关关闭,防止客户端修改数据造成数据不一致。
- 导出
userInfo
和 _User
表,在本地写脚本批量转移 userInfo
的相应字段至 _User
表。
- 通过控制台的批量操作功能将
userInfo
和 _User
表的记录全部清空(需要清空的原因是导入时不会覆盖已存在的 objectId)。
- 导入数据至
userInfo
和 _User
表。
- 导入成功后去控制台安全中心把「数据存储」的服务开关打开,重新开始服务。
其实你们可以写脚本通过 REST API 或 SDK 完成数据的迁移,将 userInfo
表相应字段的数据复制到 _User
表(这个期间前端代码需要双写相应字段的更新,也就是同时写到 userInfo
和 _User
表),操作完成后前端代码就可以切到新的查询逻辑,测试无误后可以去控制台直接把相应列删除。这样不需要停服。
以上两种方案都是假设客户端代码的版本都是完全由你们控制的(网页前端)。如果有移动端,因为要兼容老客户端,数据迁移过程就比较复杂。