19数据迁移(数据库)

131 阅读2分钟

1.迁移数据库数据

简单办法:

  • MySQL的主从同步方式数据拷贝
  • mysqldump工具将源库的数据导出在导入新库

要求:

  • 支持多库多表的迁移
  • 应该支持在线迁移,迁移过程还会有数据写入
  • 迁移后新的库和老的库数据保持一致
  • 应该支持回滚

1.1双写方案

具体实现:

  • 新库配置为源库的从库,用来同步数据(第三方工具获取Binlog的增量日志)
  • 改造业务代码,写入旧库后写入新库(更新失败的用日志记录)
  • 抽取部分数据做校验
  • 灰度方式切换
  • 有问题可以回滚到旧库中
  • 将读写都改为新库中

image.png

如果数据库在云上,需要考虑跨机房的延迟

可以在数据库,缓存,MQ上进行,随时可以回滚

image.png

1.2级联同步方案

具体实现:

  • 新库配置旧库的从库,用作数据同步
  • 再将一个备库配置为新库的从库,用作数据备份
  • 三个库写一致后,将数据库读的流量切换到辛苦
  • 暂停写灵丘,将业务的写入流量切换到新库

image.png

回滚方案:切换到备库即可

image.png

2.迁移缓存数据

缓存迁移热点是保持缓存热度

2.1使用副本组预热缓存

image.png

缺点:跨专线导致请求变慢

2.2改造副本主方案预热缓存

具体实现:

  • 云上部署多组mc的虎贲主,自建机房接收到写请求时,优先写自建机房,异步写入云上部署的mc节点
  • 允许小流量访问云上缓存节点
  • 当云上缓存民众日报达到90%以上,就可以在云上部署应用服务器

实现了数据的迁移,控制专线的贷款额延迟情况

3.总结

  • 双写的方案是数据库、Redis 迁移的通用方案
  • 将自建机房的数据迁移到云上,那么也可以考虑使用级联复制的方案
  • 缓存使用改进版的副本组方式来迁移