기존에
SHOW VARIABLES LIKE '%general%';
general-log 가 OFF로 되어있으면 서버로그가 쌓이지 않고 있는 것이다.
따라서 log를 활성화 시켜주어야 한다
> set global general_log = ON;
서버를 shutdown후 다시 기동시켜도 log를 기록하게끔 하려면 my.cnf를 수정한다.
# vi /etc/my.cnf
...
[mysqld]
general_log=ON
log-error=/var/lib/mysql/error.log
그리고 해당 파일의 권한을 변경한다
# touch /var/lib/mysql/error.log
# chown mysql:mysql /var/lib/mysql/error.log
# systemctl restart mariadb
기존에 SHOW ENGINE INNODB STATUS 를 통해서
Deadlock 세션에서 데드락 내용을 확인할 수 있지만, 데드락이 여러번 발생하면 기존의 내용이 지워지는 문제가 있다.
innodb_print_all_deadlocks 시스템변수를 사용하면 데드락이 발생하면 상세한 내용을 MySQL 서버 에러 로그 파일에 기록할지를 선택할 수 있다.
set GLOBAL innodb_print_all_deadlocks = ON