MySQL 到 Doris 数据迁移完整步骤,NineData 实操演示

举报
智能数据 发表于 2026/11/09 17:23:19 2026/11/09
【摘要】 通过以上步骤,我们使用 NineData 完成了 MySQL 到 Doris 的结构、全量和增量复制配置,并查看了同步与数据对比结果。相比手工导出导入,NineData 将建表映射、模型转换、增量同步与一致性校验整合在一条可视化链路中,大幅降低 MySQL 到 Doris 迁移的门槛与风险。如果你正在规划 MySQL 到 Doris 的数据迁移,不妨按本文步骤实际操作一遍。

在大数据架构中,Apache Doris 凭借高性能实时分析能力被越来越多团队用作报表与数仓引擎。如何把业务 MySQL 库中的数据稳定、持续地同步到 Doris?本文基于 NineData 数据复制功能的真实录屏演示,手把手带你完成从创建复制任务、选择复制对象、配置映射、预检查,到启动任务后查看结构复制、全量复制、增量复制和数据对比结果的全过程,并整理了 Doris 表模型映射规则与常见问题,照着做即可完成一次完整的 MySQL 到 Doris 数据迁移同步。

一、NineData MySQL 到 Doris 数据复制能力概览

NineData 数据复制支持 MySQL 到 Doris 之间的全量数据同步和增量数据同步,可按需组合三种复制类型:

• 结构复制:只同步源 MySQL 的库表结构到目标 Doris,不同步数据;

• 全量复制:同步源数据源的所有对象与存量数据,完成全量数据初始化;

• 增量复制:全量完成后基于 Binlog 持续同步增量变更,支持按操作类型(INSERT/UPDATE/DDL 等)取消勾选忽略。

针对 Doris 的表模型特性,NineData 会按源表的主键、唯一键情况自动选择 Data Model 并定义 Key:

• 有主键表:使用 Unique Model,Key 为所有主键列(按源库主键列定义顺序);

• 无主键但有唯一键:使用 Unique Model,Key 为所有唯一键列;

• 无主键且无唯一键:使用 Duplicate Model,默认选择表中前 2 个列作为 Key,Distribute Key 与 Key 保持一致。

二、前提条件与使用限制

前提条件

• 已将源数据源(MySQL)和目标数据源(Doris)添加至 NineData;

• 支持的 MySQL 数据源版本为 5.1 ~ 9.0;

• 源数据源必须开启 Binlog,且 binlog_format=ROW、binlog_row_image=FULL;若源端为备库,还需开启 log_slave_updates 参数;

• 源数据源账号需拥有复制对象的 SELECT 权限(结构、全量)以及 REPLICATION CLIENT、REPLICATION SLAVE 权限(增量);目标 Doris 账号需拥有 DML、DDL 权限。

使用限制

• 源数据源中的库表名称需符合 Doris 命名规则:以字母开头,可包含字母、数字和下划线,不能包含空格或其他特殊字符;

• 仅复制用户数据库,MySQL 的 information_schema、mysql、performance_schema、sys 等系统库不会被复制;

• 同步对象为表级别时,请勿使用 gh-ost、pt-online-schema-change 等在线 DDL 变更工具变更源库同步对象,否则会导致同步失败;

• 需确保每张同步表都有主键或唯一约束、列名具有唯一性,否则可能重复同步相同数据;

• 全量初始化会占用源端与目标端一定读写资源,建议在业务低峰期执行,并提前评估两端数据库性能。

三、创建 MySQL 到 Doris 的数据复制任务(5 步)

步骤 1:配置数据源与目标

登录 NineData 控制台,在左侧导航栏单击数据复制 > 数据复制,单击右上角创建复制。在数据源与目标页签:填写便于识别的任务名称(最多 64 个字符);源数据源选择 MySQL 实例,目标数据源选择 Doris 数据源;复制类型建议同时勾选结构复制、全量复制和增量复制,覆盖完整迁移流程;如目标端可能存在同名表或存量数据,可展开目标表准备配置,按需选择预检查报错并停止任务、跳过并继续任务、删除对象并重建或保留结构并清空数据再覆盖写入等策略(删除重建或清空数据前,务必确认目标数据可以处理)。确认无误后单击下一步。

步骤 2:选择复制对象与黑名单

在选择复制对象页签,可以选择全部实例复制源库所有内容,也可以选择自定义对象,在源对象列表中勾选需要同步的库和表,单击添加加入右侧目标对象列表,仔细核对迁移范围。

如果采用全库或全实例复制但需要排除部分对象,可以使用黑名单功能:单击添加增加一条黑名单记录,左侧下拉框选择库名,右侧下拉框可选该库下的具体对象(留空则将整个库加入黑名单),支持按库或表级别过滤,避免非必要数据的同步。多个黑名单规则可继续单击添加追加。

步骤 3:配置映射(目标库表、Key 与 Distribute Key)

包含结构复制时,在配置映射页签需要配置目标表同步到 Doris 后的表名、Key 和 Distribute Key:有主键或唯一键的源表默认使用 Unique 模型,无主键且无唯一键的表使用 Duplicate 模型。单击页面右侧的映射与过滤,还可以自定义列名同步后的名称,并设置数据过滤条件(例如 emp_no>=10005,则不满足条件的数据不会同步)。核对目标库名、目标表名以及 Key 定义无误后,单击保存并预检查;不包含结构复制时,系统默认选择目标端同名数据库,不存在时需手动选择目标库。

