Понадобилось однажды обнаруживать Deadlocks и логировать их, опишу как это сделать:
Посмотрим включено ли логирование deadlocks, по умолчанию OFF:
SHOW VARIABLES LIKE 'innodb_print_all_deadlocks';
Включим логирование deadlocks в файл ошибок:
SET GLOBAL innodb_print_all_deadlocks = ON;
Посмотрим где находятся логи ошибок, обычно это /var/log/mysql/error.log:
SHOW VARIABLES LIKE 'log_error';
Deadlocks также можно посмотреть выполнив запрос:
SHOW ENGINE INNODB STATUS\G;
Так как на сервере был Zabbix-agent, то я использовал его, чтобы отслеживать когда в логах появится слово ‘deadlock’ (выполнение раз в три часа, в зависимости от размера файла логов, часто выполнять не рекомендую):
UserParameter=deadlocks_error,grep -Fr 'deadlock' /var/log/mysql/error.log | wc -l
Смотрите также мою статью:
Установка и настройка Zabbix агента в Ubuntu