一个罕见的MySQL redo死锁问题排查及解决过程
发布时间:2021-01-08 06:08:18 所属栏目:安全 来源:网络整理
导读:副标题#e# 《一个罕见的MySQL redo死锁问题排查及解决过程》要点: 本文介绍了一个罕见的MySQL redo死锁问题排查及解决过程,希望对您有用。如果有疑问,可以联系我们。 作者:张青林,腾讯云布道师、MySQL架构师,隶属腾讯TEG-基础架构部-CDB内核开发团队,专
在问题一的排查过程中我们确定了 log_sys->mutex 的所属线程,这个线程在获得 log_sys->log_flush_order_mutex 的过程中 hang 住了,因此线程堆栈可以分以为下几类:
因此,问题的关键是找到哪个线程获取了 log_sys->log_flush_order_mutex. 为了找到相关的线程做了以下操作:
由以上的分析可以得出 问题二 的答案:
3、问题三:绝处逢生由问题二的分析过程可知 log_sys->log_flush_order_mutex 没有被任何线程获得,可是为什么 Thread 446 没有被唤醒呢,信号丢失还是程序问题?如果是信号丢失,为什么可以稳定复现?官方的bug list 列表中是没有类似的 Bug的,搜了一下社区,发现可用信息很少,这个时候分析好像陷入了死胡同,心里压力开始无形中变大……好像没有办法,但是任何问题都是有原因的,找到了原因,也就是有解的了……再一次将注意力移到了 Thread 446 的堆栈中,然后查看了函数: (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |