首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >分布式微服务改造,到底怎么做数据迁移?

分布式微服务改造,到底怎么做数据迁移?

作者头像
JavaEdge
发布2021-02-22 13:13:54
发布2021-02-22 13:13:54
6210
举报
文章被收录于专栏:JavaEdgeJavaEdge

设计新系统容易,但是我们处理的都是老系统和历史诗句。怎么能更平滑的迁移旧数据到新的数据库和系统,特别是在异构的数据库结构情况下,达到数据准确,迁移速度快,减少停机,对业务影响小

迁移是最容易出故障的一个点。 那么如何做数据迁移呢?

1 解决方案

1.1 全量

最直观的一把梭方案,即全量数据的导入/出:

  • 业务系统需要停机
  • DB 迁移,校验一致性(数据、关系、约束等)
  • 升级业务系统,接入新 DB

如果直接复制,可以 dump 后全量导入,如果是异构数据,需要用程序处理。 优点:简单 缺点:停机时间过长,数据量不太大时适合这种方案

1.2 全量+增量

大部分开发采用的方案,依赖数据本身的时间戳,即版本号:

  • 先同步数据到最近的某时间戳
  • 然后在发布升级时停机维护
  • 再同步最后一段事件(通常是一天)的变化数据
  • 最后升级业务系统,接入新数据库

优点:极大缩短停机时间

看来已经满足绝大部分需求了,还有更流弊的方案吗?

1.3 binlog+全量+增量(推荐)

当你的公司数据库和中间件比较完善时,推荐使用。

通过主库或从库的binlog解析和重新构造数据,利用主从复制实现扩展迁移,这需要中间件的支持。可实现多线程,断点续传,全量历史和增量数据同步。

可以达到:

  • 实现自定义复杂异构数据结构
  • 实现自动扩容和缩容,比如分库分表到单库单表,单库单表到分库分表,分4个库表到分64个库表

当然了,既然这种需求很常见,社区肯定也有支持的框架:

1.4 shardingSphere-scaling

  • 支持数据全量和增量同步
  • 支持断点续传和多线程数据同步
  • 支持数据库异构复制和动态扩容
  • UI界面,可视化配置
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 解决方案
    • 1.1 全量
    • 1.2 全量+增量
    • 1.3 binlog+全量+增量(推荐)
    • 1.4 shardingSphere-scaling
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档