步骤 4:预检查

预检查会自动核对连接、命名规则、权限和对象等条件,包括目标库数据存在性、目标库同名对象存在性、检查对象名合规性、源/目标数据源连接检查、源/目标库权限检查、Binlog 是否开启、binlog_format 是否为 ROW、binlog_row_image 是否为 FULL 等。预检查未通过时,单击检查项右侧操作列的详情,查看失败或警告的具体原因,手动修复后单击重新检查,直到全部通过;检查结果为警告的检查项可视具体情况修复或忽略。

提示:可以勾选开启数据一致性对比,在同步任务完成后自动发起基于源数据源的一致性对比。对于结构+全量+增量的组合任务,数据对比会在增量数据首次与源端一致且延迟为 0 秒时启动。

步骤 5:启动任务

预检查通过后,在启动任务页面确认运行配置并单击启动任务,提示启动成功后同步任务即开始运行。此时可单击查看详情进入任务详情页查看各复制阶段的执行情况,或单击返回列表回到数据复制任务列表。

四、查看同步结果:结构复制、全量复制、增量复制与数据对比

在数据复制页面单击目标任务的任务 ID 进入复制详情页,页面顶部展示同步延迟、任务状态以及结构复制、全量复制、增量复制各阶段的进度,还可单击配置告警,在任务失败时通过指定方式接收通知。

结构复制

在结构复制页签查看目标对象的创建结果,列表展示源/目标库、源/目标对象、开始与结束时间及状态;必要时可单击操作列的查看 DDL 进行 SQL 回放,或单击右上角日志查看结构复制的执行日志。

全量复制

切换到全量复制页签,检查表级状态、完成进度和数据量;全量复制过程中可单击监控查看各项监控指标,并通过限流设置限制每秒写入目标端的速率(行/秒);遇到失败对象,根据错误信息排查修复后继续处理。

增量复制

全量结束后,增量复制持续同步 MySQL 的数据变化。在增量复制页签可查看读取延迟、复制延迟的监控曲线以及 INSERT/DELETE/UPDATE/DDL 等各类型事件的统计,确认任务持续运行;单击查看线程可查看当前正在执行的线程号、执行 SQL、提交响应时间等信息;延迟异常时,结合日志以及源端和目标端资源情况排查,并可通过限流设置调整写入速率。

数据对比

切换到数据对比页签开启一致性校验:结构、全量、增量组合任务会在增量首次追平、延迟为零时自动启动相应对比,也可在任务预检查阶段提前开启,或在该页面单击重新对比手动发起。对比完成后查看源/目标记录数、对比结果与总耗时;发现不一致时,可查看源端与目标端对比详情,并生成变更 SQL 直接复制到目标端执行修复,修复后再次复验直到两端一致。

五、常见问题(FAQ)

Q1:MySQL 同步到 Doris 支持哪些复制类型?

支持结构复制、全量复制和增量复制三种类型,可单独或组合使用。生产迁移建议同时勾选三种:结构复制完成建表,全量复制完成存量初始化,增量复制基于 Binlog 持续同步变更,实现平滑迁移。

Q2:同步到 Doris 后的表模型(Data Model)如何确定?

NineData 按源表键定义自动映射:有主键表和无主键但有唯一键的表使用 Unique Model;无主键且无唯一键的表使用 Duplicate Model,默认取表中前 2 个列作为 Key,Distribute Key 与 Key 一致。同步前请尽量为表定义主键或唯一键。

Q3:目标端存在同名表或存量数据怎么办?

在数据源与目标页签展开目标表准备配置进行选择:可选预检查报错并停止任务、跳过并继续任务、删除对象并重建,或保留结构并清空数据再覆盖写入。执行删除重建或清空前,务必确认目标数据可以处理,避免误删。

Q4:预检查失败如何处理?

在预检查页签单击失败项右侧的详情,查看具体原因(常见如连接不通、权限不足、库名表名不符合 Doris 命名规范、Binlog 参数不满足等),手动修复后单击重新检查,直至全部通过;警告项可视情况修复或忽略。

Q5:同步延迟在哪里看?延迟为 0 秒意味着什么?

在复制详情页顶部与增量复制页签均可查看同步延迟。延迟为 0 秒表示源端与目标端数据已完全一致,此时可以将业务切换到目标 Doris,实现平滑迁移。

Q6:MySQL 的系统库会被同步到 Doris 吗?

不会。数据复制仅针对用户数据库,information_schema、mysql、performance_schema、sys 等系统库不会被复制;如需进一步排除某些业务库或表,可使用黑名单功能按库或表级别过滤。

结语

通过以上步骤,我们使用 NineData 完成了 MySQL 到 Doris 的结构、全量和增量复制配置,并查看了同步与数据对比结果。相比手工导出导入,NineData 将建表映射、模型转换、增量同步与一致性校验整合在一条可视化链路中,大幅降低 MySQL 到 Doris 迁移的门槛与风险。如果你正在规划 MySQL 到 Doris 的数据迁移,不妨按本文步骤实际操作一遍。

相关文档:NineData 官方文档《MySQL 迁移同步到 Doris》:https://docs.ninedata.cloud/replication/mysql_to_others/mysql_to_doris/

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。