--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 에서 해당 이벤트 관련 정보들을 확인 가능.
-- 생성 예시
=> 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;