본문 바로가기

DB(SQL)/mysql|maria

[Mariadb] event scheduler 설정하기

반응형

이벤트 스케줄러 설정 확인

SHOW VARIABLES WHERE VARIABLE_NAME = 'event_scheduler';

이벤트 스케줄러 사용 ON 설정 (임시)

SET GLOBAL event_scheduler = ON;

데이터베이스가 재시작되거나 하면 설정값이 날라간다.

이벤트 스케줄러 사용 ON 설정 (영구)

mraidb 설정 파일 (버전 및 install 환경에 따라 달라질 수 있다.

# mraidb 설정 파일 변경(버전 및 install 환경에 따라 달라질 수 있다.)
vim /etc/mysql/mariadb.conf.d/50-server.cnf
# [50-server.conf]

[mariadb]
# event_scheduler 속성 추가 또는 ON
event_scheduler = on
# mariadb 재시작
service mariadb restart

 

이벤트 생성

syntax

CREATE [OR REPLACE]
    [DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }]
    EVENT 
    [IF NOT EXISTS]
    event_name -- event_name은 최대 길이가 64자인 유효한 MariaDB 식별자   
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    DO sql_statement;

schedule:
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval 
    [STARTS timestamp [+ INTERVAL interval] ...] 
    [ENDS timestamp [+ INTERVAL interval] ...]

interval (반복주기) :
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

 

일회성 이벤트 (feat. AT)

CREATE  EVENT  myevent  --  myevent라는 이벤트를 생성합니다.
    ON  SCHEDULE  AT  CURRENT_TIMESTAMP  +  INTERVAL  1  HOUR  -- SQL 문을 실행하여 한 번 ( 생성 후 1시간 ) 실행
    DO 
      UPDATE  myschema . mytable  SET  mycol  =  mycol  +  1 ; -- myschema.mytable 테이블의 mycol 열 값을 1씩 증가

반복성 이벤트 (feat. EVERY)

CREATE EVENT example -- example 이벤트 생성
ON SCHEDULE EVERY 1 HOUR -- 1시간마다 반복
STARTS CURRENT_TIMESTAMP + INTERVAL 1 MONTH -- 현재 시간으로 부터 1달 후 부터 시작
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH + INTERVAL 1 WEEK -- 현재 시간으로 부터 1달 후 + 일주일 후 때 종료
DO insert into test values (1); -- DO 실행할 쿼리

자세한 사항

https://mariadb.com/kb/en/create-event

 

CREATE EVENT

Create and schedule a new event.

mariadb.com

https://mariadb.com/kb/en/event-scheduler

 

Event Scheduler

 

mariadb.com

이벤트 목록 확인

SHOW EVENTS;

이벤트 마지막으로 실행된 시점 확인

SELECT last_executed FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'my_delete_event';

 

참고

https://plein-de-verite.tistory.com/217

 

[MariaDB] EVENT 스케줄러 사용하여 쿼리 자동 반복 실행하기

MariaDB 테이블의 특정 필드값에 대해 어떤 조건이 충족하는 경우 주기적으로 삭제 처리하는 작업을 위하여 자동으로, 그리고 주기적으로 쿼리를 실행하는 방법이 필요하여 EVENT Scheduler 기능을 이

plein-de-verite.tistory.com

 

반응형