본문으로 바로가기

 

 

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 이벤트 스케줄러를 사용하면 반복 작업을 자동화하여 데이터베이스 관리를 보다 효율적으로 할 수 있습니다.