Fork me on GitHub

版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | 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)事后总结

计划永远赶不上变化,有时候因为一些原因,数据迁移后的,数据的状态可能无法于预想的结果的一致,所以很有必要在数据迁移完成之后,

向相关方报告任务执行的结果。那些情况于计划的不一致,可能导致那些后果。


微信公众号

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据