无论是垂直分表还是水平分表,都会涉及到数据迁移的问题,数据迁移要满足几个条件,首先数据要完整、准确,迁移过程不要影响现有业务,为了保证系统的持续性最好也不要停机迁移。
数据迁移:
- 停机迁移: 这种方式比较简单,可以提前公告,在夜间访问量小的时候进行迁移,此时没有新的数据进入,停机后需要把老数据导入到新表中,可以写个小程序来执行,执行完成后校验数据是否完全迁移完成,可以通过比对条数,多次抽样等方式,完成后把查新库表的代码上线,进行内测。
- 双写迁移:
双写的好处是不需要停机,具体实现需要在业务逻辑中增加对新表的写入,达到新表和老表双写的目的,然后再通过一个脚本把老表中的历史数据导入到新表中,双写期间查询还是走老库数据,等到老数据完全迁移完成时,通过切换开关查询新库数据完成数据迁移,双写的关闭时机可以在读新库后验证一段时间确保完全没有问题时,在关闭老库数据的写入,上面提到的校验,也可以写一个小工具用来比对新老表的数据,如果老表的更新时间更新则覆盖新表数据,否则不修改。
总结下:
1.双写
2.迁移小工具
3.校验小工具