2018년 10월 6일 토요일

[Mysql] Mysql Event 수행하기

현재 파워쉘을 활용하여 Mysql에 접근하여 프로시저를 실행하는 파일을 Windows 스케줄러로 매일 한 번 씩 실행 하고 있다.

다른 부분에서는 크게 문제가 되지 않는데 프로시저 내에 Repair Table 문이 들어있으니 제대로 수행이 되지 않는다.

Windows 스케줄러에서는 수행이 안되지만 수동으로 수행하면 실행이 된다.

처음에는 권한 문제 일까 여러 원인을 찾았지만 포기 했다.

단순히 Mysql 프로시저만 실행 해 주면 되기 때문에 Mysql 이벤트 라는 것을 찾게 되었다.

절차는 아래와 같다.

1. mysql information_schema 에서 수행되고 있는 이벤트가 있는지 확인 해보자

mysql> select * from information_schema.EVENTS;

2. 다음 이벤트가 enable 상태인지 확인한다.

mysql> show variables like 'event%';

event_scheduler ON 으로 되어있으면 값을 변경 해야한다.

3. 이벤트 ON으로 설정하기
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
다음과 같이 입력해준다.

4. 이제 이벤트를 설정 해준다.
CREATE EVENT `이벤트 명` ON SCHEDULE EVERY 1 DAY STARTS 'YYYY-MM-DD HH:MM:SS' 
DO
BEGIN
    CALL DB스키마.프로시저명;
END

이때 시작 시간은 현재 이벤트를 설정하는 시점보다 미래여야 한다.

우선은 이렇게 수행했을 때 Mysql 내에서 실행 되는 것이므로 잘 되었음을 확인했다.
내일도 다시 확인은 해봐야 한다. 제대로 작동하는지 알기 위해...

내용 참고는 아래에서 확인 했다.







댓글 없음:

댓글 쓰기