삶 가운데 남긴 기록 AACII.TISTORY.COM
MySQL 이벤트 스케줄러 본문
MySQL Event Scheduler
MySQL 5.1 부터 자바의 Quartz나 리눅스의 Crontab 처럼 이벤트 스케줄러를 통해 배치작업을 할 수 있게 되었습니다.
아래의 작업들은 콘솔에서 root 계정으로 접속하여 작업하는 것을 추천드립니다.
mysql -u root -p
이벤트 스케줄러 상태 확인
SHOW VARIABLES LIKE 'event%';
이벤트 스케줄러 ON/OFF
SET GLOBAL event_scheduler = ON;
SET GLOBAL event_scheduler = OFF;
만약 event_schedule 변경중에 에러코드 1227 이 나오는 경우 mysql을 root 권한으로 접속 후 다음을 실행하십시오.
UPDATE mysql.user set Super_Priv='Y' where user = '유저계정이름';
flush privileges;
서버 재시작시 이벤트 활성화가 되지 않는 경우
sudo vi /etc/my.cnf
만약 my.cnf 파일이 해당 경로에 없는 경우 find / -name 'my.cnf' 명령으로 검색합니다.
vi 편집기로 아래의 내용을 [mysqld] 항목 영역 안에 추가한뒤 wq!으로 저장하고 나옵니다.
event_scheduler = ON
그리고 나서 mysql 서비스를 재시작 합니다.
#centos7 인경우
systemctl restart mysqld
#centos6 인경우
service mysqld restart
#우분투인경우
service mysql restart
특정 시간에 1회 실행 이벤트 생성 예제
CREATE EVENT IF NOT EXISTS '이벤트이름'
ON SCHEDULE
AT '2021-08-24 12:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT '코멘트'
DO
수행할 명령어;
수행할 쿼리;
...
END
ON COMPLETION NOT PRESERVE ENABLE 설정은 이벤트를 수행 후 삭제 여부에 관한 설정입니다.
만약, 이벤트를 수행 후 삭제하지 않는다면 NOT을 제거 합니다.
하루에 한번 반복하는 이벤트 생성 예제
CREATE EVENT IF NOT EXISTS '이벤트이름'
ON SCHEDULE
EVERY 1 DAY
ON COMPLETION PRESERVE
ENABLE
COMMENT '코멘트'
DO
수행할 명령어들...
END
시작일과 시작시간 종료일과 종료시간 지정해서 하루 한 번 반복하는 이벤트 생성 예제
CREATE EVENT IF NOT EXISTS '이벤트이름'
ON SCHEDULE
EVERY 1 DAY STARTS '2021-08-24 12:00:00' ENDS '2022-08-24 12:00:00'
ON COMPLETION PRESERVE
ENABLE
DO
수행할 명령어들...
END
여기서 종료일 즉, ENDS 부분은 생략가능합니다.
매달 오후 12시에 1번 수행하도록 이벤트 수정 예제
ALTER EVENT '이벤트이름'
ON SCHEDULE
EVERY 1 MONTHS STARTS '2021-08-01 12:00:00'
DO
실행할쿼리들
이벤트 스케줄러 확인 쿼리
SELECT * FROM information_schema.events;
or
SHOW EVENTS;
프로세스 확인
SHOW processlist;
스케줄 삭제
DROP event '이벤트이름';
728x90
'DEV&OPS > Database' 카테고리의 다른 글
MySQL ibtmp1 파일 용량, Gerneral_log 파일 용량 (0) | 2022.04.20 |
---|---|
관계형 데이터베이스를 정규화해봅시다. (0) | 2022.02.25 |
MYSQL 날짜 비교 (0) | 2021.10.07 |
MySQL 권한 부여/회수 (0) | 2021.08.26 |
SQL 다른 테이블의 내용으로 여러 행 업데이트, 삭제 (0) | 2021.01.08 |