免责声明:下面的脚本只适用于Percona服务器MySQL 5.7和依赖使性能模式(PS)仪器可雷竞技下载官网以在高并发系统增加开销,而不是用于连续生产使用的POC(的概念)。

介绍

死锁的故障排除MySQLPer雷竞技下载官网cona支持,我们经常收到票死锁和即使死锁的概念很简单,故障排除可能不是在所有情况下。

在解释如何处理MySQL死锁,死锁发生在两个或两个以上相互持有和交易请求锁,创建一个循环依赖关系。MySQL将检测死锁和杀死一个事务(让它回滚),和检波器的僵局将打印(显示引擎innodb状态)。使用这种方法的局限性是:1)只有一个死锁(最新)将打印可能错过许多死锁发生的如果你不积极检查,(除非启用innodb_print_all_deadlocks),2)只有最后执行DML打印,可能没有足够的光来识别违规的交易复杂的死锁。

使用pt-deadlock-logger从一号将克服困难,它将记录所有发生死锁,但是2号呢?

Perc雷竞技下载官网ona服务器MySQL 5.7,我开发了以下脚本(你可以找到我们支持片段回购),打印SQL历史两个事务参与死锁,在故障排除一些复杂的死锁情况下,可以帮助。注意,大多数时候,一个僵局将包括两个事务,但其他时候可以有更多的交易,在这种情况下,脚本将部分有用。

安装

执行脚本将显示以下提示:

然后,操作系统提示不会返回,当脚本将继续运营,扫描死锁。(你可以用“&”执行在后台运行)。

注意:deadlock_logger脚本将开始登录脚本执行后只死锁发生。

产生死锁

你需要打开两个会话和执行下列交叉:

检查“deadlock_logger。sh”上面输出的历史我们可以看到交易线程(你需要阅读从底部到顶部):

可以看出,整个历史事务正在从性能模式表,这有助于识别复杂交易中的死锁。

脚本的局限性

结论

解决死锁可以是困难的,但在检查执行的整个历史语句参与死锁的线程,它可以更容易理解为什么发生了死锁。测试脚本和性能退化之前高活动和/或生产系统的关键!


解简单的“与Percona服务器启动并运行MySQL”概述了建立一个MySQL®数据库本雷竞技下载官网地使用Percona MySQL服务器。它包括故障转移和基本业务连续性组件。

下载