tencent cloud

文档反馈

常见错误处理

最后更新时间:2023-11-16 16:59:51
    本章节提供了在任务运行过程中,常见的错误及处理方法,用户可按照对应指导进行错误处理。

    MySQL 常见错误

    如下为 MySQL 数据库在迁移、同步、订阅过程中的报错和处理方法,所列错误码为 MySQL 系统的错误码。
    错误码
    报错码说明
    报错场景
    报错示例
    分析和处理方法
    1227
    权限问题
    数据迁移、数据同步、数据订阅
    Error 1227: Access denied.
    问题分析
    执行任务的账号没有连接源库/目标库的权限。
    处理方法
    给执行任务的账号进行授权。具体账号权限要求请参考操作指导中的对应文档
    1040
    数据库连接数太多
    数据迁移、数据同步
    Error 1040: Too many connections.
    问题分析
    数据库连接数太多。
    处理方法
    修改源数据库的最大连接数 max_connections 为更大值,关闭源库不使用的连接,或者稍后在业务量少时进行任务重试。
    1045
    操作被拒绝
    数据迁移、数据同步、数据订阅
    Error 1045 (28000): Access denied for user '{{xx}}'@'{{xx}}' (using password: YES)
    问题分析
    在任务运行中用户修改了账号权限或密码信息。
    在源库或者目标库上未对 DTS 的服务 IP 进行授权。
    处理方法
    检查是否有修改账号或者密码操作,如果有请撤销或者改回,具体账号权限要求请参考操作指导中的对应文档
    参考文档对 DTS 的服务 IP 进行授权。
    1050
    库表已存在,重复执行 DDL 语句
    数据迁移、数据同步
    Error 1050: Table {{*}} already exists, binlog position:<{{*}}>, gtid:{{*}}, related tables: {{*}}
    问题分析
    创建多合一迁移/同步任务,多个源库执行了相同的 DDL 操作导致在目标库 DDL 操作重复。多合一场景中,仅支持在一个同步任务中勾选 DDL 操作。
    任务过程中,用户同时在目标库中也创建了该表,导致源库 DDL 操作同步到目标库中,重复执行。
    网络异常或语句执行时间太长,任务重试过程中造成 DDL 重复。
    处理方法
    按照如上分析排查,如需跳过当前事务,请提交工单处理。
    1054
    相关表中包含未知列
    数据迁移、数据同步
    Error 1054: Unknown column {{*}} related tables: {{*}}
    问题分析
    在任务启动前,未选择迁移/同步该表结构,目标库中不包含对应列。
    在任务运行中,用户同时操作了目标库,删除了该列。
    处理方法
    请在目标库上确认该列是否存在;如果不存在,请补齐该列后进行任务重试。
    1062
    主键冲突报错
    数据同步
    Error 1062: Duplicate entry '{{xx}}' for key 'PRIMARY', related tables: '{{xx}}'.
    问题分析
    同步场景中,如果主键冲突处理机制选择冲突报错,则 DTS 遇到目标库与源库同步的数据发生主键冲突会报错。
    在任务运行过程中,手动在目标库中写入数据,导致目标库中已存在相同主键的记录。
    在任务运行前,源库关闭了唯一键检查,在源库本身已经存在重复主键数据。
    在任务运行过程中,未同步 Delete 操作,导致源库数据删除后未同步至目标库,造成源库插入数据时与目标库主键冲突。
    处理方法
    检查源库是否有重复主键,如果有请先处理。
    修改或者删除目标库中对应数据表的主键,然后重试任务。
    1071
    索引字段长度太长
    数据迁移、数据同步
    Error 1071 (42000): Specified key was too long; max key length is 767 bytes.
    问题分析
    默认情况下,InnoDB 引擎单一字段索引的长度最大为767bytes,即:767/2<384个双字节的字段,或者767/3<256个三字节的字段。GBK 是双字节,UTF-8是三字节,utf8mb4_unicode_ci 是四字节。MySQL 5.6 及其以上版本,所有 MyISAM 表都会被自动转换为 InnoDB,所以在自建数据库上有超过767bytes的组合索引列,同样的建表语句在自建库上运行没问题,但是在 MySQL 5.6 版本以上就会有问题。
    处理方法
    修改文件中出错行组合索引列的长度。
    示例:create table test(test varcahr(255) primary key)charset=utf8;
    -- 成功
    create table test(test varcahr(256) primary key)charset=utf8;-- 失败
    1146
    库表不存在
    数据迁移、
    数据同步
    Error 1146: Table '{{xx}}' doesn't exist on query.
    问题分析
    任务过程中,目标库上删除了该表。
    源库在数据导出阶段进行了库表结构变更的 DDL。
    任务启动前,未选择迁移/同步该表结构。
    处理方法
    请到目标库上执行show create table xxx,确认该表是否存在;如果不存在,请在目标库上手动创建该表。
    1213
    源库和目标库双写引起死锁
    数据迁移、数据同步
    Error 1213: Deadlock found when trying to get lock; try restarting transaction, related tables: '{{xx}}'.
    问题分析
    DTS 在目标库的写操作与用户在目标库的写操作冲突,造成死锁。
    处理方法
    终止死锁进程,重建任务。
    建议实例控制下更新操作的加锁逻辑,给表加索引,尽量走行锁,减少锁开销。
    1236
    源端 Binlog 日志问题
    数据迁移、数据同步、数据订阅
    Error 1236 (HY000): Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup……
    问题分析
    源库 Binlog 日志保存时间短,DTS 拉取时已经被清理,或者拉取到的 Binlog 位点不正确。
    处理方法
    确认源库 Binlog 的保存时间(expire_logs_days)设置符合业务需求,建议保存时间大于3天,然后重建任务。
    1414
    数据导出阶段源库进行了变更库表结构的 DDL
    数据迁移
    Error 1414: Table definition has changed, please retry transanction.
    问题分析
    在源库数据导出阶段,不能进行库表结构变更的 DDL 操作,否则会可能会导致报错。
    处理方法
    重建迁移任务。

    DTS 常见错误

    如下为 DTS 系统在迁移、同步、订阅过程中的常见报错及处理方法。
    报错说明
    报错场景
    报错示例
    分析和处理方法
    数据库连接异常
    数据迁移、数据同步、数据订阅
    {{*}}invalid connection{{*}}.
    driver: bad connection,{{*}}
    dial tcp {{*}}: connect: connection refused.
    问题分析
    1. 源/目标库被隔离或下线。
    2. 源/目标库长时间重启不成功。
    3. 源/目标库发生主从切换长时间不成功。
    4. 源/目标库负载过高。
    5. 人工或者程序定期/不定期地 Kill 源/目标库上的连接。
    6. 其他可能导致网络连接失败的情况,例如对源/目标库设置了网络安全策略阻止了接入请求。
    处理方法 请按照上述分析逐个排查并解决。
    对于腾讯云实例,可通过实例控制台以及腾讯云可观测平台协助排查和解决问题,解决成功后可在控制台重试任务进行恢复。
    如果未发现问题或者解决不成功,可提交工单处理。
    数据库连接异常
    数据迁移、数据同步、数据订阅
    dial tcp {{*}}: connect: connection refused.
    问题分析
    1. 源/目标库被隔离或下线。
    2. 源/目标库长时间重启不成功。
    3. 源/目标库发生主从切换长时间不成功。
    4. 源/目标库负载过高。
    5. 其他可能导致网络连接失败的情况,对源/目标库设置了网络安全策略阻止了接入请求。
    处理方法 请按照上述分析逐个排查并解决。
    对于腾讯云实例,可通过实例控制台以及腾讯云可观测平台协助排查和解决问题,解决成功后可在控制台重试任务进行恢复。
    如果未发现问题或者解决不成功,可提交工单处理。
    源数据库存在较长时间的 SQL 在运行导致加锁失败
    数据迁移、数据同步
    Find Resumable Error, src db has long query sql, fix it and try it later.
    Find Resumable Error: Task failed due to table lock failure caused by time-consuming SQL query statements in source instance.
    
    问题分析
    如果源数据库存在较长时间的 SQL 在运行(大于5s),为保证源数据业务不受影响,DTS 需要等慢 SQL 运行结束后再加锁进行数据导出,默认加锁时间为60s,超时后加锁失败,任务报错。
    处理方法
    处理源库中的慢 SQL 或者等慢 SQL 运行结束后进行任务重建。
    Binlog 参数格式不符合要求
    数据迁移、数据同步、数据订阅
    Statement binlog format unsupported:{{xx}}.
    binlog must ROW format, but MIXED now.
    binlog row before/after image not full, missing column {{xx}}, binlog posistion:{{xx}}, gtid:{{*}}.
    问题分析
    为了保证数据的正确性和完整性,DTS 会对源库 Binlog 相关参数做如下要求,在检查阶段也会对源库的 Binlog 参数进行检查,不符合要求则会报错,无法启动任务。
    检查通过任务启动后,如果用户修改了源库 Binlog 参数也会导致任务报错,请确保源库 Binlog 满足如下要求。
    binlog_format 需要设置为 ROW
    binlog_row_image 需要设置为 FULL
    处理方法
    根据提示修改报错参数,详细操作指导请参考 Binlog 参数检查,然后重建任务。
    注意:参数修改后需要重启线程才能生效,数据库重启后参数会恢复初始配置,所以重启后请确认参数配置正确。
    内置 Kafka 异常
    数据订阅
    kafka: error while consuming {{*}}.
    kafka: Failed to produce message to topic.
    问题分析
    DTS 数据订阅内置 Kafka 组件生产或消费异常,后端服务会自动重试并自愈,请刷新一下页面,关注任务的状态流转。
    处理方法
    如果超过10分钟后刷新,状态仍然没有流转,请提交工单处理。
    任务停止超过7天,Kafka 数据过期
    数据订阅
    kafka server: The requested offset is outside the range of offsets maintained by the server for the given topic/partition.
    问题分析
    由于任务停止或者异常时间超过7天,DTS 任务中间缓存的Kafka 数据过期,导致读取 Kafka 数据失败。
    解决方法
    销毁任务并重建任务。对于包年包月的任务,可通过重置操作来新建任务。
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持