定义
Device Migration(设备迁移)指设备从旧平台迁入或迁出时,迁移 Device Credentials、Thing Model、Device Shadow、Telemetry 等。支持批量导出导入、增量迁移、Dual-Write、Pre/Post 数据校验。
迁移策略与流程
迁移可采用全量导出导入、增量同步、Dual-Write 双写等方式。全量迁移适用于平台切换,需导出设备档案、凭证、物模型、历史数据,导入目标平台后校验一致性。增量迁移适用于持续同步,需处理变更检测与冲突解决。Dual-Write 在迁移期间同时写入新旧平台,便于灰度切换与回滚。迁移前需进行 Pre 校验(源数据完整性),迁移后 Post 校验(目标数据一致性),确保 Device Credentials 凭证、Device Lifecycle 状态等关键数据正确。
与 DMP 的集成
设备管理平台提供迁移工具、导出模板、导入 API。迁移时需处理产品与物模型映射、凭证格式转换、设备 ID 映射等。设备端需配合更新接入地址、凭证等配置,可通过 OTA 下发配置或 Provisioning 重新配网。大规模迁移需分批执行、监控进度、支持断点续传,避免影响业务连续性。
应用场景
适用于平台迁移、多实例合并、跨区域部署、数据备份与恢复等。设备迁移是平台选型与架构演进的重要环节,需谨慎规划与执行。
一批迁移必须一起搬走的数据
设备迁移的技术含义,是把一台终端在原环境中的身份和运行上下文,按可核对的批次搬到目标环境,使它之后连到新环境时仍被认成同一台设备。必须一起考虑的不止档案:凭证或重新签发凭证的方式、物模型版本、影子里尚未执行的期望状态、未完成的升级任务,以及需要保留的历史遥测。只搬设备名和密钥,不搬物模型,设备上报的属性会在新环境被拒绝或写错字段。只搬历史、不搬凭证,设备仍连着旧入口。批次要有边界,列出包含哪些设备、截止到哪个时间点的数据,以及哪些数据明确不搬。
适合迁移的条件,是源和目标对设备标识的规则已经对照过,并且有一段可以回退的时间。全量导出适合停机窗口内的切换;增量适合切换前的预热;双写适合观察期,新旧两边同时接收,但双写不是两套独立修改。搬迁期间应冻结会改变身份的操作,例如重置密钥、改设备名、报废。与审计日志相关的记录至少要保留“这台设备从哪一环境迁出、何时在目标环境首次连上”。校验要在搬之前看源是否完整,搬之后看目标数量、抽样哈希和抽几台真实设备能否认证。
双写期间两边标识不一致
常见错误是源环境用设备名、目标环境用序列号当主键,合并时两套标识对不上,同一实物变成两台,或两台不同设备挤成一台。另一种是影子期望状态被搬过去之后,旧环境又下发了新的期望,双写没有冲突规则,设备上线后不知道听哪一边。历史遥测若按各自时钟入库,同一时刻会有两套读数。增量同步漏掉删除,目标环境会留下源环境已经报废的设备。
切流时只改设备里的服务器地址、不改凭证所属环境,认证会失败;只改云端接入地址、设备仍指向旧地址,则旧环境继续收数,新环境一直是空的。回退要事先留旧凭证和旧地址,而不是切完就作废。设备分组和权限若没有随批次迁移,设备到了新环境会落入错误项目,甚至对所有人不可见。迁移工具显示“导入条数相同”只说明行数,不说明这些行还能连、还能解释属性。应以抽样设备的真实会话和属性对照作为完成条件。
行数相同不算迁移完成
导入工具报告两边条数一致,只说明表格行数,不说明这些行还能认证、还能解释属性、还属于原来的项目。完成条件应是抽样设备用迁移后的材料建立会话,关键属性与源环境对照通过,未完成的期望配置没有丢失,也没有被旧环境的新写入覆盖。标识规则要在搬迁前对照:一边用设备名、另一边用序列号时,必须有一张明确的对照,不能靠名称模糊合并。模糊合并会把两台设备叠成一台,或把一台拆成两台,历史遥测因此挂错对象。
双写期间要规定哪一边的期望状态优先,否则设备上线后会在两个目标之间来回改。切流时地址和凭证所属环境要一起变。只改地址,旧凭证在新环境无效;只改云端、不改设备,数据仍进旧环境。回退需要旧地址和旧凭证都还可用,切完立刻作废就没有退路。删除动作若没有被增量同步带走,目标环境会留下源环境已经报废的设备。分组和权限没有随批次迁移时,设备到了新环境可能对所有人不可见,或落入错误项目。这些都不表现在行数上。