NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)

在数据库版本升级的场景里,把 MySQL 5.5 这类老版本平滑迁移到 MySQL 8.0 是常见需求。原地升级风险高、停机窗口长,而两条实例之间直接做数据同步又容易踩版本与参数差异的坑。NineData 的「数据复制」能力提供结构复制、全量复制、增量复制一体化链路,可以在不停机的情况下完成 MySQL 到 MySQL 的跨版本迁移同步。

本文基于一次真实的操作录屏整理,逐步演示从创建任务、选择复制对象、配置映射、预检查到启动与监控的完整过程,每一步都配有高清界面截图,照着做即可复现整条链路。

一、方案能力概览

• 结构复制:自动在目标端建库建表,两端对象名称保持一致。

• 全量复制:把源端存量数据一次性迁移写入目标端。

• 增量复制:基于 Binlog 实时同步 DML 与 DDL 变更,演示中复制延迟稳定为 0 秒。

• 预检查:迁移前自动校验连通性、账号权限、同名对象、存量数据与 Binlog 配置。

• 全程可视化:结构、全量、增量三个阶段均有独立页签,提供进度、操作计数与延迟监控。

二、前置条件

1. 数据源接入

• 源端 MySQL 与目标端 MySQL 均已在 NineData「数据源管理」中接入并测试通过。

• 目标端不存在与源端同名的库表,避免冲突。

2. 账号权限

• 源端具备复制权限(如 SELECT、REPLICATION SLAVE 等)。

• 目标端具备写入权限(INSERT、UPDATE、DELETE、CREATE 等)。

3. 源端 Binlog 配置

• 源端已开启 Binlog,且 binlog_format = ROW,server_id 非零。

三、创建复制任务:选择数据源与目标

登录 NineData 控制台,进入「数据复制」模块,单击新建复制任务。在第 1 步「数据源与目标」页面完成以下配置:

• 任务名称:填写任务名称,命名规则保持与源端一致。

• 数据源:分别选择已接入的源数据源与目标数据源。

• 复制方式:选择「单向复制」作为复制方式。

• 复制类型:同时勾选「结构复制、全量复制、增量复制」三种类型。

• 冲突策略:同名对象选择「预检查报错并停止任务」;存量数据「忽略并追加写入」;增量冲突「运行时报错」。配置完成后单击「下一步」。

四、选择复制对象

第 2 步「选择复制对象」支持「全部实例」与「自定义对象」两种方式。本演示选择自定义对象,单击中间箭头把源端业务库中的一张测试表添加到右侧目标对象列表。

需要排除某些库或表时,可以在下方配置黑名单;右上角的「导入配置」还支持批量创建相同复制对象的链路,适合多实例批量上线的场景。确认无误后单击「下一步」。

五、配置映射与数据过滤

第 3 步「配置映射」中,目标库名、目标表名默认与源端一致。打开「映射与过滤」,可以看到源字段与目标字段默认一一对应;该窗口还能配置行级数据过滤条件,满足「只同步部分数据」的需求。本演示不设置过滤条件,确认后关闭窗口,单击「保存并预检查」。

六、预检查

预检查会自动检查源端与目标端的连通性、账号权限、目标端同名对象与存量数据,以及增量复制所需的 Binlog 配置。

本演示检查结果为 23 项成功、3 项警告、0 项失败。其中:时区检查提示警告------源端时区为 System、目标端为东八区,两侧系统均显示 CST;字符集检查提示差异------源端为 UTF8、目标端为 UTF8MB4;时间戳默认值参数检查同样提示警告。这些警告可视业务情况修复或忽略,结合业务确认可接受即可。

警告项与失败项的处理原则:警告项可结合业务确认后接受,失败项必须修复并重新检查。确认预检查通过后,单击「立即启动」。

七、启动任务并监控三个阶段

进入任务详情页后,此时任务尚未启动,确认源端与目标端无误后单击右上角的「启动」。稍等片刻,任务状态变为「运行中」,顶部依次展示结构复制、全量复制、增量复制三个阶段。

1. 结构复制

在「结构复制」页签,可以看到演示表已完成结构复制,单击「查看 DDL」可查看 NineData 在目标端回放的建表语句,两端对象名称保持一致。

2. 全量复制

「全量复制」页签展示存量数据的迁移进度,演示表的两条记录已全部复制完成。

3. 增量复制

「增量复制」页签提供读取延迟、复制延迟等监控指标,以及 INSERT、UPDATE、DELETE、DDL 的操作计数。当前源端暂无增量变化,各项计数为 0;当同步延迟稳定为 0 秒,表示源端存量变化已全部追平。

八、结语

至此,MySQL 5.5 到 MySQL 8.0 的结构、全量、增量同步链路已全部搭建完成并稳定运行。后续源端的任何变更都会持续实时同步到目标端,待增量延迟稳定为 0 秒后,业务即可择机完成流量切换,实现不停机、跨版本平滑升级。

关于产品与更多迁移链路(如 MySQL 同步到 TiDB、PostgreSQL 等),可访问 NineData 官网 www.ninedata.cloud 了解详情。

常见问题 FAQ

Q1:MySQL 5.5 能直接升级到 8.0 吗?一定要用同步工具吗?

原地升级跨度大、易踩坑,且需要较长停机窗口。用 NineData 这类数据同步工具,可以在不停止源端业务的情况下,通过「全量 + 增量」把数据平滑搬到 8.0,验证无误后再切换流量,风险更低。

Q2:整个迁移需要停机吗?

不需要。全量复制迁移存量数据,增量复制通过 Binlog 持续追平变更;当复制延迟稳定为 0 秒后即可择机切换,实现不停机迁移。

Q3:预检查里的警告项必须处理吗?

警告项(如时区、字符集、时间戳默认值差异)可结合业务确认后接受或忽略,不影响任务启动;但失败项必须修复并重新检查通过后才能启动。

Q4:源端 MySQL 的 Binlog 有什么要求?

需开启 Binlog 且 binlog_format = ROW,server_id 设为非零值;这些配置预检查都会自动校验。

Q5:时区与字符集不一致(如 System 与东八区、UTF8 与 UTF8MB4)怎么处理?

UTF8MB4 完整兼容 UTF8,可正常同步;时区差异建议在业务侧统一口径,或在预检查中确认可接受的偏差。具体以业务约定为准,必要时在目标端调整配置后重新检查。

Q6:同步完成后如何确认可以切换业务?

观察任务详情页:结构复制与全量复制全部「已完成」,增量复制页签操作计数实时更新且复制延迟稳定为 0 秒,即代表源端变更已全部追平,可短暂停写确认后切换流量。

相关推荐
zhangjw342 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go2 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
cnskylee2 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵2 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
liminla!2 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
tongyiixiaohuang2 小时前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
大侠归来3 小时前
常用 MySQL 分库分表方案详解
数据库·mysql
kingx34 小时前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固
xiaogai_gai4 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