MySQL数据平滑迁移方案思考
Posted 看,未来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据平滑迁移方案思考相关的知识,希望对你有一定的参考价值。
文章目录
数据迁移方案
这个想一下redis是怎么把数据做持久化的,思路就有了:快照 + 追加日志。
注意点:
1、在完成数据迁移之前,上游业务依然是访问旧数据库的。
2、研发一个数据迁移工具,进行离线数据迁移。
3、不断刷新“追加日志”
4、写一个数据校验脚本。将新旧库数据进行比对,直到追平。
5、在架构的时候就应该考虑到有一天要迁移,所以这时候就可以平滑迁移了。比方说:使用虚ip的方式。
还有一种方案,是用 双写 的方式。好像在哪里见过,不知道是不是redis恢复数据的时候。
数据完成迁移之前,上游应用业务依旧通过旧的服务访问数据。
注意点:
1、对旧库的修改,在新库上进行相同的修改操作,称之为双写。
2、如果修改时新库没有对应数据,则:
a、对于 insert,早晚会insert的。
b、对于 delete,那之后也不会被写入新库。
c、对于 update,后面写入的时候就是新值了。
这个方案就是说要一条一条的写进去,没有前面直接一个快照来的爽,不过快照有拖尾性。
3、切库之前要进行数据校验。
两个方案的bug
方案一:建议在夜深人静的时候做,可以尽快追平。
方案二:如果碰巧刷写某条数据的时候在update,会造成数据不一致。
数据校验工具
其实我个人认为那个数据校验工具才叫麻烦。因为不论哪个方案,新旧库都存在修改数据的可能性,所以建议放在夜深人静的时候做。
其次,要求数据是有序的呀,但是数据库的数据量又大,可以采用MapReduce的方式加快整合速度。这可不是个小工具啊!!!
以上是关于MySQL数据平滑迁移方案思考的主要内容,如果未能解决你的问题,请参考以下文章