drainer同步数据报错

drainer.log (369.3 KB) 为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】v4.0.7

【问题描述】drainer同步数据报错,报主键冲突,既然tidb都能正常插入的,通过drainer同步到mysql就报主键冲突,看现象貌似一条插入语句被同步到下游几次,而且报错会导致drainer服务飞掉

[2021/02/05 08:26:04.317 +08:00] [ERROR] [executor.go:111] [“Exec fail, will rollback”] [query=“INSERT INTO source_qmfk.O32_TBONDPROPERTY(C_BASIC_RATE_TYPE,C_CENTER_MATCH,C_DRAWBENCHMRK,C_FITCH_APPRAISE,C_HEDGE_APPRAISE,C_INSIDE_APPRAISE,C_INTEREST_CALC_TYPE,C_INTEREST_TYPE,C_INTEREST_TYPE_EX,C_INVESTOR_OPERATION_TYPE,C_ISENDDEFAULT,C_ISFTABOND,C_ISSPECIAL,C_LEVEL_EXPECTATION,C_MARKET_NO,C_MOODY_APPRAISE,C_NET_PRICE,C_ODM,C_OFFERRINGCANCELFLAG,C_OTHER_APPRAISE_FOUR,C_OTHER_APPRAISE_ONE,C_OTHER_APPRAISE_THREE,C_OTHER_APPRAISE_TWO,C_OUTER_APPRAISE,C_PASS_SPPI_TEST,C_PAYMENTOFINTEREST_TYPE,C_PAY_CAPITAL_TYPE,C_PAY_INTEREST_TYPE,C_PUBLISHER_OPERATION_TYPE,C_RATEDAYS_CALC_TYPE,C_SP_APPRAISE,C_SUBJECT_TYPE,C_TRUSTEE,C_YIELD_RATIO_TYPE,EN_ACCRUED_INTEREST,EN_BASIC_RATE,EN_BOND_INTEREST,EN_BP_CEILING,EN_BP_FLOOR,EN_CHANGE_PRICE,EN_CONVEXITY,EN_CURR_FACE_PRICE,EN_DELTA,EN_EXIST_LIMITE,EN_FACE_PRICE,EN_FAIR_YIELD_RATIO,EN_HQZ_XQGZ_CONVEXITY,EN_HQZ_XQGZ_DURATION,EN_HQZ_XQGZ_PRICE,EN_HQZ_XQGZ_YIELD_RATIO,EN_HZQ_XQGZ_VP_VALUE,EN_INVESTOR_OPERATION_PRICE,EN_LEAST_RATE,EN_MATURITY,EN_MATURITY_ADJUST,EN_NEXT_BOND_INTEREST,EN_PAY_INTEVAL,EN_POINT_VALUE,EN_PUBLISHER_OPERATION_PRICE,EN_PUBLISH_PRICE,EN_REAL_INTEREST,EN_SPPI_DOWNLIMIT_PRICE,EN_TODAY_INTEREST,EN_VALUATE_CONVEXITY,EN_VALUATE_DURATION,EN_VALUATE_POINT_VALUE,EN_VALUATE_RATE_DURATION,EN_VALUATE_SPREAD_DURATION,EN_YEAR_RATE,EN_YESTERDAY_CHANGE_PRICE,EN_ZZD_NONRECOMMEND_RATIO,EN_ZZ_FAIR_YIELD_RATIO,L_BEGINCAL_DATE,L_BOND_COUNT,L_CHANGE_BEGIN_DATE,L_CHANGE_END_DATE,L_DATE,L_END_DATE,L_FINAL_DEBTOR,L_GUARANTOR_ID,L_INVESTOR_OPERATION_DATE,L_ISSUEBALANCE,L_LEFT_TERM,L_MARKET_DATE,L_MODIFY_DATE,L_NEXTPAYMENT_DATE,L_NEXT_MODIFY_DATE,L_NEXT_RATECHANGE_DATE,L_OUTER_APPRAISE_DATE,L_PUBLISHER_OPERATION_DATE,L_PUBLISH_DATE,L_RATE_DAYS,L_STARTCAL_DATE,L_SUPERVENTION_MARKET_DATE,L_TIMES,L_TRADE_DEADLINE,L_VIRTUAL_KEY,L_YEAR,L_ZQHS_BEGINDATE,L_ZQHS_ENDDATE,OBJECT_ID,OPTDATE,VC_APPRAISE_ORGAN,VC_BONDTYPE_ID,VC_BONDTYPE_NAME,VC_DCQ,VC_INTER_CODE,VC_PARTY_NO,VC_SPECIALPLAN_CODE,VC_SPPI_FAIL_REASON,VC_TIMESTAMP,VC_TIMESTAMP2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)”] [args="[“6”,null,null,null,null,null,null,“1”,“1”,“0”,“0”,“0”,“0”,null,“5”,null,“1”,null,“0”,null,null,null,null,“L”,“0”,null,“1”,“1”,“0”,null,null,“1”,“2”,“1”,null,“0.00000000”,“2.071232876712”,null,null,“0.0000”,null,“100.00000000”,null,“1.00000000”,“100.00000000”,“0.00000000”,null,null,null,null,null,null,“0.00000000”,“0.00000000”,“0.00000000”,“2.083561643836”,“1.00”,null,null,“100.00000000”,“2.083561643836”,null,“2.083561643836”,null,“5.69150000”,null,null,null,“0.04500000”,“0.0000”,null,“0.00000000”,“20200820”,null,null,null,“20210205”,“20210820”,null,null,“0”,null,“197”,“20200821”,“20200821”,null,“99991231”,“0”,“20200701”,“0”,“20200818”,“365”,“20200820”,“20200821”,null,“20210819”,“94321”,null,null,null,“20210205-1700A3YH”,“2021-02-05 08:34:31:345”,“4”,null,null,null,“1700A3YH”,null,null,null,“20210204182419415872”,“20210204084022931158”]"] [error=“Error 1062: Duplicate entry ‘20210205-1700A3YH’ for key ‘o32_tbondproperty.PRIMARY’”]
[2021/02/05 08:26:05.318 +08:00] [INFO] [load.go:876] [“txnManager has been closed”]
[2021/02/05 08:26:05.318 +08:00] [INFO] [load.go:566] ["{16 20 0xc0066bd2b0 0xc004496040 false 1 true true false}"]
[2021/02/05 08:26:05.318 +08:00] [INFO] [load.go:820] [“run()… in txnManager quit”]
[2021/02/05 08:26:05.318 +08:00] [INFO] [load.go:567] [“Run()… in Loader quit”]
[2021/02/05 08:26:05.318 +08:00] [INFO] [mysql.go:233] [“Successes chan quit”]
[2021/02/05 08:26:05.318 +08:00] [INFO] [syncer.go:257] [“write save point”] [ts=422703180023333010]

