본문 바로가기

Sever

MySQL 이벤트 만들고 관리

1.스케줄을 넣자.

MySQL에 처음 스케줄을 넣으려 하면 정상적으로 안들어가는 이유는
활성화가 안되어 있어서가 지금까진 큰이유인거 같아요.




1
2
3
4
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

위에 있는 명령어를 입력하여 스케줄러를 활성화 시킵니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    DO event_body;
 
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}


위와 같이 작성을 하면 된다고 하는데 예제로 쉽게 보는게 좋다고 생각됩니다.





1
2
3
4
5
create event IF NOT EXISTS resetTable
ON SCHEDULE
EVERY 7 DAY
STARTS '2018-08-20 00:00:00'
DO DELETE FROM testDBname.resetTablename;


1
2
3
4
5
create event IF NOT EXISTS 이벤트명
ON SCHEDULE
EVERY 이벤트 
STARTS '2018-08-20 00:00:00'
DO DELETE FROM 디비명.테이블명;



해본 경험으로는

데이터 베이스 use로 들어가 하기때문에 디비명은 안적어도 잘 돌아간다고 생각됩니다.





2.스케줄을 관리하자.

나중에 이벤트 확인은(위에 이벤트 입력때 처럼 데이터베이스 use한 이후)

1
SHOW EVENTS ;

를 입력하시면 리스트를

1
SHOW CREATE EVENT `이벤트명` ;


를 입력하시면 자세한 이벤트 내용이 확인 가능합니다.

+ '이벤트명' <-이게 문법오류일땐  ' ' <-이거 빼고 하시면 됩니다.



아 삭제를 하고 싶으신가요?

1
DROP event `이벤트명` ;


이명령어를 입력하시면 삭제 가능합니다.






이거 하면서 테이블에서 테이블로 데이터를 옮기게 되서

아래와 같이 작동하는 이벤트를 만들어서 사용했어요.


1
INSERT INTO [table] (column1, colum2, colum3) SELECT column1, colum2, colum3 FROM [tableWHERE [조건];


이것은 칼럼을 골라서 할때이고 완전히 똑같은 테이블이다 하면


1
INSERT INTO [tableSELECT * FROM [tableWHERE [조건];


이렇게 사용하시면 될거 같아요.




작성하면서 참고한 링크


http://forum.falinux.com/zbxe/index.php?document_srl=565440&mid=lecture_tip


http://blog.freezner.com/archives/477


http://bizadmin.tistory.com/entry/MySQL-Event-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0