pump抽取提示MVCC是什么问题

pump突然出现这个,然后drianer传输数据变成0了。

1 个赞

MVCC 是版本记录咯

这么老的版本,该升级了

现在就是迁移呀使用binlog。

已经提交的数据。相应的unlog就被删除了。

学习了 .

GC收集清理了历史数据了吗

tidb早期的版本问题会比较多,还在是升级比较方便,建议升级

可能是 RAID 卡的缓存(Cache)或电池(BBU)出现问题,导致无法安全地进行数据缓存

会不会跟oracle一样的报错,就算快照过旧,GC那个safe点设置的长一点试试看看

历史版本被gc回收了吗

可能是多个事务同时操作同一数据,导致 MVCC 版本链被修改,后续事务无法找到预期记录, 也有可能是事务已经回滚或者超时

  1. 事务层面:检查 start ts=460510921013854235 和 460510924906692657 对应的业务事务,确认是否存在短事务频繁提交或过早 GC
  2. 存储层面:调整 MVCC GC 策略,避免年轻事务版本被过早回收;监控 LSM-Tree 层级合并进度
  3. 监控层面:增加 MVCC record not found 告警阈值
  • 大量 Find no MVCC record 日志表明:
  1. 存在短生命周期事务,其版本记录还未持久化或已被 GC 回收
  2. 可能是读-写冲突或事务提交过快导致版本不可见
  3. 若持续大量出现,可能影响查询性能或导致事务重试

如果 GC life time 设置过短,或事务执行时间过长,会导致年轻事务的版本还未被读取就被 GC 回收,从而出现 “no MVCC record”

回滚的话应该不用读取历史版本了吧

如果执行时间很长,没提交的事务的历史版本应该也不会被回收吧?

回滚本身不读版本,但回滚会打乱 DM 的 binlog 解析节奏

所以这个原因有可能导致他提示这个错误的吗?

一致性读的配置,应该是gc回收了快照数据了吧