问题: 以前公司遇到过一个问题,由于一些历史原因,需要将正在运行的系统中的数据从老数据库中迁移到新数据库中
此类问题比较特殊,也不是很常见,在此记录一下当时解决的思路
该问题的核心点在于 1.系统是正在运行的,也就是说数据不是死的而是随时在变动的 2.迁移的过程中不能影响到线上系统的运行和性能
难点在于是线上数据的迁移 ,所以当时的思路是需要在某个节点将数据分类,分为冷热两种数据
具体做法:在某个时间节点在线上系统上布置一层缓存层,在这个时间节点之后的业务处理数据都会写入这个缓存层,这个时间节点非常重要,需要记录下来。在这个时间节点之前的数据就是冷数据,不会改变,这之后的数据作为热数据.
针对冷数据的处理相对简单,难点只是在于数据量,当时系统的冷数据在几千万左右,如果正常按照单进程运行,可能比较慢,所以采用的是多进程跑,这个多进程的做法,如果数据量不大,完全可以采用单进程处理,方法不做赘述,多进程的话,需要做好IPC处理
针对热数据的处理,首先在于热数据以什么形式保存最为重要,如果单纯以数据格式处理,数据的增删改都需要去热数据缓存层做修改,最早版本也是这么做的,非常麻烦(还会影响线上系统的性能),后面发现将热数据以sql形式保存下来,迁移的时候就会非常方便,需要记录下来
网友评论