2017년 7월 6일 목요일

Mysql 이벤트 스케쥴러


인터넷에 잘못된 엿같은 정보가 있어서 (대부분 돌아다님) 많이 헤멨음.

5. 버전 이상에서 작동됨.

AWS  AURORA 에서도 테스트 완료했음.
(aurora 에서는 이벤트가 기본적으로 작동하게 되어있음. 파라메터 그룹 수정할 필요 없음)

기본문법

create event IF NOT EXISTS (이벤트 명)
    ON SCHEDULE
        EVERY (반복 가동되는 시간 텀)
        STARTS (시작 시간 기준)
    DO (쿼리)


create event IF NOT EXISTS e1
    ON SCHEDULE
        EVERY 30 SECOND
        STARTS CURRENT_TIMESTAMP  -- 시작시간 기준임. '2017-12-31 00:00:00' 이렇게 지정가능
    DO insert into test.e set regdate=now();

라고 하면

지금 당장 1번 실행하고 30초 마다 돌려.

라는 뜻임.

EVERY 2 MINUTE => 2분마다 실행
EVERY 1 HOUR => 1시간마다 실행
EVERY 24 HOUR => 24시간 마다 실행
EVERY 1 DAY => 1일 마다 실행
EVERY 30 DAY => 30 일 마다 실행
EVERY 1 MONTH => 1달 마다 실행

제거는 mysql.event 에서 직접 삭제해도 되지만

drop event (이벤트 명) 으로 하는게 제일 깔끔함.

use database 로 현재 바라보고 있는 데이터베이스 에서 가동된다. (물론 권한이 있으면 타 데이터베이스 에도 가능은 함.)

권한도 접속계정의 권한에 따름.

AURORA 의 경우 mysql 의 시간 기준일을 변경할수 없으므로 잘 계산해서 넣어야함.

대개 가동되는 계정의 시간 기준일에 맞춰서 알아서 수정됨.