全部产品
Search
文档中心

数据传输服务 DTS:迁移时源库为PolarDB MySQL版的注意事项及限制

更新时间:Jan 05, 2024

如果迁移的源集群为PolarDB MySQL版,您需要在配置具体的迁移任务前,参考本文的注意事项及限制,以保障数据迁移任务的正常运行。

源库为PolarDB MySQL版的迁移方案概览

根据如下迁移方案,查看迁移任务的注意事项及限制:

PolarDB MySQL版间的迁移

具体注意事项及限制如下:

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    • 在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

    • 如仅执行全量数据迁移,请勿向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择结构迁移、全量数据迁移和增量数据迁移。

其他限制

  • 建议源和目标PolarDB MySQL版的MySQL版本保持一致,以保障兼容性。

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

  • 若目标库的DDL写入失败,DTS任务会继续运行,您需要在任务日志中查看执行失败的DDL。查看任务日志的方法,请参见查询任务日志

其他注意事项

DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

PolarDB MySQL版迁移至RDS MySQL、自建MySQL

具体注意事项及限制如下:

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    • 在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

    • 如仅执行全量数据迁移,请勿向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择结构迁移、全量数据迁移和增量数据迁移。

注意事项

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

  • DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

  • 若目标库的DDL写入失败,DTS任务会继续运行,您需要在任务日志中查看执行失败的DDL。查看任务日志的方法,请参见查询任务日志

  • 若您将列名仅大小写不同的字段写入到目标MySQL数据库的同一个表中,可能会因为MySQL数据库列名大小写不敏感,导致迁移结果不符合预期。

  • 在数据迁移完成后,建议使用analyze table <表名>命令检查数据是否已写入目标表。例如,在MySQL触发HA切换机制后,可能会导致数据只写到了内存,从而造成数据丢失。

特殊情况

当目标库为RDS MySQL时,DTS会自动在RDS MySQL中创建数据库,如果待迁移的数据库名称不符合RDS MySQL的定义规范,您需要在配置迁移任务之前在RDS MySQL中创建数据库。相关操作,请参见管理数据库

PolarDB MySQL版迁移至PolarDB-X

具体注意事项及限制如下:

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    • 在全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

    • 如仅执行全量数据迁移,请勿向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择全量数据迁移和增量数据迁移。

    • 暂不支持增量迁移DDL操作,否则数据迁移任务会失败。如需进行DDL操作,建议您先在目标库手动执行后,在源库重复相应的DDL操作。

注意事项

  • 暂不支持结构迁移,在配置迁移任务前,您需要在目标实例中创建对应的库和表。

  • PolarDB-X的存储类型需为RDS MySQL(即私有定制RDS),暂不支持为PolarDB MySQL版

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

  • DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

PolarDB MySQL版迁移至云原生数据仓库 AnalyticDB MySQL 版

具体注意事项及限制如下:

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    • 在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

    • 迁移期间,请勿执行添加注释的DDL操作(如ALTER TABLE table_name COMMENT='表的注释';),否则数据迁移任务会失败。

    • 如仅执行全量数据迁移,请勿向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择结构迁移、全量数据迁移和增量数据迁移。

注意事项

  • 暂不支持迁移前缀索引,如果源库存在前缀索引可能导致数据迁移失败。

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 由于云原生数据仓库AnalyticDB MySQL版本身的使用限制,当云原生数据仓库AnalyticDB MySQL版中的节点磁盘空间使用量超过80%,会导致DTS任务异常,产生延迟。请提前根据待迁移的对象预估所需空间,确保目标集群具备充足的存储空间。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

  • DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

  • 若目标库的DDL写入失败,DTS任务会继续运行,您需要在任务日志中查看执行失败的DDL。查看任务日志的方法,请参见查询任务日志

PolarDB MySQL版迁移至自建Oracle

具体注意事项及限制如下:

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:

    • 在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

    • 如仅执行全量数据迁移,请勿向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择结构迁移、全量数据迁移和增量数据迁移。

注意事项

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。

  • 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

  • DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。

特殊情况

如自建Oracle为RAC结构,且需接入阿里云VPC,为保证DTS任务成功运行,您需要将Oracle RAC的SCAN IP和每个节点的VIP均接入至阿里云VPC,并且配置路由。具体步骤,请参见本地IDC接入至阿里云方案概览通过VPN网关实现本地IDC与DTS云服务互通

重要

在DTS控制台上配置源Oracle数据库信息时,在数据库地址或者IP地址只需输入Oracle RAC的SCAN IP。

PolarDB MySQL版迁移至DataHub

具体注意事项及限制如下:

类型

说明

源库限制

  • 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。

  • 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。

  • 如需进行增量迁移,需开启Binlog日志,并且需要将loose_polar_log_bin参数设置为on。否则预检查阶段提示报错,且无法成功启动数据迁移任务。开启Binlog日志和修改参数的方法,请参见开启Binlog修改参数值

    说明
    • PolarDB MySQL版开启Binlog日志会占用一定的存储空间,需要收取存储费用。

    • 如为增量迁移任务,DTS要求源数据库的本地Binlog日志保存24小时以上;如为全量迁移和增量迁移任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量迁移完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。

  • 源库的操作限制:在库表结构迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。

其他限制

  • 不支持全量数据初始化,即DTS不会将源PolarDB MySQL版集群中迁移对象的存量数据迁移至目标DataHub实例。

  • 仅支持表级别的数据迁移。

  • 不支持迁移源PolarDB MySQL版只读节点。

  • 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的默认迁移精度为38位,对DOUBLE的默认迁移精度为308位。

  • DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。

其他注意事项

DTS会在源库定时执CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。