2024. 3. 18. 23:23ㆍMySQL/Class
# MySQL의 event는 Oracle의 job이라고 보면 됩니다. 즉, DB 내에서의 스케쥴러 입니다.
오늘 event 에 대해서 등록하고 간단하게 확인 하는 방법을 다뤄보도록 하겠습니다.
1. 스케쥴러 설정
SQL> show variables where variable_name = 'event_scheduler';
SQL> show variables like 'event%';
# 설정
set global event_scheduler=on;
2. 프로시저 생성
- 여기 10건 입력하는 프로시져가 있습니다. 이 프로시져를 event에 등록하여 자동 처리가 되는지 확인을 해보겠습니다.
mysql> delimiter $$
mysql> drop procedure if exists test.imp_tmp_event $$
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create procedure test.imp_tmp_event()
-> begin
-> declare i int default 1;
-> while i <= 10 do
-> insert into test.temp_event values(i, concat("event",i));
-> set i = i + 1;
-> end while;
-> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
3. 등록
- 1분마다 실행되도록 등록하였습니다.
mysql> create event test.event_1 on schedule every 1 minute do call test.imp_tmp_event;
Query OK, 0 rows affected (0.01 sec)
- 돌릴 시점 지정
mysql> create event test.event_1 on schedule every 1 minute
-> starts '2024-03-18 16:00:00' # 해당 시간대부터 스케쥴러를 돌린다.
-> DO
-> call test.imp_tmp_event();
Query OK, 0 rows affected (0.00 sec)
4. 확인
- Execute at : 특정 시간대에 1회성으로 돌릴경우 기입.
- LAST_EXECUTED : 마지막 실행 시간
- Status : ENABLE, DISABLE, SLAVESIDE_DISABLE
# SLAVESIDE_DISABLED : 마스터에서 event가 등록되었을 때 슬레이브에도 동일하게 생성이 됩니다. 그래서 마스터와 슬레이브에서 동시에 작업이 이뤄질수있는 문제가 발생될 수 있지만, event 등록시 자동으로 slave의 status에는 SLAVESIDE_DISABLED 값으로 설정되어 slave에서는 처리가 되지 않게 해줍니다.
5. 이벤트 비활성화
mysql> alter event test.event_1 disable;
# master에서 slave에 일괄적으로 disable 시키는 명령어 입니다.
mysql> alter event test.event_1 disable on slave;
6. 이벤트 삭제
mysql> drop event test.event_1;
7. failover
- failover 발생시 event는 설정된 서버 그대로 유지가 됩니다. 즉, slave 에서 master 서버로 되었다고 하여도 event의 status값은 그대로 입니다. slave 가 된 서버에서는 계속 작동을 하여 데이터 싱크에 있어 문제가 될 수 있습니다.
'MySQL > Class' 카테고리의 다른 글
ERROR - (1) [MY-010914] Aborted connection (0) | 2024.03.27 |
---|---|
기초공부 - (10) Innodb_large_prefix (0) | 2024.03.25 |
기초공부 - (8) 테이블 복구 (0) | 2024.03.10 |
HA 구성 - (6) MHA : FailOver (0) | 2024.03.05 |
M2(Mac)용 VMWare로 가상화 만들기 - (6) In-place upgrade (2) | 2024.02.27 |