이번에는 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
MySQL EVENT 간단 이해하기
예를 들어, 매일 밤 12시에 특정 테이블의 데이터를 정리하도록 설정할 수 있다. 다음은 MySQL 이벤트를 생성하고 사용하는 기본적인 방법이다. 1단계: Event Scheduler를 활성화 한다. 이벤트 스케줄러
zambbon.tistory.com
Mysql 이벤트 스케줄링 방법
MySQL에서 이벤트 스케줄링을 하는 방법은 다음과 같습니다. MySQL 이벤트 스케줄링을 사용하려면, 먼저 MySQL 서버가 실행 중인지 확인해야 합니다. MySQL Workbench를 실행하고, 해당 데이터베이스에
itpro.tistory.com
https://blog.naver.com/yswon72/56088055
[mysql] MYSQL 데이터베이스 접속하기
### MYSQL 데이터베이스 접속하기 1) MYSQL root로 데이터베이스 접속하기 여기에서...
blog.naver.com
'Data Engineering > DBMS' 카테고리의 다른 글
[PostgreSQL] Pivot, Unpivot (0) | 2024.12.31 |
---|---|
[PostgreSQL] 서브 쿼리(Sub Query)의 개념 & 문법 (1) | 2024.12.19 |
[PostgreSQL] Database Partitioning (0) | 2023.08.23 |
[DB 기초] 트랜잭션(Transaction)과 그 특성은 무엇인가 (0) | 2023.08.19 |
[DBMS] Data structure store Redis (0) | 2023.07.27 |