当前位置: 首页 > news >正文

技术方案之数据迁移方案

一、序言
随着业务的发展,单个 MySQL 实例往往难以满足性能、存储和高可用的需求。此时,团队需要将旧库的数据迁移到新的 MySQL 实例(如云数据库、分库分表架构)。迁移过程必须兼顾 存量数据的完整搬迁增量数据的持续同步,以确保数据一致性和业务连续性。

二、停机方案
停机迁移是最简单的方式:

  1. 停止应用对数据库的写入;

  2. 使用 mysqldumpmydumper 或物理备份工具(如 xtrabackup)导出全量数据;

  3. 将数据导入新库,校验一致性;

  4. 切换应用到新库再启动业务。
    优点是实现成本低,数据一致性高;缺点是停机时间不可避免,适合业务体量较小或能容忍短时间停机的场景。

三、不停机优雅迁移方案
在大多数生产环境,停机迁移不可接受,因此需采用“全量 + 增量”结合的方案:

  1. 全量迁移:使用 mydumperxtrabackup 等工具将旧库全量数据迁移到新库;

  2. 增量同步:基于 binlog 或 CDC(Change Data Capture)机制捕获旧库写入操作,并实时回放到新库(常用工具:Canal、Debezium、DTS);

  3. 双写验证:在迁移期间,应用可选择性双写新旧库,对比校验数据一致性;

  4. 平滑切换:待增量数据追平、校验通过后,将应用流量逐步切换到新库,实现无感知迁移。
    这种方式虽然实现复杂,但能做到业务不停机,适合高并发、核心系统场景。

完整流程:

存量迁移 → 开启增量同步 → 增量追平 → 校验 & 双写 & 检验 → 读灰度切流 → 读全量切换  → 关闭双写&关闭CDC → 旧库下线

关键技术:

在打开双写的时候,CDC还要继续同步,这是为了防止打开双写的瞬间丢数据,那么这里就需要做好幂等方案,比如主键,比如业务做幂等,再比如upsert等,防止CDC和双写重复写的问题。

四、总结
MySQL 数据迁移的核心是 存量数据一次性搬迁增量数据实时同步 的平衡。停机迁移简单但有业务中断风险,不停机迁移复杂但能确保连续性。实际落地时,团队需要结合业务重要性、数据量规模和可接受的风险选择合适方案。最终目标是:既保证数据的一致性,又不影响业务连续运行

        欢迎关注,一起交流,一起进步!


文章转载自:

http://q3CWiHir.zckhn.cn
http://HH6Tqqrr.zckhn.cn
http://qGd0BUMa.zckhn.cn
http://4P2KyrD9.zckhn.cn
http://dqdVKncx.zckhn.cn
http://4ztb5yR8.zckhn.cn
http://GiVQM75Q.zckhn.cn
http://kaaWKkMp.zckhn.cn
http://SAcbhd47.zckhn.cn
http://fVGVb1Bg.zckhn.cn
http://EL9fBhvG.zckhn.cn
http://AsLnoplb.zckhn.cn
http://KlvX98h7.zckhn.cn
http://kbr6EoXY.zckhn.cn
http://KyhUkraC.zckhn.cn
http://WDRKfVkf.zckhn.cn
http://egykvPa2.zckhn.cn
http://f0sYlUyy.zckhn.cn
http://tWKTzc4H.zckhn.cn
http://y15ltFFK.zckhn.cn
http://FEHPiOHD.zckhn.cn
http://HlYCE77n.zckhn.cn
http://aHtfmo7k.zckhn.cn
http://v2lgz67H.zckhn.cn
http://mWwEOt1c.zckhn.cn
http://C1DOjcjd.zckhn.cn
http://44f7F3fB.zckhn.cn
http://KjfwOsLK.zckhn.cn
http://10RXTVSI.zckhn.cn
http://wH7G3KNM.zckhn.cn
http://www.dtcms.com/a/374349.html

相关文章:

  • LeetCode热题 15.三数之和(双指针)
  • 我对 OTA 的理解随记,附GD32/STM32例程
  • 快速构建数据集-假数据(生成划分)
  • c++ 杂记
  • Effective Modern C++ 条款26:避免在通用引用上重载
  • Android14 init.rc中on boot阶段操作4
  • PYQT5界面类继承以及软件功能开发小记
  • 【机器学习】吴恩达机器学习笔记
  • UE5 性能优化(1) 模型合并,材质合并
  • Selenium4+Pytest自动化测试框架实战
  • 基于RK3568多网多串(6网+6串+2光)1U/2U机架式服务器在储能与电力的应用
  • 【Python】运动路线记录GPX文件的操作API函数,以及相关GUI界面(支持复制、拼接、数据生成、修改,SRT字幕生成等功能)
  • 西嘎嘎学习 - C++vector容器 - Day 7
  • 第三章:Python基本语法规则详解(二)
  • Next系统总结学习(一)
  • 备考系统分析师-专栏介绍和目录
  • 【rk3229/rk3228a android7.1 LPDDR EMMC EMCP 批量sdk】
  • Kali 自带工具 dirb:Web 路径扫描与 edusrc 挖掘利器
  • 【系统分析师】第2章-基础知识:数学与工程基础(核心总结)
  • 房屋安全鉴定机构评价
  • JAVA:io字符流FileReader和FileWriter基础
  • 从零深入理解嵌入式OTA升级:Bootloader、IAP与升级流程全解析
  • 7.0 热电偶的工作原理
  • GPT(Generative Pre-trained Transformer)模型架构与损失函数介绍
  • 【51单片机】【protues仿真】基于51单片机公交报站系统
  • linux常用命令(2)——系统管理
  • Yarn介绍与HA搭建
  • 记个笔记:Cocos打包安卓使用安卓通信模块
  • 基于Python的云原生TodoList Demo 项目,验证云原生核心特性
  • 2025年- H121-Lc28. 找出字符串中第一个匹配项的下标(数组)--Java版