开发者社区 > 数据库 > 数据库管理工具 > 正文

DTS常见报错的解决方法有哪些?

已解决

DTS常见报错的解决方法有哪些?

展开
收起
又出bug了-- 2022-01-07 21:14:29 3840 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    如下为数据传输服务DTS在使用过程中常见错误解决方法,您可以通过返回的错误信息在本文匹配解决方案。

    错误码 具体报错信息 问题原因 解决方案 DTS-002003 DTS-002003 Connect db failure, unknow db url xx.xx.xx.xx:xx, please vaild url. Original error: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 根据接入方式不同,可能的原因如下所示:

    自建库接入:数据库地址或端口填写错误,DTS到自建库的网络不通。 专线接入:无法通过专线连接到数据库。 根据接入方式不同,解决方法如下所示:

    自建库接入:检查数据库地址或端口,测试填写的数据库地址或端口的连接性,请根据实际情况更正数据库地址。 专线接入:测试专线连通性,如果是专线不通,请提交工单。 DTS-002004 DTS-002004 Connect db xx.xx.xx.xx:xx failure, Unknow db user user_name, please vaild user. Original error: original_error. 创建DTS任务时使用的账号不正确。 使用已经存在的账号,或者创建新的账号。 DTS-002005 DTS-002005 Connect db failure, db user user_name password xxxx incorrect, Please vaild user info. Original error: original_error. 创建DTS任务使用目标库账号或密码错误。 验证账号密码是否正确,然后使用正确的账号密码重新配置任务即可。 DTS-002006 DTS-002006 Connect db ip:port failure, db user user_name_xx no connect permission, Please vaild user info. Original error: original_error. 连接目标数据库所使用的账号和密码错误。 使用正确的账号和密码连接目标数据库,验证是否可以正常连接。 DTS-002007 DTS-002007 Connect db failure, client IP xxx.xxx.xx.xx is not not allowed to connect Server server_name. Original error: original_error. DTS服务所使用的账号不具备连接指定数据库的权限。 给相关账号授权或者更换为其他具备连接权限的数据库账号。 DTS-002008 DTS-002008 Connect db failure, unknow database name [$Database_name]. Original error: [$Original_error]. 创建DTS任务所使用的连接信息中数据库的名称错误。 检查数据库名称是否正确,如果不正确,则重新创建DTS任务或者更新任务配置。 DTS-002009 DTS-002009 Connect db xx.xx.xx.xx:xx timeout. Original error: original_error. 由于网络异常,导致新建数据库连接超时。 登录DTS控制台,重启失败的DTS任务尝试恢复。 DTS-002010 DTS-2010 Unknow connect db xx.xx.xx.xx:xx failure. Original error: original_error. DTS连接数据库失败,可能的原因如下: 用户名或密码错误。 白名单配置错误。 网络存在异常。 请检查用户名密码是否正确。 请先将RDS的白名单配置成0.0.0.0/0。 请联系网络工程师协助排查网路问题后重试。 DTS-1050003 DTS-150003 MySQL binlog timstamp 12345678 is not found on server. Original error: original_error. 根据报错信息可知,原因可能有以下两种:

    如果任务暂停超过7天,RDS日志被清理,需要重新创建任务。 源库的Binlog保留时间过短,建议源库MySQL日志至少保留3天。 根据问题原因,解决方法如下:

    如果源数据库是自建MySQL数据库,则需要在自建数据库中恢复相应的Binlog文件。 如果源数据库是RDS,请提交工单。 DTS-1050004 DTS-002004 Connect db xx.xx.xx.xx:xx failure, Unknow db user user_name, please vaild user. Original error: original_error. 创建DTS任务时使用的账号不正确。 使用已经存在的账号,或者创建新的账号。 DTS-1050005 DTS-1050005 MySQL table xx.xx binlog column count check error, local count is 21, but binlog count is 22, at offset 9198@111547. Binlog中待解析的日志对应表的表结构与DTS本地存储表的表结构不一致,导致Binlog解析失败。出现表结构跟DTS本地存储表结构不一致的原因主要有以下两种: 原因一:该表之前进行表结构变更的DDL语句中,DTS解析失败被忽略跳过,未更新DTS本地存储的表结构。 原因二:全量数据迁移或初始化过程中,源库业务进行过表结构变更。 给DTS源库账号赋予整个information_schema的查询权限,有关授权操作请参见GRANT。

    说明:如问题未解决,请提交工单说明最近执行的DDL,联系阿里云技术支持重新加载DTS本地存储的表结构。

    DTS-1050007 DTS-002007 Connect db failure, client IP xxx.xxx.xx.xx is not not allowed to connect Server server_name. Original error: original_error. DTS服务所使用的账号不具备连接指定数据库的权限。 给相关账号授权或者更换为其他具备连接权限的数据库账号。 DTS-1050008 DTS-1050008 MySQL local table db_name.table_name meta not found DTS的DDL解析失败导致的数据字典更新错误。 DTS任务创建过程中源库触发对应DDL操作,导致DTS查询的Schema信息错误。 DTS的MySQL日志Reader解析Event存在Bug。 说明:该原因仅适用于代号DTS-1050008的错误。 给DTS源库账号赋予整个information_schema的查询权限,有关授权操作请参见GRANT。重新执行之前的任务,确认问题已解决。

    说明:如问题未解决,请提交工单说明最近执行的DDL,联系阿里云技术支持协助解决。

    DTS-1050009 DTS-1050009 MySQL binlog parse error, at offset filename@offset. DTS-1050010 DTS-1050010 column db_name.table_name.column_name binlog parse error, at offset filename@offset. DTS的DDL解析失败导致的数据字典更新错误。 DTS任务创建过程中源库发生了对应DDL,导致DTS查询的schema信息不对。 DTS连接MySQL数据库,MySQL日志Reader解析event存在Bug。 建议为DTS的源库账号添加information_schema的查询权限。 DTS-1051001 DTS-1051001 Query remote MySQL instance xx.xx.xx.xx:xx table db_name.table_name meta fail. Original error: original_error. DTS查询表结构可能存在查询超时。 根据Java驱动报错内容定位原因,并解决。

    说明:如问题无法解决,请联系阿里云技术支持。

    DTS-1051002 DTS-1051002 Current connect MySQL instance xx.xx.xx.xx:xx is not master. DTS的MySQL日志显示主实例验证失败,可能使用了从实例。 修改任务配置,使用MySQL主实例重新配置任务。 DTS-1051004 DTS-1051004 BEGIN and COMMIT middle have any other evetns, Please vaild binlog file. MySQL日志BEGIN和COMMIT中间没有有效的DML操作,如果源库使用RDS只读实例会出现该问题,原因是RDS只读实例没有Binlog,故无法做增量迁移和同步。 检查源库是否为RDS的只读实例,如果是只读实例需要使用非只读实例重新配置任务。 DTS-1051005 DTS-1051005 MySQL Server xx.xx.xx.xx:xx select binlog list is empty, Please use sql: SHOW BINARY LOGS; vaild binlog list. MySQL源库Binlog列表为空,可能未开启Binlog。 检查源库MySQL是否开启了Binlog,可以通过以下SQL语句查看对应的Binlog列表。如未开启Binlog,则请手动开启。

    SHOW BINARY LOGS; DTS-1051006 DTS-1051006 MySQL Server [$IP]:[$Port], Table [$DB_Name].[$DB_table] is not exists. 使用DTS进行数据同步与数据订阅时,MySQL日志Reader会对源数据库的Binlog文件列表进行校验,如果近期发生过DDL变更,则可能会导致校验失败。 请检查该数据表的表结构是否有变动,若有变动,可在修复后重新进行DTS相关操作。如果问题无法解决,请提交该数据表的建表语句与近期执行的相关DDL语句,请联系阿里云技术支持协助解决。 DTS-1051007 DTS-1051007 In binary log offset filename@offset(timestamp: unix_timestmap), found table db_name.table_name not full mode event. DTS服务连接MySQL只支持binlog_row_image='FULL' 模式的日志。 DTS连接MySQL的Reader日志binlog_row_image校验失败的解决方法 使用DTS将其他阿里云账号下的RDS实例迁移到当前账号,在任务配置时报获取结构对象失败。 DTS连接源RDS实例失败,可能由如下两个原因造成。

    配置连接信息不正确。 RDS配置了白名单,并未对当前DTS添加相应规则。 参见跨阿里云账号迁移MongoDB实例和跨阿里云账号迁移MySQL实例文档,确认连接信息的正确性。 参见RDS设置白名单,为当前DTS添加相应白名单规则。 配置Oracle到MySQL迁移任务时报“java.sql.SQLException: Io,异常:The Network Adapter could not establish the connection”错误

    一般是由于数据传输服务连接不上源Oracle数据库。 当遇到此问题时,需要在Oracle安装服务器上执行netstat -ano命令,查看Oracle数据库的端口是否配置了内外网IP监听。如果没有配置,那么需要修改Oracle的监听服务,重启数据库服务后,重新创建迁移任务即可。 DTS数据订阅报“java.io.IOException:Parse message attribute failed”错误 DTS订阅通道只能查询最近24小时之内的数据,时间点不在该范围内就会报这个错误。 您可以修改DTS的消费时间点,如何修改消费时间点请参见修改消费时间点。 使用DTS数据订阅时提示“Connection timed out”错误 SDK所使用的服务器设置了context.setUsePublicIp(false);参数。 检查运行SDK服务器时是否设置了context.setUsePublicIp(false);,如果设置了,将其修改为context.setUsePublicIp(true);。 若同一个订阅任务启动多个Client,只有一个Client消费数据,则其他Client属于容灾状态。 DTS启动订阅SDK时提示“get guid info failed” 这是由于您在SDK中设置的订阅通道ID错误导致。 需要将示例代码中的client.askForGUID替换成您要订阅的订阅通道对应的ID即可。 Specified signature is not matched with our calculation 这个报错是由于您在SDK中配置的AccessKeyID、AccessKeySecret不正确。 建议重新生成新的AccessKeyID、AccessKeySecret后,使用新的AK重启SDK。 数据订阅启动SDK报“keep alive error”错误。 SDK运行的服务器没有公网IP,不能连接数据传输服务的服务器,或者因为订阅通道的消费时间点不在订阅通道的数据范围之内。 创建公网IP,建立SDK的公网连接,或者重新修改消费位点,具体的修改方法请参见修改订阅通道消费位点。 client partition is empty,wait partition balance 数据订阅启动比较慢,一般需要几分钟,此时客户端会提示“client partition is empty,wait partition balance”错误。 对于同一个数据订阅实例,如果有多个下游Client消费数据,只有一个能正常订阅到数据。其他Client作为Backup,此时这些作为Backup的Client会报“client partition is empty,wait partition balance”错误。 确认数据订阅是否正在启动中。如果是正在启动中,则只需要耐心等待数据订阅正常启动。 如果数据订阅已经正常启动,则需要排查是否有多个Client消费数据,如有多个,只有正在订阅数据的Client异常或是出现网络连接异常时后,Backup才可进行数据订阅,详情请参见数据订阅SDK容灾。 Redis数据同步报“Cannot read anything”错误 源Redis实例配置的client output buffer过小导致读取log失败造成的。 登录Redis管理控制台,单击参数设置,在该页面调整client-output-buffer-limit参数即可,调整如下。

    client-output-buffer-limit slave 0 0 0

    DTS全量迁移报“java.sql.BatchUpdateException: INSERT, DELETE command denied to user 'user'”错误 全量迁移如果报INSERT、CREATE或DELETE等命令的权限问题,一般都是由于目标RDS实例被锁定,导致账号写权限被回收。 首先回收目标RDS实例的日志空间或升级目标RDS实例的规格。然后在DTS控制台触发重试功能,断点重启任务,具体修复方法请参见失败修复。

    适用于 数据传输服务 DTS

    2022-01-07 21:36:45
    赞同 展开评论 打赏

热门讨论

热门文章

相关电子书

更多
DTS助力企业快速复制阿里巴巴异地多活架构 立即下载
DTS控制台一本通 立即下载
Logview参数详解和故障排查 立即下载