首页/数据/NoSQL 速查/数据迁移流程:评估到切流回滚
选型与架构50 条

数据迁移流程:评估到切流回滚

迁移分六步:评估(查询清单与容量)、建目标结构、双写或 CDC 追增量、存量搬迁、校验(行数与校验和抽样)、灰度切流与回滚预案。每一步都要有可度量的完成标准,切流前保持旧路径可回退。

NoSQL 速查数据更新于 2026-10-12
1 评估导出慢查询与访问模式,确认目标引擎能覆盖核心查询;估算容量与成本
2 双写写路径同时写新旧存储,读仍走旧库;记录失败并补偿
3 搬迁批量把存量数据搬到新库,按主键分段、限速、可断点续传
4 校验按时间窗比对行数、聚合指标与抽样明细
5 切流灰度把读流量切到新库,观察后逐步放大;保留回切开关
6 收尾稳定运行一个完整周期后下线双写与旧库(先归档备份)

校验示例(MongoDB 与 ClickHouse 对账)

校验示例(MongoDB 与 ClickHouse 对账)
// MongoDB 侧:按天统计订单量与金额
db.orders.aggregate([
  { $group: { _id: { $dateToString: { date: "$createdAt", format: "%Y-%m-%d" } },
              cnt: { $sum: 1 }, total: { $sum: "$amount" } } },
  { $sort: { _id: 1 } }
])

-- ClickHouse 侧:同样口径统计后比对
-- SELECT toDate(created_at) AS d, count(), sum(amount) FROM orders GROUP BY d ORDER BY d;
对账差距要能解释:时区与精度舍入、软删除过滤、金额小数位是常见差异来源;无法解释的差异在切流前必须查清。

易错点

  • 一次性全量导入后再补增量,切换瞬间的增量窗口处理不好会丢数据或重复
  • 校验只看总行数:同数量不同内容是存在的情况,要加聚合指标与抽样明细比对

数据来源与参考

  • MongoDB Manual: Migrate to MongoDB
  • Elasticsearch Guide: Reindex
  • ClickHouse Docs: Migrations
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