跳到主要内容

MySQL 迁移到 MySQL

NineData 数据复制支持自建 MySQL 到自建 MySQL 数据源之间的全量数据迁移和增量数据迁移,本文提供如何使用 NineData 进行 MySQL 数据源之间增量数据迁移的最佳实践文档。

功能介绍

NineData 数据复制支持数据源之间的结构、全量数据、增量数据的高性能复制,对于 MySQL 数据源之间的复制,还提供双向复制功能,实现快捷构建异地多活业务架构。

  • 结构:支持同构及异构数据源之间的对象结构复制,很大程度上降低了两个数据源之间的数据复制门槛。
  • 全量数据:通过智能数据分片实现行级并发批量复制能力,有效保障复制性能。自主研发的新型断点续传技术,保证无主键表的数据准确性。
  • 增量数据:支持全对象类型的 DML|DDL 增量数据复制,结合事务级并发、热点合并等技术,在保障事务一致性的基础上,提供强劲复制性能。
  • 双向数据实时复制:直接多个节点之间的数据双向复制,保证所有节点的数据均保持最新状态。

通过以上功能,可以轻松高效地实现全量|增量数据复制全量|增量数据迁移全量|增量数据同步数据集成不停机无缝迁移等场景,为企业提供灵活和可靠的数据复制解决方案。

前提条件

  • 已将源数据源和目标数据源添加至 NineData。如何添加,请参见添加数据源

  • 源和目标数据源的版本见下表,注意源数据源版本必须小于等于目标数据源版本。

    源数据源目标数据源
    MySQL 8.0MySQL 8.0
    MySQL 5.7MySQL 8.0、5.7
    MySQL 5.6MySQL 8.0、5.7、5.6
    MySQL 5.5MySQL 8.0、5.7、5.6、5.5
    MySQL 5.1MySQL 8.0、5.7、5.6、5.5、5.1
  • 源数据源必须开启 Binlog,并且 Binlog 相关参数设置如下:

    • binlog_format=ROW
    • binlog_row_image=FULL
    提示

    如果源数据源为备库,为保证获取完整的 Binlog 日志,还需要开启 log_slave_updates 参数。

使用限制

  • 数据复制功能仅针对数据源中的用户数据库,系统库不会被复制。例如:MySQL 类型数据源中的 information_schemamysqlperformance_schemasys 库不会被复制。
  • 源数据源的账号必须拥有复制对象的 SELECT 权限(结构复制、全量复制)、SHOW VIEW权限(视图复制)以及 REPLICATION CLIENTREPLICATION SLAVE 权限(增量复制),目标数据源的账号必须拥有DML、DDL权限。
  • 执行数据同步前需评估源数据源和目标数据源的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源数据源和目标数据源一定的读写资源,导致数据库负载上升。
  • 同步过程中,如果源数据源中包含视图(VIEW)、函数(FUNCTION)、存储过程(PROCEDURE)、触发器(TRIGGER)、事件(EVENT),则同步到目标数据源后,上述对象的定义者(DEFINER)信息将在目标数据源中被修改为当前同步任务中访问目标数据源的账号。
  • 需要确保同步对象中的每张表都有主键或唯一约束、列名具有唯一性,否则可能会重复同步相同数据。
  • 同步过程中,如果源数据源存在触发器,则系统会在增量同步结束以后才会同步触发器。

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击

  3. 页面,单击右上角的

  4. 页签,按照下表进行配置,并单击

    参数
    说明
    输入数据同步任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    同步对象所在的数据源。
    接收同步对象的数据源。
    选择
    选择需要复制到目标数据源的内容,分别勾选setting图标为增量操作类型配置,可以根据需求取消勾选某一些操作类型,取消勾选后,这些操作会在增量同步中被忽略。
    (选中时需要选择)根据需求选择遇到对象名称冲突时需要执行的策略。
    • :预检查阶段检测到同名表时,停止任务。
    • :预检查阶段检测到同名表时,发送提示并继续任务。 结构复制时,忽略该同名表。如果您同时进行了数据复制,则数据会在同名表中追加,而不会覆盖原有数据。
    • :预检查阶段检测到同名表时,发送提示并继续任务。结构复制时,删除目标库同名表,并基于源库重新复制表结构。如果您同时进行了数据复制,则数据会在表结构复制完成后写入。
    • (同时进行结构和数据复制时可选):预检查阶段检测到同名表时,发送提示并继续任务。结构复制时在目标库保留该表结构,并在数据复制开始时清空同名表中的数据,然后重新从原表中复制。
  5. 页签,配置下列参数,然后单击

    参数
    说明
    选择需要复制的内容,您可以选择复制源库所有内容,也可以选择,在列表中选中需要复制的内容,单击>添加到右侧列表。
    (可选)单击增加一条黑名单记录,选择需要加入黑名单的库或对象,这些内容都不会被复制。用于在的全库复制或复制中排除某些库或对象。
    • 左侧下拉框:选择需要加入黑名单的库名。
    • 右侧下拉框:选择对应库中的对象,您可以单击多个对象进行多选,留空则将整个数据库加入黑名单。
    如果要将多个库加入黑名单,您可以单击下方的添加按钮增加一行。
  6. 页签,配置表同步到目标数据源之后的表名,然后单击。如果在配置映射阶段,源和目标数据源中有更新,可以单击页面右上角的按钮,重新获取源和目标数据源的信息。

    提示

    您可以单击页面右侧的,自定义列名同步到目标数据源之后的名称。除此之外,您还可以设置,通过比较表达式配置过滤条件,仅符合过滤条件的数据会同步到目标数据源。例如,将过滤条件设置为 emp_no>=10005,则 emp_no 列中小于 10005 的数据均不会同步到目标数据源。

  7. 页签,等待系统完成预检查,预检查通过后,单击

  8. 页面,提示,同步任务开始运行。此时您可以进行如下操作:

    • 单击查看同步任务各个阶段的执行情况。
    • 单击可以返回任务列表页面。