mysql to mysql最新数据未同步
lenovore opened this issue · 7 comments
Description
使用docker部署,拉取的镜像 actiontech/dtle:4.23.04.1。
阿里云RDS5.6同步到RDS5.7,全量同步完,增量同步追上master后,部分源表最新的一些数据(几条-几十条不等)一直都没有同步到目的表。在这期间,源表无写入操作,但就是不同步了。
比如:s_track.track_work_0全量+增量完后,最新的11条记录未同步到t_track.track_work_0表,然后过了几分钟s_track.track_work_0表写入了一些数据,那11条未同步的数据又同步过去了。但是后续s_track.track_work_0表有新数据写入,又出现部分最新数据未同步。
之前拉取的actiontech/dtle:4.23.04.0镜像没出现过这样的问题。
Job配置
{
"Job": {
"ID": "dtle-track",
"Datacenters": [
"dc1"
],
"TaskGroups": [
{
"Name": "src",
"Tasks": [
{
"Name": "src",
"Driver": "dtle",
"Config": {
"Gtid": "",
"ChunkSize": 5000,
"ReplicateDoDb": [
{
"TableSchema": "s_track",
"TableSchemaRename": "t_track",
"Tables": [
{
"TableName": "track_work_0"
},
{
"TableName": "track_work_1"
},
{
"TableName": "track_work_2"
},
{
"TableName": "track_work_3"
},
{
"TableName": "track_work_4"
},
{
"TableName": "track_work_5"
},
{
"TableName": "track_work_6"
},
{
"TableName": "track_work_7"
},
{
"TableName": "track_record"
}
]
}
],
"SrcConnectionConfig": {
...
},
"DestConnectionConfig": {
...
}
}
}
]
},
{
"Name": "dest",
"Tasks": [
{
"Name": "dest",
"Driver": "dtle",
"Config": {
"DestType": "mysql"
}
}
]
}
]
}
}
需要设置log_level=debug,复现,并提供日志。
这个日志是我换了镜像版本(actiontech/dtle:4.22.11.0)后的debug日志,结果也是一样,最新的数据就是不到目的表。
我之前是整库同步的,是没问题的,这次就是有重命名库并只同步部分表。
使用4.23.04.2版本,查看日志一直有警告信息
[WARN] reader: mysql.reader: QueryEvent is not recognized. will still execute: job=dtle-track query=COMMIT gno=89248399
增量阶段最新数据还是没同步
猜测原因是rds5.6实例从库不支持复制
暂不考虑MySQL 5.6方面的修复.
但query event COMMIT是如何发生的, 以及代码上的支持需要考虑.
[WARN] reader: mysql.reader: QueryEvent is not recognized. will still execute: job=dtle-track query=COMMIT gno=89248399
理论上MyISAM表会出现query event COMMIT, 但aliRDS应该不支持MyISAM.
- 开通ali "RDS 5.6常规实例 (高可用版)".
- 未开通读写分离.
- 只给了一个连接地址&端口.
- 连上后
show slave status
显示Running: Yes
. 同时可执行写语句.- 所以不清楚连接的是RDS主实例还是从实例. 抑或是其并未使用MySQL原生复制.
- 使用dtle复制到本地MySQL 8.0, 一切正常