在数据库并发测试过程中,发现E阶段中的反查DatabaseExtractWorker过程中,发现反查的数据不是最新的数据,疑问:源库修改数据事物提交,然后产生binlog,然后otter反查数据理论上应该不是最新的嘛?
我这边加了很多日志,现象如下: Select 日志:
---START ---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks
---START ---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks
DatabaseExtract数据反查阶段日志:
26-2019-05-22-30.log:2019-05-22 09:38:22.864 [pipelineId = 26 , pipelineName = sync , DataBaseExtractor] INFO c.a.o.n.e.e.e.DatabaseExtractor$DatabaseExtractWorker - 线程名:pipelineId = 26 , pipelineName = sync , DataBaseExtractor DatabaseExtractor evevtData:EventData{tableId=28, tableName='push_message', schemaName='push_message_source', eventType=UPDATE, executeTime=1558489100000, oldKeys=[], keys=[EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false]], columns=[EventColumn[index=1,columnType=-5,columnName=traceId,columnValue=1190741558489098929,isNull=false,isKey=false,isUpdate=true,isReverse=false], EventColumn[index=4,columnType=12,columnName=status,columnValue=test,isNull=false,isKey=false,isUpdate=true,isReverse=false], EventColumn[index=5,columnType=12,columnName=userId,columnValue=dxy_test,isNull=false,isKey=false,isUpdate=true,isReverse=false], EventColumn[index=11,columnType=93,columnName=createTime,columnValue=2019-05-22 09:38:19,isNull=false,isKey=false,isUpdate=true,isReverse=false], EventColumn[index=12,columnType=93,columnName=modifyTime,columnValue=2019-05-22 09:38:19,isNull=false,isKey=false,isUpdate=true,isReverse=false]], size=154, pairId=-1, sql='null', ddlSchemaName='null', syncMode=null, syncConsistency=MEDIA, remedy=false, hint='null', withoutSchema=false, shardingScheme='null', shardingTabele='null', shardingDSDTOList=null}
Load阶段日志:
---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks
otter3
.message_11
(traceId
, status
, userId
, createTime
, modifyTime
, id
) values (? , ? , ? , ? , ? , ?) on duplicate key update traceId
=values(traceId
) , status
=values(status
) , userId
=values(userId
) , createTime
=values(createTime
) , modifyTime
=values(modifyTime
) , id
=values(id
)---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks
otter3
.message_11
set traceId
= ? , status
= ? , userId
= ? , createTime
= ? , modifyTime
= ? where ( id
= ? )原提问者GitHub用户 wuqiu-ai
理论上无所谓,后期的的binlog会更新数据 那如果后期一直没有修改该条数据,是不是就不会有新的binlog,导致最终数据还是不一致问题? 不会,既然查到了"旧"数据,说明一定有binlog更新过新数据,那等后面那条binlog过来就行了
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。