数据迁移总结
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
1.前言
工作这么多年以来,萌叔参与过2次比较大的数据迁移。一次是将几十个T的舆情数据,从IDC-A
迁移到IDC-B
;一次是账号体系变更,处理100w+用户账号和权益变更。
在这中间遇到过很多问题,也踩过不少坑。本文稍作总结,希望对读者有所帮助。
2. 迁移流程的建议
建议你按照以下流程,来执行数据迁移流程
1)制定预案
- 需要充分考虑底量数据和增量数据的迁移问题
- 如果在数据迁移期间,有两套系统需要同时运行,如何保证数据的一致性
- 如何处理数据迁移引起的用户投诉?
- 数据迁移耗时?
像之前我们迁移几十个T的舆情数据,大概花费了1个月的时间 - 被迁移的数据是否要带上特殊标记(染色)
- 对内外部用户是否会造成影响?对其它第三方服务是否会造成影响?
1)如果需要调用上游服务的,数据迁移过程如果不限制对上游服务的访问,很可能导致上游服务崩溃
2)跨机房数据迁移,数据是走公网,还是走机房之间的专线。要不要限制网络带宽
3)数据迁移期间,可能会对数据库造成压力,会不会影响用户对系统的使用 - 详细列出数据迁移过程的多个Step
特别要注意多个Step之间有没有依赖关系
2)预案评估
组织会议,确保数据迁移可能影响的人员都能参与预案评估。
- 运营人员
- 产品经理
- DBA
- 网络工程师
- 开发人员
- 客服
需要对与会人员说明:
- 整个迁移过程的耗时,
- 可能对内外部用户可能造成的影响
- 对上下游服务可能造成的影响,对网络带宽造成的影响
数据迁移的过程不引起问题是非常难的,关键是给相关人员一个预期,做到心理有数。
3)迁移脚本(程序)开发
是自己写脚本来执行数据迁移,还是使用Spark等大数据工具。这个也是需要好好考量的。
4)演练(演习)
由于数据迁移的总耗时,对内外部用户造成的影响, 对其他服务造成的影响很难评估,
尤其是如果整个数据迁移过程非常复杂,涉及多个步骤时。
比如萌叔在做账号体系相关的数据迁移,一共涉及15个步骤,这些步骤之间还有一定依赖关系。
所以萌叔强烈建议,要做数据迁移的演练。
- mock数据测试
- 小样本集数据测试
5)按照预案实施
数据迁移的过程,要尽可能按照预案进行实施。
建议: 详细记录每个步骤开始和结束的时间点
6)数据校验
要考虑数据迁移完成之后,如何进行数据校验。(记录的数量,数据的状态一致等等)
对于非核心的数据甚至可以接受一定的差异,比如1% ~ 5%的数据差异。
7)事后总结
计划永远赶不上变化,有时候因为一些原因,数据迁移后的,数据的状态可能无法于预想的结果的一致,所以很有必要在数据迁移完成之后,
向相关方报告任务执行的结果。那些情况于计划的不一致,可能导致那些后果。