数据迁移案例分析
文章地址: https://blog.piaoruiqing.com/blog/2019/10/27/不停服怎么迁移数据/
前言
数据迁移时, 为了保证数据的一致性, 往往伴随着停服, 此期间无法给用户提供服务或只能提供部分服务. 同时, 为了确保迁移后业务及数据的正确性, 迁移后测试工作也要占用不少时间. 如此造成的损失是比较大的.
接下来, 本文将就如何在不停服的情况下进行数据迁移进行探讨.
案例
订单系统中存在这样一组订单表:
数据库: MySQL
表名: order_{0~19}, 其中{0~19}为后缀, 合共20张表.
主键: order_id, 订单ID, 通过雪花算法获得, 可通过ID获取创建时间.
原分表策略: order_id % 20
伴随着业务量增长, 各分表的数据量已经破千万, 如此下去会产生严重的性能问题, 此时需要将原分表进行迁移.
要求:
- 将原20张分表数据迁移至新表
- 迁移全过程中不可停机, 须对外提供完整的服务.
- 提供完备的回退方案, 迁移过程中产生的数据不可丢, 不能人为修数据.