doris-flink-connector 进行整库同步一段时间后发现数据不一致,有什么办法知道是什么原因。

Viewed 126

整库同步后,一开始数据是一样的。过了一段时间后,doris比较多。而原始的mysql比较少。。。应该是部分删除的操作没有进行同步过来。不知道要怎么排查这个问题,不知道条件会出现这样的情况。

具体的效果是
c064f6fe455cbe5e9c9e334dde1dba0.png

Mysql版本
image.png
Doris 版本
Version : doris-2.0.3-rc06

启动代码:

bin/flink run-application -t yarn-application  \
-Djobmanager.memory.process.size=1024m \
-Dtaskmanager.memory.process.size=2048m \
-Dtaskmanager.memory.managed.size=64m \
-Dtaskmanager.memory.network.max=64m \
-Dstate.backend.rocksdb.changelog.storage=rocksdb \
-Dstate.checkpoints.dir=hdfs://testhost:8020/flink/checkpoints/my_db_sync_table \
-Dstate.savepoints.dir=hdfs://testhost:8020/flink/flink-savepoints/my_db_sync_table \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-Dyarn.application.name="my_db_sync_app" \
-c org.apache.doris.flink.tools.cdc.CdcTools \
job_jar/flink-doris-connector-1.17-1.5.1.jar \
mysql-sync-database \
--database my_db \
--mysql-conf connectionTimeZone=Asia/Shanghai \
--mysql-conf scan.newly-added-table.enabled=true \
--mysql-conf server-id=5360 \
--mysql-conf hostname=192.168.1.102 \
--mysql-conf port=3306 \
--mysql-conf username=root \
--mysql-conf password='mypassword$r' \
--mysql-conf database-name=my_db \
--sink-conf fenodes=192.168.1.160:8030 \
--sink-conf username=root \
--sink-conf password='mypassword' \
--sink-conf jdbc-url=jdbc:mysql://192.168.1.160:9030 \
--sink-conf sink.label-prefix=my_db_sync1 \
--table-conf replication_num=1 \
--including-tables "test1|test2"

经过与doris沟通,给我的建议是增加binlog的保存天数。后面我从3天改成了5天。

经过一段时间的观察,发现mysql 数据库丢失了删除的日志。。。也就是说mysql没有把删除的信息写入到binlog日志中。但是不知道为什么会出现这种情况。

3 Answers

经过研究发现,seata XA 死锁时会出现mysql binlog日志丢失问题

麻烦补齐下doris和flink-doiris-connector 具体版本号。

  1. 确认下doris端的表是不是dup表。