DTS常见报错的解决方法
概述
在使用数据传输服务DTS过程中,可能会遇到各种报错信息,本文主要介绍在使用过程中常见错误信息的解决方法。
详细信息
如下为数据传输服务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-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连接数据库失败,可能的原因如下:
|
|
DTS-1050003 | DTS-150003 MySQL binlog timstamp 12345678 is not found on server. Original error: original_error. |
根据报错信息可知,原因可能有以下两种:
|
根据问题原因,解决方法如下:
|
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本地存储表结构不一致的原因主要有以下两种:
|
给DTS源库账号赋予整个information_schema的查询权限,有关授权操作请参见GRANT。
|
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源库账号赋予整个information_schema的查询权限,有关授权操作请参见GRANT。重新执行之前的任务,确认问题已解决。
|
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的源库账号添加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实例失败,可能由如下两个原因造成。
|
|
|
配置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); 参数。 |
|
|
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 |
|
|
|
Redis数据同步报“Cannot read anything”错误 | 源Redis实例配置的client output buffer 过小导致读取log失败造成的。 |
登录Redis管理控制台,单击参数设置,在该页面调整
|
|
DTS全量迁移报“java.sql.BatchUpdateException: INSERT, DELETE command denied to user 'user'”错误 | 全量迁移如果报INSERT、CREATE或DELETE等命令的权限问题,一般都是由于目标RDS实例被锁定,导致账号写权限被回收。 |
首先回收目标RDS实例的日志空间或升级目标RDS实例的规格。然后在DTS控制台触发重试功能,断点重启任务,具体修复方法请参见失败修复。 |
适用于
- 数据传输服务 DTS