Finn.ian
article thumbnail

이번에는 MySQL에서 이벤트 스케줄링 하는 방법에 대해 작성하고자 합니다.

MySQL 이벤트 스케줄링 요약

MySQL 이벤트 스케줄링은 데이터베이스의 특정 작업을 일정 간격으로 자동으로 실행할 수 있는 기능이다.

해당 기능을 사용할 수 있는 일반적인 경우는 아래와 같다.

  • 백업
  • 통계 수집
  • 데이터 정리
  • 데이터 마이그레이션
  • 자동화

MySQL 예제를 통한 EVENT Scheduler 활용법

1단계: Event Scheduler 활성화하기

이벤트 스케줄러는 MySQL 서버에 기본적으로 내장된 구성 요소로서, 이벤트를 실행하는 데 사용됩니다. 다음 명령어로 이벤트 스케줄러를 활성화 할 수 있다.

SET GLOBAL event_scheduler = ON;

 

2단계: Event 생성

다음은 매일 밤 12시에 'old_data' 테이블에서 30일 이전의 데이터를 삭제하는 이벤트를 생성하는 예:

CREATE EVENT [IF NOT EXISTS] 이벤트명 
ON SCHEDULE 스케줄 
[ON COMPLETION [NOT] PRESERVE] 
[ENABLE | DISABLE] 
[COMMENT '주석'] 
DO [BEGIN] 실행할 sql문; [실행할 sql문]; [END]

 

3단계: 이벤트 확인

다음 SQL 명령을 사용하여 현재 데이터베이스의 모든 이벤트를 확인할 수 있다

SELECT * FROM information_schema.EVENTS;

• 출력되는 컬럼 중 LAST_EXECUTED 는 마지막 이벤트가 실행된 시간

 

4단계: 이벤트 수정

이벤트를 수정하려면 'ALTER EVENT' 명령을 사용한다.

예를 들어, 생성한 이벤트를 매일 아침 1시에 실행되도록 변경 가능할 수 있다.

ALTER EVENT [이벤트명]
ON SCHEDULE EVERY 1 DAY
  STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR);

 

5단계: 이벤트 삭제

이벤트를 삭제하려면 'DROP EVENT' 명령을 사용한다.

DROP EVENT IF EXISTS [이벤트명];

MySQL 이벤트 스케줄링 사용 예제

예제 1: 데이터베이스 백업

다음은 데이터베이스의 모든 테이블을 매일 오전 2시에 백업하는 이벤트를 생성하는 예제이다.

CREATE EVENT `backup` ON SCHEDULE EVERY 1 DAY STARTS '2023-11-23 02:00:00'
DO
BEGIN
    CALL backup_events();
END;

 

이 이벤트는 backup_events()라는 저장 프로시저를 호출하여 데이터베이스를 백업한다.

 

backup_events()프로시저는 아래와 같이 작성할 수 있다.

CREATE PROCEDURE `backup_events()`
BEGIN
    -- 데이터베이스 백업을 수행하는 코드
END;

 

이 이벤트를 생성하면, MySQL 서버는 매일 오전 2시에 backup_events() 프로시저를 호출하여 데이터베이스를 백업한다.

 

 

예제 2: 데이터 통계 수집

다음은 데이터베이스의 user 테이블에서 매일 오전 3시에 통계를 수집하는 이벤트를 생성하는 예제이다.

CREATE EVENT `statistics` ON SCHEDULE EVERY 1 DAY STARTS '2023-11-23 03:00:00'
DO
BEGIN
    SELECT COUNT(*) AS count, SUM(age) AS age_sum
    FROM user;
END;

 

이 이벤트는 user 테이블에서 count() 함수와 sum() 함수를 사용하여 다음과 같은 통계를 수집한다.

  • count() 함수: user 테이블의 레코드 수
  • sum() 함수: user 테이블의 모든 사용자의 나이의 합

이 이벤트를 생성하면, MySQL 서버는 매일 오전 3시에 user 테이블의 통계를 수집하여 출력한다.

해당 예제 이외에 아래와 같은 작업을 MySQL 이벤트 스케줄링을 통해 데이터베이스의 유지보수와 관리를 자동화하는 데 다양한 방법으로 사용할 수 있다.

  • 오래된 데이터를 삭제
  • 데이터 이동
  • 데이터 복제
  • 이메일 또는 문자 메시지를 보내기
  • 웹 서비스 호출

MySQL 이벤트 스케줄링을 사용한다면 데이터베이스를 효율적으로 관리하고 유지보수 할 수 있다.

 

 

참고자료

더보기

https://dev.mysql.com/doc/refman/8.0/en/create-event.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.1.13 CREATE EVENT Statement

13.1.13 CREATE EVENT Statement CREATE [DEFINER = user] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] DO event_body; schedule: { AT timestamp [+ INTERVAL interv

dev.mysql.com

https://m.blog.naver.com/realmani/221815618567

 

[MySQL] 이벤트 스케줄러 (Event Scheduler)

[MySQL ]이벤트 스케줄러 (Event Scheduler) * 특정 시간에 어떠한 쿼리 프로시저 함수등을 실행. * ...

blog.naver.com

https://zambbon.tistory.com/entry/MySQL-EVENT-%EA%B0%84%EB%8B%A8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

MySQL EVENT 간단 이해하기

예를 들어, 매일 밤 12시에 특정 테이블의 데이터를 정리하도록 설정할 수 있다. 다음은 MySQL 이벤트를 생성하고 사용하는 기본적인 방법이다. 1단계: Event Scheduler를 활성화 한다. 이벤트 스케줄러

zambbon.tistory.com

https://itpro.tistory.com/157

 

Mysql 이벤트 스케줄링 방법

MySQL에서 이벤트 스케줄링을 하는 방법은 다음과 같습니다. MySQL 이벤트 스케줄링을 사용하려면, 먼저 MySQL 서버가 실행 중인지 확인해야 합니다. MySQL Workbench를 실행하고, 해당 데이터베이스에

itpro.tistory.com

https://blog.naver.com/yswon72/56088055

 

[mysql] MYSQL 데이터베이스 접속하기

### MYSQL 데이터베이스 접속하기   1) MYSQL root로 데이터베이스 접속하기 여기에서...

blog.naver.com

 

profile

Finn.ian

@Finn_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그