[2021/02/05 08:26:05.321 +08:00] [INFO] [server.go:455] [“commit status done”]
[2021/02/05 08:26:05.321 +08:00] [INFO] [collector.go:135] [“publishBinlogs quit”]
[2021/02/05 08:26:05.321 +08:00] [INFO] [pump.go:77] [“pump is closing”] [id=10.188.3.161:8250]
[2021/02/05 08:26:05.321 +08:00] [INFO] [pump.go:77] [“pump is closing”] [id=10.188.3.160:8250]
[2021/02/05 08:26:05.321 +08:00] [INFO] [util.go:72] [Exit] [name=heartbeat]
[2021/02/05 08:26:05.321 +08:00] [INFO] [util.go:72] [Exit] [name=collect]
[2021/02/05 08:26:05.321 +08:00] [INFO] [main.go:73] [“drainer exit”]
[2021/02/05 08:26:05.321 +08:00] [INFO] [server.go:470] [“drainer exit”]

drainer.log (369.3 KB)

发现原因了 上游TIDB的主键一个是‘20210205-1700A3YH’ 和‘20210205-1700a3YH’ 而通过drainer同步的时候都变成了大写 所以导致主键冲突,这个有什么办法可以处理能同步大小写么

找到原因了,下游字符集utf8mb4_0900_ai_ci 大小写不敏感 所以会报主键冲突

:+1: