MySQL EVENT SCHEDULE ์„ค์ •ํ•˜๊ธฐ

MySQL 5.1.7 ์—์„œ๋ถ€ํ„ฐ๋Š” crontab+shell ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‹œ๊ฐ„๋ณ„๋กœ EVENT JOB์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Event Scheduler ON

MySQL ์ „์—ญ๋ณ€์ˆ˜์—์„œ event_scheduler๋ฅผ ON ํ•ด์ค€๋‹ค.

SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
/* ๋˜๋Š” */
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

EVENT ๊ธฐ๋ณธ SQL ๋ฌธ

๋‹ค์Œ์€ EVENT๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋ณธ SQL๋ฌธ์ด๋‹ค.

/* SQL */
CREATE EVENT [IF NOT EXISTS] ์ด๋ฒคํŠธ๋ช…
ON SCHEDULE ์Šค์ผ€์ค„
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT '์ฃผ์„']
DO [BEGIN] ์‹คํ–‰ํ•  sql๋ฌธ; [์‹คํ–‰ํ•  sql๋ฌธ]; [END]

์„ธ๋ถ€ ์„ค์ •

INTERVAL ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ๋ฐ˜๋ณต ์ฃผ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ณ , EVERY ๋ฅผ ํ†ตํ•ด ๋งค์ผ, ๋งค๋ถ„, ๋งค์‹œ ๋“ฑ์˜ ๋ฐ˜๋ณต ์ง€์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

STARTS ์™€ ENDS๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต์˜ ์‹œ์ž‘์ผ์‹œ, ์ข…๋ฃŒ์ผ์‹œ์˜ ์ง€์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

/* ์Šค์ผ€์ค„ */
{ AT ํƒ€์ž„ [+ INTERVAL ๊ฐ„๊ฒฉ [+INTERVAL ๊ฐ„๊ฒฉ...]]
| EVERY ๊ฐ„๊ฒฉ [STARTS ํƒ€์ž„] [ENDS ํƒ€์ž„] }
/* ํƒ€์ž„ */
{CURRENT_TIMESTAMP | ๋…„์›”์ผ์‹œ์˜ ๋ฆฌํ„ฐ๋Ÿด}
/* ๊ฐ„๊ฒฉ */
{
  YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|WEEK|SECOND
  |YEAR_MONTH|DAY_HOUR|DAY_MINUTE|DAY_SECOND|HOUR_MINUT
  |HOUR_SECOND|MINUTE_SECOND
}

์˜ˆ์ œ SQL

์˜ˆ์ œ๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

CREATE EVENT IF NOT EXISTS evt_sessionClean
ON SCHEDULE 
EVERY 3 DAY_HOUR
COMMENT 'Clean up session at 03:00 daily'
DO
DELETE FROM admin.user_session;

์œ„์˜ ์ฝ”๋“œ๋Š” ๋งค์ผ 03์‹œ์— admin DATABASE์˜ user_session ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  Row๋ฅผ DELETEํ•œ๋‹ค.

๋” ์ž์„ธํ•œ ์ถœ์ฒ˜๋Š” ๊ณต์‹๋ฌธ์„œ๋‚˜ ์ถœ์ฒ˜๋ฅผ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.

์ถœ์ฒ˜

1) https://dev.mysql.com/doc/refman/5.7/en/create-event.html

2) http://linuxism.tistory.com/854

3) http://h391106.tistory.com/257