지니워의 일상다반사

MySQL 관련 error - event scheduler disabled 본문

본격 SE업무이야기/MariaDB(MySQL)

MySQL 관련 error - event scheduler disabled

지니워 2013. 11. 21. 16:19

어제 밤, 잠이 안와서 이리저리 뒤척이다가 새벽 세시쯤이 되어서야 잠이 들었는데 잠들고 얼마 있지 않아 slave server 중 한대에서 장애가 발생했다. 모니터링 하시는 분들이 대표님께 연락을 했고 대표님께서 일단 서버가 제대로 돌아가게끔 조치는 해두고 주무셨단다.


출근해서 db server의 log부터 살펴보았다. 이런 저런 error message들이 많이 나타나고 있었는데 인과관계를 잘 따져 이 error들이 나오게 된 근본문제를 찾기 시작했다.


발견.


서버를 재부팅하거나 mysql을 재시작 직후 event scheduler 를 실행하지 못했다는 로그를 발견했다. 이걸 단서로 원인을 찾기 시작.


1. DB에 접속한 다음 mysql 변수 중 event scheduler과 관련된 것이 있는지 찾아보았다.


myslq> show variables like '%event%';


있다. event_scheduler이라는 변수가 존재한다. 정상적인 다른 db서버에 접속하여 해당 값을 비교해 보았다.


문제서버 : event_scheduler - disabled

정상서버 : event_scheduler - off


다르다. 새로운 단서를 입수한 다음 다시 추적을 시작했다.


* event_scheduler의 설정값을 off로 바꿔보자.


db서버를 가동시키는중에 해당값을 바꿔보려고 했으나 disabled된 상태에서는 전환이 안된다고 한다.


참고) db서버가 구동중이고 event_scheduler의 상태가 disabled가 아닐 때 상태 전환 방법

set global event_scheduler=off;

set @@global.event_scheduler=off;

set global event_scheduler=0;

set @@global.event_scheduler=0;


그래서 db를 잠시 멈추고 my.cnf에 해당 값을 명시했다.

event_scheduler=off


mysql 시작.




안된다 -0-; 상태가 여전히 disabled이다. 뭐가 문제일까...

검색도중 show events;라는 명령어의 존재를 알고 실행해 보았다.(db는 mysql을 선택한 상태)

어라?오류가 난다.


'Cannot proceed because system tables used by Event Scheduler were found damaged at server start'


시스템테이블이 손상이 되어서 서버 시작할 때 event_scheduler을 실행하지 못했다는 것이다. 이 메세지는 위에 참고로 적어놓은 'db서버가 구동중이고 event_scheduler의 상태가 disabled가 아닐 때 상태 전환 방법'을 실행해도 동일하게 나온다. (시스템테이블의 손상을 실행 불가능하다는 코멘트보다 먼저 알려주는 것 같다.)


오케이. 해당 구문으로 검색하니 해결방법이 나온다.



닥치고 mysql_upgrade -uroot -p (--verbose) 하란다 -_-



여기서 잠시 헷갈렸던 것은 mysql_upgrade라는 구문을 보고 mysqld의 버전을 올리라는 것으로 착각하고 해결방법에서 제외하였는데(현재 db는 mysql기반의 mariadb를 쓰고 있는데 다른 DBMS와 마찬가지로  별다른 이슈가 없으면 DBMS의 버전을 맞추고, 변동하지 않는 것이 서비스 제공의 안정성 면에서 좋다.)

알고보니 mysql db를 가리키는 것이었다.


쉽게이야기해서 시스템테이블이 속해있는 mysql db를 업그레이드함으로써 문제가 되는 테이블 복구 및 문제점을 fix하는 것이다.



event_scheduler이 작동 안해서 innodb에 할당해 놓은 memory이상의 메모리를 가져다 쓰면서 결국 다운이 되는 것이 문제였는데 이 문제를 해결함으로써 해당 문제가 해결 되었길 바란다. 당분간 모니터링해야겠다.




'본격 SE업무이야기 > MariaDB(MySQL)' 카테고리의 다른 글

MariaDB(MySQL)을 튜닝하다 - 2  (0) 2013.10.30
MariaDB(MySQL)을 튜닝하다.  (0) 2013.10.29
Comments