MySQL에서 SET GLOBAL event_scheduler = ON으로 이벤트 스케줄러를 활성화하면, 서버가 재시작될 때 설정이 초기화되어 다시 OFF로 돌아가는 문제가 발생합니다. 이 글에서는 MySQL을 재시작하더라도 전역 event_scheduler가 항상 ON 상태를 유지하도록 설정하는 방법을 알아보겠습니다.
현재 event_scheduler 상태 확인
먼저 시스템 변수 @@event_scheduler를 SELECT 문으로 조회하여 현재 상태를 확인할 수 있습니다.
mysql> select @@event_scheduler;
실행 결과:
+-------------------+ | @@event_scheduler | +-------------------+ | ON | +-------------------+ 1 row in set (0.00 sec)
MySQL 재시작 후 설정 확인
이제 MySQL을 재시작해 보겠습니다.
mysql> restart; Query OK, 0 rows affected (0.00 sec)
서버가 재시작되는 동안에는 연결이 잠시 끊기며, 이때 쿼리를 실행하면 다음과 같은 오류 메시지가 나타납니다.
mysql> select @@event_scheduler; ERROR 2013 (HY000): Lost connection to MySQL server during query
잠시 후 다시 @@event_scheduler 변수를 조회하면 클라이언트가 자동으로 재접속하면서 여전히 ON 상태임을 확인할 수 있습니다.
mysql> select @@event_scheduler; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 8 Current database: *** NONE *** +-------------------+ | @@event_scheduler | +-------------------+ | ON | +-------------------+ 1 row in set (0.04 sec)
설정 파일(my.cnf / my.ini)에 등록하는 방법
재시작 후에도 event_scheduler가 항상 ON으로 유지되도록 하려면 MySQL 설정 파일인 my.cnf(Linux/Unix 계열) 또는 my.ini(Windows)의 [mysqld] 섹션에 다음과 같이 추가합니다.
[mysqld] event_scheduler = ON
설정 파일을 수정한 후 MySQL을 재시작하면 변경 사항이 적용됩니다. 이렇게 하면 서버가 몇 번을 재시작하더라도 event_scheduler는 항상 ON 상태로 유지됩니다.
참고: SET PERSIST 사용 (MySQL 8.0 이상)
MySQL 8.0부터는 SET PERSIST 구문을 사용하면 서버를 직접 중단하지 않고도 설정을 영구적으로 저장할 수 있습니다.
mysql> SET PERSIST event_scheduler = ON;
이 명령은 mysqld-auto.cnf 파일에 설정값을 기록하므로, 이후 서버가 재시작되어도 해당 값이 자동으로 적용됩니다.
정리하면, MySQL 재시작 후에도 event_scheduler를 ON 상태로 유지하려면 설정 파일(my.cnf 또는 my.ini)에 옵션을 등록하거나, MySQL 8.0 이상 환경에서는 SET PERSIST 구문을 활용하면 됩니다.