Print
카테고리: [ MariaDB ]
조회수: 9351

 

--1. 개요

Mysql 및 Maria 에도 Oracle 의 job , OS의 crontab 과 같은 특정 시간에 특정 프로시저를 수행하는 기능이 있습니다.

사용방법 및 이중화 구성 DB에서 event 사용 시 주의할 점을 살펴보겠습니다.

 

--2. event 란?

 

Event 란 특정 시간에 어떠한 쿼리 프로시저 함수등을 실행 시키는 기능

사용하기 위해서는 우선 DB 서버 내에서 아래 커맨드를 수행하여 EVENT_SCHEDULER 설정을 하거나

SET GLOBAL event_scheduler = ON;

my.cnf 에 event_scheduler=on 설정 추가하면 사용가능.

이벤트를 생성하면 mysql.event , inofrmation_schema.events에 자동으로 등록되며

SELECT * FROM MYSQL.EVENT , SELECT * FROM INFORMATION_SCHEMA.EVENTS  에서 해당 이벤트 관련 정보들을 확인 가능.

 

-- 생성 예시

create event IF NOT EXISTS test.test_event
   ON SCHEDULE 
       EVERY 1 MINUTE
       STARTS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
       ENDS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
   DO insert into test.test set regdate=now();

 

 

=> test 스키마에 test_event라는 이벤트를 생성.

1분마다 수행 되며 현재 시간으로부터 1분 뒤 부터 DO 아래 쿼리를 수행하고 현재시간으로부터 5분 뒤 종료됨.

ENDS 조건을 명시할 경우, 이벤트가 종료되면 mysql.event, information_schema.events에서 자동 삭제되며 

ON COMPLETION PRESERVE  조건을 추가하면 이벤트가 종료되어도 이벤트 정보가 저장됨.

 

 

--3. 주의할 점

Single DB인 경우에는 해당사항 없지만,

M-S replication 구조, MHA 구성 시에는 아래와 같은 관리 포인트가 있음

Master DB에서 이벤트를 생성하면 Slave 쪽에서도 동일하게 생성 되지만 STATUS는 SLAVESIDE_DISABLED로 설정되어 실제로는 수행되지 않음.

MHA 구성 시 FAILOVER가 발생하면 SLAVE DB가 MASTER 로 승격되는데 EVENT의 STATUS 는 그대로 SLAVESIDE_DISABLED인 상태로 승격됨.

down 된 DB 재기동 및 replication 적용 후 수동으로 EVENT의 STATUS를 설정해야함 

예시 ) ALTER EVENT TEST.TEST_EVENT ENABLE;