MySQL 이벤트 스케줄러란?
MySQL 이벤트 스케줄러(Event Scheduler)는 백그라운드에서 상시 실행되며, 등록된 이벤트가 실행될 시간이 되었는지 끊임없이 감시하는 프로세스입니다. 이벤트를 생성하거나 예약하기 전에 반드시 스케줄러를 먼저 활성화해야 합니다.
이벤트 스케줄러 시작하기
아래 문장을 실행하면 이벤트 스케줄러를 시작할 수 있습니다.
mysql> SET GLOBAL event_scheduler = ON; Query OK, 0 rows affected (0.07 sec)
스케줄러 실행 상태 확인
스케줄러가 정상적으로 동작 중인지는 MySQL 프로세스 목록에서 확인할 수 있습니다.
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 3
User: root
Host: localhost:49500
db: query
Command: Query
Time: 0
State: starting
Info: SHOW PROCESSLIST
*************************** 2. row ***************************
Id: 4
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 11
State: Waiting on empty queue
Info: NULL
2 rows in set (0.06 sec)프로세스 목록에 User가 event_scheduler이고 Command가 Dameon인 항목이 보이면 스케줄러가 정상적으로 구동된 것입니다. 'Waiting on empty queue' 상태는 현재 실행 대기 중인 이벤트가 없다는 의미입니다.
또한 다음 쿼리로 간단하게 스케줄러의 활성화 여부를 확인할 수도 있습니다.
mysql> SELECT @@event_scheduler;
이벤트 스케줄러 중지하기
더 이상 스케줄러가 필요하지 않다면 아래 문장으로 종료할 수 있습니다.
mysql> SET GLOBAL event_scheduler = OFF; Query OK, 0 rows affected (0.07 sec)
서버 재시작 시에도 유지하는 방법
SET GLOBAL로 변경한 설정은 MySQL 서버를 재시작하면 초기화됩니다. 재시작 후에도 스케줄러를 자동으로 활성화하려면 설정 파일(my.cnf 또는 my.ini)의 [mysqld] 섹션에 다음과 같이 추가해야 합니다.
[mysqld] event_scheduler=ON