datax 3.0 同步mysql数据到hdfs后,出现数据丢失
datax 3.0 同步mysql数据到hdfs后,出现数据丢失的情况,重试之后又好了,请问一下,你们有没有遇到过?我们的mysql版本是5.6.40 CPU和内存是8核 32GB,jdbc版本是mysql-connector-java-5.1.47.jar ,mysql的原始数据有172067243条记录, 但是第一次同步的时候只有168052232条,重试之后就好了, 我们的配置文件大致如下:
{
"content":[
{
"reader":{
"name":"mysqlreader",
"parameter":{
"column":[
"`id`",
"`login`",
"`mobile`",
"`created_at`",
"`updated_at`"
],
"connection":[
{
"jdbcUrl":[
"jdbc:mysql://neo-mysql-prod-slave-data-0.com:3306/user_action?characterEncoding=utf8"
],
"table":[
"`users`"
]
}
],
"password":"****************",
"splitPk":"id",
"username":"username"
}
},
"writer":{
"name":"hdfswriter",
"parameter":{
"column":[
{
"name":"id",
"type":"bigint"
},
{
"name":"login",
"type":"bigint"
},
{
"name":"mobile",
"type":"string"
},
{
"name":"created_at",
"type":"timestamp"
},
{
"name":"updated_at",
"type":"timestamp"
}
],
"defaultFS":"file:///",
"fieldDelimiter":"\u0001",
"fileName":"users",
"fileType":"orc",
"path":"/data/mysql-dump/user_action.db/2020-03-02.00-03-01.62/users.data",
"writeMode":"nonConflict"
}
}
}
],
"setting":{
"speed":{
"channel":100
}
}
}
https://github.com/alibaba/DataX/issues/527 看看我的issue, 改个for循环就好了,当然多线程也可以,搞个线程池
@VincentSleepless 但是他这个是 HDFS writer,writer 你也试过么?
#527 看看我的issue, 改个for循环就好了,当然多线程也可以,搞个线程池
我遇到的问题不是写ORC文件或者读ORC文件导致的,我在datax的中加了日志之后,追踪到是在读mysql的时候丢失的。

下面的日志是我最近丢失的日志和重跑之后正常的日志: 丢失:
2020-03-13 16:41:09.045 [0-1-1-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select `id`,`login`,`mobile`,`email`,`encrypted_password`,`guest`,`resource_id`,`created_at`,`updated_at`,`phone` from `users` where (8027009 <= id AND id < 16054017)
] jdbcUrl:[jdbc:mysql://rds-host:6693/production?characterEncoding=utf8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
records: 1.
正常:
2020-03-13 17:02:14.521 [0-1-1-reader] INFO CommonRdbmsReader$Task - Finished read record by Sql: [select `id`,`login`,`mobile`,`email`,`encrypted_password`,`guest`,`resource_id`,`created_at`,`updated_at`,`phone` from `users` where (8027011 <= id AND id < 16054021)
] jdbcUrl:[jdbc:mysql://rds-host:6693/production?characterEncoding=utf8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true]
records: 8009614.
第一次只读到1条数据,第二次读到了8009614条数据
遇到这个问题+1,一模一样。请问楼主有查到问题或者解决了吗?
我们发现问题的实例是自建5.6实例。切换到阿里云5.6实例后无此情况发生。
@zhangkuantian 问题解决了吗?我也碰到了~
问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据
问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据
大佬,问题有解决吗?我也遇到了一样的问题
问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据
@sweatke 大佬有解决吗?
遇到这个问题+1,一模一样。请问楼主有查到问题或者解决了吗?
我们发现问题的实例是自建5.6实例。切换到阿里云5.6实例后无此情况发生。
@OMG-By 除了切换到阿里云5.6实例,有其他方法吗?请问有找到真正的原因吗?
这个问题是 mysql 导致的,不是 DataX 导致的,有问题的 RDS 通过 mysql 命令去执行count 时也偶尔会出现丢失情况。我们是在aws 的 RDS 上出现的,切换到 aliyun 的 RDS 之后就解决了,时间久远没看 aws 的 rds 是哪个版本的,但是可以肯定是比较老的版本
@zhangkuantian aws rds 升级到哪个版本,用datax从read rds write s3 就不会出现数据丢失了?