MySQL 이벤트 스케줄러?
MySQL의 이벤트 스케줄러는 특정 시간 간격 또는 지정된 시점에 SQL 쿼리를 자동으로 실행할 수 있도록 도와주는 기능으로, 이를 통해 특정 시간에 예약해야 하는 작업들을 반복적으로 실행할 수 있다. Cron과 유사한 역할이라고 보면 되며, DB 내에서 직접 관리된다.
MySQL의 장점은 MySQL 서버 내에서 쿼리가 자동으로 실행되기 때문에 외부의 서버 또는 애플리케이션을 통해 스크립트를 보내지 않아도 된다는 것이다. 클라이언트와도 독립적으로 실행되기 때문에, 간단한 작업의 경우 이벤트 스케줄러를 이용하는 장점이 극대화된다.
구성 요소
MySQL 이벤트 스케줄러는 크게 '이벤트'와 '스케줄러' 2가지로 나뉘어져 있다.
- 이벤트: 실행할 SQL 명령어 또는 명령어 블록이다.
- 스케줄러: MySQL 서버에서 이벤트를 관리하고 실행하는 시스템 프로세스
즉, 스케줄러가 '이벤트'를 단위로 실행한다는 개념이다. 스케줄러는 기본적으로 비활성화 되어 있으며, 활성화를 위해서는 아래 명령어를 실행시켜야 한다.
SET GLOBAL event_scheduler = ON;
-- 스케줄러 상태 확인
SHOW VARIABLES LIKE 'event_scheduler';
그리고 아래와 같이 이벤트를 생성해주어야 한다.
-- 반복 실행 이벤트 예시
CREATE EVENT daily_event
ON SCHEDULE EVERY 1 DAY
STARTS '2025-02-10 00:00:00'
DO
BEGIN
-- 실행할 SQL 문
DELETE FROM old_data WHERE created_at < NOW() - INTERVAL 30 DAY;
END;
하지만 AWS의 RDS에서는 MySQL의 시스템 설정을 직접 변경할 수는 없어 이벤트 스케줄러 설정이 불가능하다. 따라서 '파라미터 그룹(Parameter Group)을 통해 이벤트 스케줄러를 활성화시켜야 한다.
AWS RDS에서 이벤트 스케줄러 설정하기
1. 먼저 RDS 페이지에 접속해 '파라미터 그룹' 탭 - '파라미터 그룹 생성' 클릭
2. 파라미터 그룹을 생성해준다. (DB 엔진 버전 확인)
3. 생성한 파라미터 그룹의 상세 정보에 'event_scheduler'가 있는 것을 확인할 수 있다.
4. '편집'을 눌러 event_scheduler의 값을 'ON'으로 설정해주고 변경 사항을 저장해준다.
5. 해당 파라미터 그룹을 적용시킬 DB를 선택하고 '수정' 버튼 클릭
6. 추가 구성 탭의 데이터베이스 옵션에서 DB 파라미터 그룹을 위에서 생성한 파라미터 그룹으로 수정해준다.
7. 수정 예약을 '즉시 적용'으로 바꾼 뒤 'DB 인스턴스 수정' 클릭 (재부팅을 해주어야만 해당 파라미터 그룹이 적용된다.)
CREATE EVENT daily_create_view
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
DO
BEGIN
-- 블라스트 view 생성 쿼리
CREATE OR REPLACE VIEW blast_by_status AS
SELECT
p.status,
...
END
8. 이후 이벤트를 생성한다.
-- 등록한 이벤트 확인
SHOW EVENTS;
9. SHOW EVENTS라는 쿼리로 생성된 이벤트를 확인할 수 있다.
위 단계를 따르면 AWS RDS에서도 이벤트 스케줄러를 설정할 수 있다.
'Minding's Programming > AWS' 카테고리의 다른 글
[AWS] AWS Redshift Spectrum으로 S3 외부 테이블 조작해보기 (2) | 2024.10.30 |
---|---|
[AWS] AWS Redshift Serverless 설치 (무료 평가판 / Free Trial) (0) | 2024.10.29 |
[AWS] ApiGateway (0) | 2024.10.28 |
[AWS] Lambda (2) | 2024.10.28 |
[AWS] ECS / ECR (0) | 2024.10.28 |