【 TiDB 使用环境`】生产环境
【 TiDB 版本】v4.0.10
【遇到的问题】pump在commit log阶段时间比较慢,长达分钟级别
【复现路径】超大规模集群,高并发写入
【问题现象及影响】
pump在commit binlog阶段时间比较长,pump会有以下报日志信息:
[2022/05/23 23:33:53.169 +08:00] [INFO] [storage.go:486] [“Find no MVCC record for a young txn”] [“start ts”=433407916892227103] [“elapse sec”=37]
[2022/05/23 23:33:53.171 +08:00] [ERROR] [storage.go:444] [“GetMvccByEncodedKey failed”] [“start ts”=433407916892227103] [RegionError="message:“EpochNotMatch current epoch of region 27369342 is conf_ver: 2614 version: 218846, but you s
ent conf_ver: 2614 version: 218844” epoch_not_match:<current_regions:<id:27369342 start_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\367\377\242\000\000\000\
003\200\000\000\377\001\234\264}\036\000\000\000\374” end_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\003\004\000\000\000\000\377\000\000\000\000\004\000\000\000
\377\000\000\000\000\001\003\200\000\377\000\000\006\215\026d\000\000\375” region_epoch:<conf_ver:2614 version:218846 > peers:<id:39097663 store_id:23267107 > peers:<id:39097862 store_id:23267108 > peers:<id:39121863
store_id:57 > > current_regions:<id:39175069 start_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\366\377\351\000\000\000\003\200\000\000\377\001\240;\00
2k\000\000\000\374” end_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\367\377\242\000\000\000\003\200\000\000\377\001\234\264}\036\000\000\000
\374” region_epoch:<conf_ver:2614 version:218846 > peers:<id:39175070 store_id:23267107 > peers:<id:39175071 store_id:23267108 > peers:<id:39175072 store_id:57 > > > "]
[2022/05/23 23:33:53.171 +08:00] [INFO] [storage.go:486] [“Find no MVCC record for a young txn”] [“start ts”=433407916892227103] [“elapse sec”=37]
[2022/05/23 23:33:53.177 +08:00] [ERROR] [storage.go:444] [“GetMvccByEncodedKey failed”] [“start ts”=433407916892227103] [RegionError="message:“EpochNotMatch current epoch of region 27369342 is conf_ver: 2614 version: 218846, but you s
ent conf_ver: 2614 version: 218844” epoch_not_match:<current_regions:<id:27369342 start_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\367\377\242\000\000\000\
003\200\000\000\377\001\234\264}\036\000\000\000\374” end_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\003\004\000\000\000\000\377\000\000\000\000\004\000\000\000
\377\000\000\000\000\001\003\200\000\377\000\000\006\215\026d\000\000\375” region_epoch:<conf_ver:2614 version:218846 > peers:<id:39097663 store_id:23267107 > peers:<id:39097862 store_id:23267108 > peers:<id:39121863
store_id:57 > > current_regions:<id:39175069 start_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\366\377\351\000\000\000\003\200\000\000\377\001\240;\00
2k\000\000\000\374” end_key:“t\200\000\000\000\000\000\000\377c_i\200\000\000\000\000\377\000\000\002\004\031\254\356\367\377\242\000\000\000\003\200\000\000\377\001\234\264}\036\000\000\000
\374” region_epoch:<conf_ver:2614 version:218846 > peers:<id:39175070 store_id:23267107 > peers:<id:39175071 store_id:23267108 > peers:<id:39175072 store_id:57 > > > "]
[2022/05/23 23:33:53.177 +08:00] [INFO] [storage.go:486] [“Find no MVCC record for a young txn”] [“start ts”=433407916892227103] [“elapse sec”=37]
其实tidb binlog开启后的pump是会影响到tidb本身的事务的,你可以简单的理解为pump从tidb收集binlog日志,可以看作是事务的一部分,这样在你集群高并发集群压力较大的情况下,是不推荐加这个binglog的,可以考虑cdc。
如果从你的日志来看,我觉得可以取排查下数据库多版本控制中GC版本的保留时间,是否是因为事务时间太长导致获取过去版本的
数据失败。