MySQL 기동시 "Job for mysqld.service failed because the control process exited with error code." 에러로 기동 실패
시스템 리부팅 후 MySQL 시작시 이슈 사항 추적
1. 환경
Oracle Linux 8 버전으로 MySQL 8.0.21 설치 후 시스템 리부팅
2. 에러
정상 기동 정상 종료되었던 mysqld 서비스가 리부팅후 기동이 되지 않는 상황 발생
에러 메세지는 아래와 같음
$ systemctl start mysqld Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
3. 대응
3.1 MySQL의 에러 로그 확인
MySQL의 경우 디폴트로 에러 로그는 /var/log 디렉토리 밑에 mysqld.log 파일에 기록된다.
해당 로그 내용을 확인해 보니 아래와 같은 이슈로 기동에 실패한 흔적이 보인다.
2020-09-03T05:26:34.727265Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of socket: '/var/run/mysqld/mysqlx.sock' failed, can't create lock file /var/run/mysqld/mysqlx.sock.lock' 2020-09-03T05:26:34.727597Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060 2020-09-03T05:26:34.750397Z 0 [System] [MY-010229] [Server] Starting XA crash recovery... 2020-09-03T05:26:34.765033Z 0 [System] [MY-010232] [Server] XA crash recovery finished. 2020-09-03T05:26:34.800490Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2020-09-03T05:26:34.800745Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2020-09-03T05:26:34.802999Z 0 [ERROR] [MY-011811] [Server] Can't start server: can't check PID filepath: No such file or directory
에러의 내용을 보면 /var/run/mysqld/mysqlx.sock 파일을 생성 못한다고 나온다.
P.S 근본적인 이유는 모르겠지만 해당 내용에 대해서 구글링을 해 보면 SELinux 에 대한 사항에 대한 내용도 검색이 된다.
문제 해결시 SELinux 이슈에 대한 사항은 아니지만 SELinux 설정 사항과 해당 내용에 대해서 파악해 두는 것도 MySQL을 운영하는데 도움이 되긴한다.
3.2 원인 파악
어떤 이유에서인지는 모르지만 /var/run 하위에 mysqld 디렉토리 자체가 존자하질 않는다. 해서 해당 디렉토리를 생성하면 문제 해결을 시도해 본다.
해서 해당 디렉토리를 생성해 보기로 한다.
3.3 해결 방안 적용 테스트
# mkdir /var/run/mysqld # chown mysql:mysql /var/run/mysqld
위와 같이 작업 MySQL이 정상적으로 기동이 된다.
역시 문제 발생시는 에러 로그에서 부터 출발하는 것이 원인에 접근하는 가장 빠른 길이다.
$sudo systemctl start mysqld