1.迁移数据库数据
简单办法:
- MySQL的主从同步方式数据拷贝
- mysqldump工具将源库的数据导出在导入新库
要求:
- 支持多库多表的迁移
- 应该支持在线迁移,迁移过程还会有数据写入
- 迁移后新的库和老的库数据保持一致
- 应该支持回滚
1.1双写方案
具体实现:
- 新库配置为源库的从库,用来同步数据(第三方工具获取Binlog的增量日志)
- 改造业务代码,写入旧库后写入新库(更新失败的用日志记录)
- 抽取部分数据做校验
- 灰度方式切换
- 有问题可以回滚到旧库中
- 将读写都改为新库中
如果数据库在云上,需要考虑跨机房的延迟
可以在数据库,缓存,MQ上进行,随时可以回滚
1.2级联同步方案
具体实现:
- 新库配置旧库的从库,用作数据同步
- 再将一个备库配置为新库的从库,用作数据备份
- 三个库写一致后,将数据库读的流量切换到辛苦
- 暂停写灵丘,将业务的写入流量切换到新库
回滚方案:切换到备库即可
2.迁移缓存数据
缓存迁移热点是保持缓存热度
2.1使用副本组预热缓存
缺点:跨专线导致请求变慢
2.2改造副本主方案预热缓存
具体实现:
- 云上部署多组mc的虎贲主,自建机房接收到写请求时,优先写自建机房,异步写入云上部署的mc节点
- 允许小流量访问云上缓存节点
- 当云上缓存民众日报达到90%以上,就可以在云上部署应用服务器
实现了数据的迁移,控制专线的贷款额延迟情况
3.总结
- 双写的方案是数据库、Redis 迁移的通用方案
- 将自建机房的数据迁移到云上,那么也可以考虑使用级联复制的方案
- 缓存使用改进版的副本组方式来迁移