DataX icon indicating copy to clipboard operation
DataX copied to clipboard

datax 3.0 同步mysql数据到hdfs后,出现数据丢失

Open kuantian-zhang opened this issue 5 years ago • 9 comments

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
                }
        }
}

kuantian-zhang avatar Mar 03 '20 02:03 kuantian-zhang

https://github.com/alibaba/DataX/issues/527 看看我的issue, 改个for循环就好了,当然多线程也可以,搞个线程池

VincentSleepless avatar Mar 03 '20 09:03 VincentSleepless

@VincentSleepless 但是他这个是 HDFS writer,writer 你也试过么?

zhongjiajie avatar Mar 03 '20 16:03 zhongjiajie

#527 看看我的issue, 改个for循环就好了,当然多线程也可以,搞个线程池

我遇到的问题不是写ORC文件或者读ORC文件导致的,我在datax的中加了日志之后,追踪到是在读mysql的时候丢失的。 image

下面的日志是我最近丢失的日志和重跑之后正常的日志: 丢失:

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条数据

kuantian-zhang avatar Mar 14 '20 13:03 kuantian-zhang

遇到这个问题+1,一模一样。请问楼主有查到问题或者解决了吗?

我们发现问题的实例是自建5.6实例。切换到阿里云5.6实例后无此情况发生。

OMG-By avatar Jul 03 '20 07:07 OMG-By

@zhangkuantian 问题解决了吗?我也碰到了~

songyang423915 avatar Aug 03 '21 01:08 songyang423915

问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据

sweatke avatar Feb 17 '22 15:02 sweatke

问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据

大佬,问题有解决吗?我也遇到了一样的问题

zhanghf123 avatar Jan 17 '23 07:01 zhanghf123

问题有得到解决吗,我这里也是MySQL 到 HDFS 时丢失了数据

@sweatke 大佬有解决吗?

zhanghf123 avatar Jan 17 '23 08:01 zhanghf123

遇到这个问题+1,一模一样。请问楼主有查到问题或者解决了吗?

我们发现问题的实例是自建5.6实例。切换到阿里云5.6实例后无此情况发生。

@OMG-By 除了切换到阿里云5.6实例,有其他方法吗?请问有找到真正的原因吗?

zhanghf123 avatar Jan 17 '23 08:01 zhanghf123

这个问题是 mysql 导致的,不是 DataX 导致的,有问题的 RDS 通过 mysql 命令去执行count 时也偶尔会出现丢失情况。我们是在aws 的 RDS 上出现的,切换到 aliyun 的 RDS 之后就解决了,时间久远没看 aws 的 rds 是哪个版本的,但是可以肯定是比较老的版本

kuantian-zhang avatar Mar 23 '23 02:03 kuantian-zhang

@zhangkuantian aws rds 升级到哪个版本,用datax从read rds write s3 就不会出现数据丢失了?

l299 avatar Jul 11 '24 09:07 l299