| 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;对账差距要能解释:时区与精度舍入、软删除过滤、金额小数位是常见差异来源;无法解释的差异在切流前必须查清。