跳到主要内容

MySQL 同步到阿里云 PolarDB-X

NineData 数据复制支持自建 MySQL 到自建 MySQL 数据源之间的全量数据同步和增量数据同步。

功能介绍

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

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

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

前提条件

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

  • 源数据源为 MySQL,版本为 5.1 及以上。

  • 目标数据源为阿里云 PolarDB-X。

  • 源数据源必须开启 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)信息将在目标数据源中被修改为当前同步任务中访问目标数据源的账号。
  • 需要确保同步对象中的每张表都有主键或唯一约束、列名具有唯一性,否则可能会重复同步相同数据。
  • 同步过程中,如果源数据源存在触发器,则系统会在增量同步结束以后才会同步触发器。

操作步骤

商业化通知

NineData 数据复制产品已商业化,您仍然可以保有 10 条复制任务免费使用,注意事项如下:

  • 10 条复制任务中可以包含 1 条任务,规格为 Micro
  • 状态为的任务不算在 10 条任务的限制内,如果您已经创建了 10 条复制任务,还想要继续创建,可以先终止之前的复制任务,然后再创建新任务。
  • 创建复制任务时,仅可选择您已购买的,未购买的规格将以灰度显示,无法选择。如需购买,请通过页面右下角的客服图标联系我们。
  1. 登录 NineData 控制台

  2. 在左侧导航栏单击

  3. 页面,单击右上角的

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

    参数
    说明
    输入数据同步任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    同步对象所在的数据源。
    接收同步对象的数据源。
    选择对象名称从源端迁移到目标端后的大小写转换规则。
    • :无论源端的命名规则如何,目标端的命名规则全部为小写。
    • :沿用源端的命名规则。
    • :无论源端的命名规则如何,目标端的命名规则全部为大写。
    选择需要复制到目标数据源的内容。
    • :同步源数据源的所有对象和数据,即全量数据复制。右侧的开关为周期性全量复制的开关,更多信息,请参见周期性全量复制
    • :在全量同步完成后,基于源数据源的日志进行增量同步。setting图标为增量操作类型配置,可以根据需求取消勾选某一些操作类型,取消勾选后,这些操作会在增量同步中被忽略。
    • :预检查阶段检测到目标对象已存在时,停止任务。
    • :预检查阶段检测到目标对象已存在时,忽略并追加写入。
    • :预检查阶段检测到目标对象已存在时,删除并重新写入。
  5. 页签,配置下列参数,然后单击

    参数
    说明
    选择需要复制的内容,您可以选择复制源库所有内容,也可以选择,在列表中选中需要复制的内容,单击>添加到右侧列表。

    如果您需要创建多条相同复制对象的复制链路,可以创建一个配置文件,在新建任务的时候导入即可。单击右上角的,再单击下载模板,将配置文件模版下载到本地,编辑完成后单击上传该配置文件即可实现批量导入。配置文件说明:

    参数
    说明
    source_table_name需同步的对象所在的源表名。
    destination_table_name接收同步对象的目标表名。
    source_schema_name需同步的对象所在的源 Schema 名。
    destination_schema_name接收同步对象的目标 Schema 名。
    source_database_name需同步的对象所在的源库名。
    target_database_name接收同步对象的目标库名。
    column_list需要同步的字段列表。
    extra_configuration额外的配置信息,您可以在这里配置如下信息:
    • column_rules:用于定义字段的映射关系与取值规则。字段说明:
      • column_name:原列名。
      • destination_column_name:指定目标列名。
      • column_value:指定字段值,可为 SQL 函数或常量值。
    • filter_condition:用于指定行级数据的过滤条件,只有满足条件的行会被复制。
    提示
    • extra_configuration 的示例内容如下:

      {
      "extra_config":{
      "column_rules":[
      {
      "column_name": "created_time", //指定需要执行列名映射的原列名。
      "destination_column_name": "migrated_time", //目标列名映射为 "migrated_time"。
      "column_value": "current_timestamp()" //将列的字段取值更改为当前时间戳。
      }
      ],
      "filter_condition": "id != 0" //ID 不为 0 的行才会同步。
      }
      }
    • 配置文件的整体示例内容请参见下载的模版。

  6. 页签,系统默认选择目标数据源中的同名数据库,如果不存在,则需要手动选择目标库。目标库中的表名、列名需要和同步对象一致。如果不一致,您也可以手动进行表名和列名的映射,然后单击。如果在配置映射阶段,源和目标数据源中有更新,可以单击页面右上角的按钮,重新获取源和目标数据源的信息。

    您还可以进行如下操作:

    • 单击页面右侧的,自定义列名同步到目标数据源之后的名称。
    • 页面,单击,通过比较表达式配置过滤条件,仅符合过滤条件的数据会同步到目标数据源。例如,将过滤条件设置为 emp_no>=10005,则 emp_no 列中小于 10005 的数据均不会同步到目标数据源。
    • 单击右侧的replace_tablename图标,可搜索表名,并替换成目标名称。
    • 在右上角的文本框中输入表名以快速定位到目标表。
    • 单击右上角的,可以批量定义通用规则(如表名、字段名大小写转换、前后缀添加、替换等),实现对大量表和字段的统一映射配置。
  7. 页签,等待系统完成预检查,预检查通过后,单击

    提示
    • 您可以勾选。在同步任务完成后,自动开启基于源数据源的数据一致性对比,保证两端数据一致。当增量数据首次和源数据源一致且为 0 秒时启动。您可以单击,在页面中查看同步延迟。

      sync_delay

    • 如果预检查未通过,需要单击目标检查项右侧列的,排查失败的原因,手动修复后单击重新执行预检查,直到通过。

    • 的检查项,可视具体情况修复或忽略。
  8. 页面,提示,同步任务开始运行。此时您可以进行如下操作:

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

