ES迁移到同构库可以直接用ES的集群迁移工具,但是异构库就不能直接用现有的工具了;
参考ES reindex工具的底层实现api,我们选择用ScroolApi来通过程序迁移;
迁移之前需要准备
- es表所有字段的长度的最大值,因为历史数据跨度5年,且是非结果化数据,所有长度没有固定长度,tidb的所有字段需要设置成最大值,或者按照业务允许的原则截取存储
- es因为是非结构化数据,历史数据可能的字段个数和名字都有不一样的,这种需要提前统计分析出来
- 评估迁移数量数量,以此评估目标数据库需要准备的磁盘空间大小及目标库的存储方案
- 评估迁移周期
- 评估迁移数据任务是否影响目标库的生产业务开展
迁移程序设计
- 数据准确性:迁移的数据字段数量,内容要保证准确性
- 有核对准确性的方案
- 数据的总量正确:迁移总的数据量要能核对上
- 需要考虑迁移过程中增量数据怎么办?
- 迁移过程中如果失败了是不是可以断点续传接着失败前的任务继续
- 程序可以自己恢复的重试
- 需要修复程序再重试
- 数据唯一性保证,不能有重复数据,因此需要唯一键保证
- 迁移的过程中任务的管控
- 启动新任务
- 暂停任务
- 恢复暂停的任务
- 一键暂停所有任务
- 任务终结后资源可以自动释放回收
- 可靠性及安全保障
- 指定时间段,可以配置指定速率,保证业务不受