开发者社区> 问答> 正文

otter 反查结果为旧数据,导致更新的数据不一致

在数据库并发测试过程中,发现E阶段中的反查DatabaseExtractWorker过程中,发现反查的数据不是最新的数据,疑问:源库修改数据事物提交,然后产生binlog,然后otter反查数据理论上应该不是最新的嘛?

我这边加了很多日志,现象如下: Select 日志:


  • TableId: 28 , Schema: push_message_source , Table: push_message
  • Type: I , ExecuteTime: 1558489099000 , Remedy: false

---START ---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks

---Columns EventColumn[index=1,columnType=-5,columnName=traceId,columnValue=1190741558489098929,isNull=false,isKey=false,isUpdate=true,isReverse=false] EventColumn[index=2,columnType=12,columnName=devicePlatform,columnValue=,isNull=false,isKey=false,isUpdate=true,isReverse=false] EventColumn[index=3,columnType=12,columnName=deviceToken,columnValue=,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=12,columnType=93,columnName=modifyTime,columnValue=2019-05-22 09:38:19,isNull=false,isKey=false,isUpdate=true,isReverse=false] ---END

  • TableId: 28 , Schema: push_message_source , Table: push_message
  • Type: U , ExecuteTime: 1558489100000 , Remedy: false

---START ---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks

---Columns EventColumn[index=4,columnType=12,columnName=status,columnValue=update,isNull=false,isKey=false,isUpdate=true,isReverse=false] EventColumn[index=12,columnType=93,columnName=modifyTime,columnValue=2019-05-22 09:38:20,isNull=false,isKey=false,isUpdate=true,isReverse=false] ---END

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阶段日志:


  • PairId: 45 , TableId: 29 , EventType : I , Time : 1558489099000
  • Consistency : , Mode :

---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks

---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] ---Sql insert into 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)


  • PairId: 45 , TableId: 29 , EventType : U , Time : 1558489100000
  • Consistency : M , Mode :

---Pks EventColumn[index=0,columnType=-5,columnName=id,columnValue=1915109,isNull=false,isKey=true,isUpdate=true,isReverse=false] ---oldPks

---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] ---Sql update otter3.message_11 set traceId = ? , status = ? , userId = ? , createTime = ? , modifyTime = ? where ( id = ? )

原提问者GitHub用户 wuqiu-ai

展开
收起
古拉古拉 2023-06-14 21:08:12 32 0
1 条回答
写回答
取消 提交回答
  • 理论上无所谓,后期的的binlog会更新数据 那如果后期一直没有修改该条数据,是不是就不会有新的binlog,导致最终数据还是不一致问题? 不会,既然查到了"旧"数据,说明一定有binlog更新过新数据,那等后面那条binlog过来就行了

    原回答者GitHub用户agapple

    2023-06-14 22:08:56
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载