메뉴 건너뛰기

XEDITION

MYSQL

데이터를 주기적으로 삭제 하는 방법을 찾아 보다가 MySQL이벤트 스케줄러라는걸 알게 되었습니다.

이번 시간에는 MySQL이벤트 스케줄러 를 사용해서 데이터를 주기적으로 삭제하는 방법에대해서 알아보도록 하겠습니다.

 

 

스케줄러 사용방법은 다음과 같습니다.

1. 커맨드 창에서 MySQL에 접속합니다.

2. 이벤트 스케줄러 활성화 시킵니다.

3. 이벤트를 등록합니다.

 

 

그럼 위와 같은 순서대로 진행 해 보겠습니다.

 

1. 커맨드 창에서 MySQL에 접속합니다.

   1-1. 커맨드 창을 연다음 mysql -u아이디 -p패스워드 을 입력해서 MySQL에 접속합니다.

 

 

 

2. 이벤트 스케줄러 활성화 시킵니다.

   2-1. 아래의 명령어를 입력합니다.    

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1;

SET @@global.event_scheduler = 1; 

 

[실행결과]

image1.png 

 

 

[참고]:http://dev.mysql.com/doc/refman/5.1/en/events-configuration.html

 

 

 

3. 이벤트를 등록합니다.

   3-1. 이벤트 등록 형식

 

 

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}

 

 

 

  3-2. 예) 한달 간격으로 오늘을 기준으로해서 한달 이후의 데이터를 삭제하는 샘플

 

CREATE EVENT IF NOT EXISTS 이벤트 이름

    ON SCHEDULE

        EVERY 1 MONTH

        STARTS CURRENT_TIMESTAMP

    DO

        DELETE FROM db명.테이블명 where 시간컬럼명 <= date_sub(curdate(), INTERVAL 1 MONTH); 

※주의: 한글은 임의로 쓴것입니다. 각자 상황에 맞게 바꿔서 쓰시길 바랍니다.

 

실행은 sql커맨드에서 실행합니다.

예)

 

mysql>use 데이터베이스명

Database changed

mysql>CREATE EVENT IF NOT EXISTS 이벤트 이름

    ON SCHEDULE

        EVERY 1 MONTH

        STARTS CURRENT_TIMESTAMP

    DO

        DELETE FROM db명.테이블명 where 시간컬럼명 <= date_sub(curdate(), INTERVAL 1 MONTH);

 

 

 

 

[참고]http://dev.mysql.com/doc/refman/5.1/en/create-event.html

 

자세한 내용은 참고 사이트에 가보시면 설명이 되어있습니다.

사이트를 참고하세요.

 

감사합니다.

 

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

번호 제목 글쓴이 날짜 조회 수
55 MySQL 데이터 복구하기 엘리후 2016.10.06 85
54 플래시로 DB테이블 연동 기초~ 엘리후 2016.09.07 62
53 [문제해결 일지] systemctl start mariadb 실행시 Failed to issue method call: No such file or directory. 에러 엘리후 2016.05.10 83
52 알기 쉬운 게임DB 이야기 엘리후 2016.02.28 248
51 mysql 이벤트 스케줄 사용법 엘리후 2016.02.20 1866
50 MySql 문자열 합치기 엘리후 2016.02.19 239
49 MySQL Insert Where query 엘리후 2016.02.19 171
» [MySQL]이벤트 스케줄러를 사용해서 데이터 삭제하기 엘리후 2016.02.02 215
47 mysql 이벤트 스케쥴러 사용하기 엘리후 2016.02.02 85
46 SQL FULL OUTER JOIN Keyword 엘리후 2016.01.28 132
45 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead… 엘리후 2015.12.01 67
44 mysql 명령어로 접속시도시 발생되는 오류 엘리후 2015.12.01 328
43 MYSQL: AND & OR CONDITIONS 엘리후 2015.11.26 32
42 [MY-SQL] 현재(오늘)부터 특정일 까지를 구하는 Query문(between, subdate) + 오늘 기준 이번주, 이번달 구하는 Query문 엘리후 2015.11.20 201
41 mysql에서 가장 오래된 row select 쿼리는? 엘리후 2015.11.19 158
40 MySQL 함수를 활용한 날짜비교 쿼리문 작성하기 [출처] MySQL 함수를 활용한 날짜비교 쿼리문 작성하기|작성자 네오 에이치 엘리후 2015.11.18 60
39 MySQL 기본쿼리 : DELETE 문 엘리후 2015.11.02 45
38 [서버관리] phpMyAdmin을 통한 DB 및 사용자추가 엘리후 2015.10.28 116
37 Ubuntu MySQL 원격 접속 허용 엘리후 2015.10.22 56
36 [mysql] mysql 중복 제거 쿼리 (dist, group by) 엘리후 2015.10.21 137
위로