MySQL 이벤트 스케줄러는 주기적으로 특정 작업을 자동으로 수행하도록 예약하는 기능입니다. 주로 정기적인 데이터 업데이트, 백업 또는 로그 정리 등의 작업을 수행하는 데 유용합니다. 스케줄러를 사용하면 직접 실행할 필요 없이 설정한 시간과 주기에 따라 작업이 자동으로 실행됩니다.
이벤트 스케줄러 활성화
MySQL에서 이벤트 스케줄러가 비활성화된 경우, 다음과 같이 활성화해야 합니다.
SET GLOBAL event_scheduler = ON;
이벤트 스케줄러 기본 문법
CREATE EVENT event_name
ON SCHEDULE schedule
DO
event_body;
- event_name: 이벤트의 이름입니다.
- ON SCHEDULE schedule: 이벤트가 실행될 주기를 설정합니다. (EVERY나 AT 등의 옵션 사용)
- event_body: 실행할 SQL 명령어입니다.
아래 쿼리는 매월 1일 00:00에 CUSTOMERS 테이블의 특정 칼럼 값을 업데이트하는 작업을 자동으로 수행하는 예제입니다.
CREATE EVENT reset_msg_yn_event
ON SCHEDULE EVERY 1 MONTH
STARTS '2024-12-01 00:00:00'
DO
UPDATE CUSTOMERS
SET FEE_YN = 'N'
WHERE ACADEMY_CODE = '0';
- EVERY 1 MONTH: 매월 한 번씩 실행되도록 설정합니다.
- STARTS '2024-11-01 00:00:00': 2024년 11월 1일 00:00에 시작합니다.
- UPDATE 문: ACADEMY_CODE가 '0'인 행들의 FEE_YN 값을 'N'으로 변경합니다.
주기 설정 옵션
MySQL 이벤트 스케줄러는 다양한 주기를 지원합니다:
- 매일: EVERY 1 DAY
- 매주: EVERY 1 WEEK
- 매월: EVERY 1 MONTH
- 특정 시간: AT 'YYYY-MM-DD HH:MM:SS'
CREATE EVENT event_name
ON SCHEDULE EVERY 1 DAY
STARTS '2024-11-01 00:00:00'
ENDS '2025-11-01 00:00:00'
DO
-- 작업 내용
이벤트 확인 및 관리
1. 이벤트 목록 확인
SHOW EVENTS;
2. 이벤트 삭제
DROP EVENT IF EXISTS reset_msg_yn_event;
3. 이벤트를 일시 중지 및 활성화
ALTER EVENT reset_msg_yn_event DISABLE;
ALTER EVENT reset_msg_yn_event ENABLE;
이벤트 스케줄러 활용 시 주의 사항
1. 성능 관리
- 이벤트가 너무 자주 실행되면 데이터베이스 성능에 영향을 줄 수 있습니다.
2. 백업 계획
- 주기적으로 백업이나 중요한 데이터 처리를 할 경우, 이벤트가 잘못 설정되면 데이터가 예상치 못하게 변경될 수 있으므로 테스트 환경에서 먼저 실행해 보는 것이 좋습니다.
3. 로그 관리
- 이벤트가 정상적으로 실행되었는지 확인하려면 로그를 설정하거나 쿼리를 통한 상태 점검이 필요합니다.
이렇게 MySQL 이벤트 스케줄러를 사용하면 반복 작업을 자동화하여 데이터베이스 관리를 보다 효율적으로 할 수 있습니다.