[问题澄清]
- 现象:监控有告警 TiKV_GC_can_not_work
[问题分析]
- 查看 tikv_gc_safe_point 一直没有更新
- 查看 tidb 日志 存在 gc safepoint blocked by a running session
- 查看 information_schema.processlist 和 mysql.tidb 表看到 safepoint 表被 session block
[解决方案] - 在日志中找到对应的globalMinStartTS:
[2020/11/02 18:54:27.461 +08:00] [INFO] [gc_worker.go:359] [“[gc worker] gc safepoint blocked by a running session”] [uuid=5d5e4d5cc240021] [globalMinStartTS=420540966397804571] [safePoint=2020/11/01 21:14:34.601 +08:00] - 在每个 tidb-server 中查找对应的 session 信息:
SELECT *FROM information_schema.processlist WHERE txnstart LIKE ‘%420564495932063751%’; - 如果需要尽快恢复,和业务确认后,可以 kill 进程,即可恢复
[原因说明]
- TiDB 在显示事务中,如果有事务开始后,一直不 commit 或者 rollback,会导致 gc 被 block
[参考案例]