数据在线迁移思考

背景

数据需要从一个库迁移到另外一个库,比如客户新买一个软件,使用的旧服务数据需要迁移到新软件内。
或者数据压力较大,需要分库分表, 数据需要迁移到新的库

方案1 双写

  • 开启双写 可以在服务内增加配置,是否写新库、旧库。 迁移期间, 开启配置 当天的数据同时写入新库和旧库。历史数据不会变走迁移程序。 如果双写性能 有影响,可以通过发消息的形式,把对新库的写入改为异步操作,即使消费失败,后续也可以根据检测逻辑进行修复。
  • **迁移数据 ** 编写程序 对之前加入的数据进行迁移。 (数据结构发生变化时,需要考虑转化逻辑)
  • **执行检测 ** 迁移完成后,执行检测逻辑, 对比 两端数据 是否一致。 可以通过版本号对比。 对不一致的数据再次执行迁移逻辑
  • 灰度验证 整体迁移完成后,提供一定数量的白名单,进行灰度验证, 一段时间后再全量放开,白名单内的人读取新库,读取步到的话转为读旧库,并记录日志,排查不一致原因。逐步解决。这个过程会消耗较长的一段时间。
  • 关闭旧库读写 等灰度验证完成关闭对旧库的读写,清理旧库数据即可

方案2 主从同步 (适用于简单的迁移,数据结构不发生变化)

  • 给主库挂一个从节点,通过处理日志,把数据同步到从节点,再停机,把从节点切换为主节点。

方案3 停机迁移

  • 停机
  • 写程序 多线程批量全部处理。
  • 修改配置 读写新库即可。
  • 存在问题可以回滚

本文作者:森林中大鸟

本文链接:https://www.cnblogs.com/wenshichen/p/17358245.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   森林中大鸟  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.