查看同步结果

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面单击目标同步任务的,页面说明如下。

    result_sybase

    序号
    功能
    说明
    1同步延迟源数据源和目标数据源之间的数据同步延迟,0 秒表示两端之间没有延迟,此时您可以选择将业务切换到目标数据源,实现平滑迁移。
    2配置告警配置告警后,系统会在任务失败时通过您选择的方式通知您。更多信息,请参见运维监控简介
    3更多
    • :暂停任务,仅状态为运行中的任务可选。
    • :创建一个和当前任务配置相同的新复制任务。
    • :结束未完成或监听中(即增量同步中)的任务,终止任务后无法重启任务,请谨慎操作。如果同步对象中包含触发器,会弹出触发器复制选项,请按需选择。
    • :删除任务,任务删除后无法恢复,请谨慎操作。
    4全量复制(包含全量复制的场景下显示)展示全量复制的进度和详细信息。
    • 单击页面右侧的:查看全量复制过程中的各监控指标。全量复制过程中,还可以单击监控指标页面右侧的,限制每秒写入到目标数据源的速率。单位为行/秒。
    • 单击页面右侧的:查看全量复制的执行日志。
    • 单击页面右侧的refresh:查看最新的信息。
    5增量复制(包含增量复制的场景下显示)展示增量复制的各项监控指标。
    • 单击页面右侧的:查看当前复制任务正在执行中的操作,包含:
      • :复制任务分多个线程执行复制操作,展示当前进行中的线程号。
      • :当前线程正在执行中的 SQL 语句详情。
      • :当前线程的响应时间,如果该数值变大,则代表当前线程可能由于某些原因卡住。
      • :当前线程开启的时间戳。
      • :当前线程的状态。
    • 单击页面右侧的:限制每秒写入到目标数据源的速率。单位为行/秒。
    • 单击页面右侧的:查看增量复制的执行日志。
    • 单击页面右侧的refresh:查看最新的信息。
    6修改对象展示同步对象的修改记录。
    • 单击页面右侧的,可对同步对象进行配置
    • 单击页面右侧的refresh:查看最新的信息。
    7数据对比展示源数据源和目标数据源之间对比的结果。如果您未开启数据对比,请单击页面中的
    • 单击页面右侧的:对当前源和目标两端数据重新发起对比。
    • 单击页面右侧的:对比任务开始后,可单击该按钮立即停止对比任务。
    • 单击页面右侧的:查看一致性对比的执行日志。
    • 单击页面右侧的(仅数据对比显示):查看对比 RPS(每秒对比的记录数)的走势图。单击可以查看更早之前的记录。
    • 在对比列表右侧列单击details页签下只在不一致情况下显示):查看源端和目标端的对比详情。
    • 在对比列表右侧列单击sql(不一致情况下显示):生成变更 SQL,您可以直接复制该 SQL 到目标数据源执行,修改不一致的内容。
    8展开展示当前复制任务的详细信息。

附录:预检查项一览表

检查项检查内容
源库无主键表存在性校验检查待复制对象是否不存在主键或唯一键
源数据源连接检查检查源数据源网关状态、实例是否可达、用户名及密码准确性
目标数据源连接检查检查目标数据源网关状态、实例是否可达、用户名及密码准确性
源库权限检查检查源数据库的账号权限是否满足要求
源数据库 log_slave_updates 是否支持当源数据库为从库时,检查 log_slave_updates 是否为 ON
源数据源和目标数据源版本检查检测源数据库与目标数据库的版本是否兼容
源数据库是否开启 Binlog检查源数据库是否开启 Binlog
源数据库 Binlog Format 是否支持检查源数据库的 binlog 格式是否为 'ROW'
源数据库 binlog_row_image 是否支持检查源数据库的 binlog_row_image 是否为 'FULL'
循环链路检查检查环路是否存在
校验源端数据库实例是否处于只读模式校验源端数据库实例是否处于只读模式
Check ItemsCheck Contents
Verify if there are no primary key tables in the source databaseCheck if the object to be migrated does not have a primary key or unique key
Source datasource connection checkCheck the status of the gateway of the source datasource, database connectable, and verify the username and password
Target datasource connection checkCheck the status of the gateway of the target datasource, database connectable, and verify the username and password
Source database privilege checkCheck whether the account privileges of the source database meet the requirements
Source database log_slave_updates checkWhen the source database is a slave, check whether log_slave_updates is ON
Source and target datasource version checkCheck whether the source and target database versions are compatible
Check if the source database has Binlog enabledCheck if the source database has Binlog enabled
Source database binlog format checkCheck whether the binlog format of the source database is 'ROW'
Source database binlog_row_image checkCheck whether the binlog_row_image of the source database is 'FULL'
Cyclic replication checkCheck for replication loops
Check the read-only status of the source database instanceCheck the read-only status of the source database instance

相关文档

数据复制简介