개요
테이블에 자료가 쌓이다 보면 오래된 자료를 주기적으로 정리해야 할 경우가 있습니다. 로그같은 개념으로 계속 누적이 되거나 저장된지 오래되어 의미가 없어진 자료등이 그렇습니다. 관리가 필요한 자료를 확인해서 관리자가 수동으로 관리할 수도 있습니다. 하지만 그것보다는 자동화하는 것이 더 좋은 선택일 것 입니다. MySQL 이벤트 스케줄러 를 사용해서 원하는 작업을 주기적으로 실행할 수 있습니다.
MySQL 이벤트 스케줄러
MySQL 이벤트 스케줄러는 원하는 작업을 지정된 규칙에 따라 실행할 수 있는 기능입니다. 자세한 내용은 다음의 링크에서 확인하실 수 있습니다.
https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html
새벽 2시에 특정 프로시저를 수행하는 이벤트 생성 소스는 다음과 같습니다.
CREATE EVENT `system_log_delete_event`
ON SCHEDULE
EVERY '2' DAY_HOUR STARTS '2020-07-17 11:46:26'
ON COMPLETION PRESERVE
ENABLE
COMMENT '30일 지난 로그 자료 삭제'
DO call system_log_delete()
핵심은 스케줄과 수행할 명령을 지정하는 부분 입니다. 위 소스에서는 매일 2시에 system_log_delete 프로시저를 호출하도록 설정했습니다.
자세한 생성 문법은 다음 링크를 참조하시면 됩니다.
https://dev.mysql.com/doc/refman/5.7/en/create-event.html
시작과 끝을 지정할 수 있고 끝나면 이벤트 자체를 삭제할 수 도 있습니다. 만일 이벤트 스케줄러가 실행되지 않는다면 SET GLOBAL event_scheduler = ON; 명령을 수행하면 됩니다.
이번글에서는 MySQL 이벤트 스케줄러에 대해 알아보았습니다.