我正在运行基于MariaDB 10.1.32的3个节点的MariaDB Galera集群。目前我已经获得了相当多的"死锁发现"在我的系统日志中这样的消息:
2018-05-04 9:21:33 140130671872768 [ERROR] mysqld: Deadlock found when trying to get lock; try restarting transaction
为了找到导致死锁的原因我运行"显示引擎innodb状态"但是" LATEST DETECTED DEADLOCK"仅包含过时的信息(根据时间戳):
------------------------
LATEST DETECTED DEADLOCK
------------------------
2018-04-28 21:21:08 7f71a9450b00
*** (1) TRANSACTION:
[...]
为什么日志中会报告死锁,但它们不会显示在"显示引擎innodb状态"
的输出中?答案 0 :(得分:1)
简短的回答是Galera可以抛出不是InnoDB死锁的死锁错误。
你在SHOW ENGINE INNODB STATUS;
中唯一看到的是InnoDB死锁,其中同一服务器上的多个事务试图获得不兼容的锁。这些永远不会发生在事务提交中 - 它们总是比这更早,是InnoDB内置的悲观锁定的结果。它们只出现在发生它们的服务器上。
http://galeracluster.com/documentation-webpages/dealingwithmultimasterconflicts.html