任务迁移(数据迁移)
任务思想处理数据迁移?失败? bug、硬件抖动
一张任务表,几个字段,任务id,名称,开始时间、结束时间以及状态
迁移的目标表加一个字段,任务id
当迁移任务开始,先往任务表里面插一条数据,生成任务id,名称,开始时间,状态,状态是进行中
往目标表里面插入一条数据,带上任务id,等到任务完成,更新任务表里面 状态和时间
中间出错了怎么办?
- 异常处理,将任务表里面任务状态,更新为任务失败,可以记录出错时的任务id,下次从这个id开始再跑数据
- 监控,判断一下未完成的任务 count总数是不是长时间没有变化,如果没有变化,任务可能失败,清除任务id下面的所有数据,重跑一下,不用考虑事务,还可利用多线程
MySQL转ES方案
不停机扩容怎么实现?
实际上,不停机扩容,实操起来是个非常麻烦而且很有风险的操作,当然,面试回答起来就简单很多。
- 第一阶段:在线双写,查询走老库
-
建立好新的库表结构,数据写入久库的同时,也写入拆分的新库
-
数据迁移,使用数据迁移程序,将旧库中的历史数据迁移到新库
-
使用定时任务,新旧库的数据对比,把差异补齐