convex-backup 的目标是让备份真正可恢复,而不只是生成一份导出文件。大多数备份方案只做了“备份”这一半,忽略了“证明能恢复”的另一半;该技能把两件事都覆盖:设置定期快照导出,并执行一次 RESTORE DRILL(恢复演练),把数据实际恢复到一次性预览环境并断言其完整性。
用途
它服务于 Convex 项目的备份与灾难恢复准备。演练复用 migrate-rehearse 的同一套原语(快照导出 → 预览部署 → 快照导入),但指向的是恢复而非前向变更,因此安全网是被验证过的,而不是被假定的。
主要能力
- 备份前先做部署分类与说明(GUARD),明确读取/导出是安全的,演练的恢复目标是临时环境,绝不指向生产。
- 生成快照:npx convex export --path backup-<date>.zip;若应用存储文件,可加 --include-file-storage。该快照就是备份产物,需按敏感真实数据对待。
- 制定计划:建议按数据变更速度和可容忍丢失量(RPO)匹配导出频率,例如通过 CI/cron 每日执行 npx convex export 到用户自有的持久存储,并设定保留窗口。Convex 平台自身已有备份,此技能额外提供用户自有、可移植的副本。
- 执行恢复演练:创建一次性预览、导入快照、读回数据断言恢复。
- 报告结果:说明备份了什么、恢复是否真正执行并验证(或失败及原因)、推荐的计划与保留策略,以及恢复运行手册(恢复到生产的确切命令,受 deploy-guard 约束,并说明快照之后写入数据会丢失的注意事项)。
- 卫生处理:用完删除本地快照副本,演练预览会自动过期,绝不提交备份文件。
使用方式
恢复演练的步骤为: (a) 前置条件:需要 Preview Deploy Key 作为 CONVEX_DEPLOY_KEY(与 migrate-rehearse 相同要求,属付费层功能)。若不可用,则改用全新的个人开发部署进行演练并如实说明。 (b) 从当前代码创建一次性预览:npx convex deploy --preview-create restore-drill-<date>。 (c) 将快照恢复进去:npx convex import backup-<date>.zip --deployment restore-drill-<date> --replace(导入通过 --deployment 按名称指定部署;导入没有 --preview-name 参数)。 (d) 断言恢复:读回已恢复的数据(用 MCP tables 查行数、用 data/runOneoffQuery 做抽查),确认关键表行数符合预期且有真实记录样本;一个“成功”但落地 0 行的恢复是失败的演练。若源端可得,则与源端计数做对比。
生产恢复运行手册中的命令为:npx convex import backup.zip --replace --prod,需经 deploy-guard 把关,并说明快照之后写入数据会丢失。
适用场景
适用于使用 Convex 作为后端的项目,尤其是需要验证灾难恢复能力、满足数据可恢复性要求、或希望在平台备份之外保有可移植副本的团队。
限制
恢复演练使用一次性预览(或开发部署),绝不恢复生产;恢复目标与备份源必须是不同部署。一次恢复若落地 0 行即判定为失败演练。失败的演练结果是该技能最有价值的输出,应被大声暴露——这正是要在真实灾难前演练的原因。快照是敏感真实数据:用完删除本地副本、绝不提交,恢复到生产的运行手册需经 deploy-guard 把关,并说明快照之后的写入丢失风险。预览部署键属付费层功能,缺失时只能改用个人开发部署演练。