Loading...
MySQL 9.5 Reference Manual 9.5의 27.5.2 Event Scheduler Configuration의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Event는 특별한 event scheduler 스레드에 의해 실행됩니다. Event Scheduler를 언급할 때, 실제로는 이 스레드를 말합니다. 실행 중일 때, event scheduler 스레드와 그 현재 상태는 PROCESS 권한을 가진 사용자가 SHOW PROCESSLIST의 출력에서 볼 수 있으며, 이에 대해서는 뒤에서 설명합니다.
Global event_scheduler 시스템 변수는 Event Scheduler가 서버에서 활성화되어 있고 실행 중인지 여부를 결정합니다. 이 변수는 다음 값들 중 하나를 가지며, 이에 따라 event 스케줄링에 다음과 같이 영향을 줍니다:
ON: Event Scheduler가 시작됩니다. Event scheduler 스레드가 실행되며, 모든 예약된 event를 실행합니다. ON은 기본 event_scheduler 값입니다.Event Scheduler가 ON일 때, event scheduler 스레드는 SHOW PROCESSLIST 출력에 데몬 프로세스로 표시되며, 그 상태는 다음과 같이 나타납니다:
1mysql> SHOW PROCESSLIST\G 2*************************** 1. row *************************** 3 Id: 1 4 User: root 5 Host: localhost 6 db: NULL 7Command: Query 8 Time: 0 9 State: NULL 10 Info: show processlist 11*************************** 2. row *************************** 12 Id: 2 13 User: event_scheduler 14 Host: localhost 15 db: NULL 16Command: Daemon 17 Time: 3 18 State: Waiting for next activation 19 Info: NULL 202 rows in set (0.00 sec)
Event 스케줄링은 event_scheduler의 값을 OFF로 설정하여 중지할 수 있습니다.
OFF: Event Scheduler가 정지됩니다. Event scheduler 스레드는 실행되지 않으며, SHOW PROCESSLIST 출력에 나타나지 않고, 예약된 event는 전혀 실행되지 않습니다.Event Scheduler가 정지된 상태( event_scheduler가 OFF일 때)에서는 event_scheduler의 값을 ON으로 설정하여 이를 시작할 수 있습니다(다음 항목 참조).
DISABLED: 이 값은 Event Scheduler를 동작하지 못하도록 만듭니다. Event Scheduler가 DISABLED일 때, event scheduler 스레드는 실행되지 않으며(따라서 SHOW PROCESSLIST 출력에도 나타나지 않습니다), Event Scheduler 상태는 런타임 동안 변경할 수 없습니다.Event Scheduler 상태가 DISABLED로 설정되어 있지 않다면, event_scheduler는 SET을 사용하여 ON과 OFF 사이에서 전환할 수 있습니다. 이 변수를 설정할 때, OFF에는 0, ON에는 1을 사용할 수도 있습니다. 따라서 다음의 4가지 statement 중 어떤 것이든 mysql 클라이언트에서 Event Scheduler를 켜는 데 사용할 수 있습니다:
1SET GLOBAL event_scheduler = ON; 2SET @@GLOBAL.event_scheduler = ON; 3SET GLOBAL event_scheduler = 1; 4SET @@GLOBAL.event_scheduler = 1;
마찬가지로, 다음의 4가지 statement 중 어떤 것이든 Event Scheduler를 끄는 데 사용할 수 있습니다:
1SET GLOBAL event_scheduler = OFF; 2SET @@GLOBAL.event_scheduler = OFF; 3SET GLOBAL event_scheduler = 0; 4SET @@GLOBAL.event_scheduler = 0;
참고
Event Scheduler가 활성화되어 있을 때 super_read_only 시스템 변수를 활성화하면, events 데이터 딕셔너리 테이블에서 event의 “마지막 실행” 타임스탬프를 업데이트하는 것이 차단됩니다. 이는 Event Scheduler가 예약된 event를 실행하려고 시도할 때마다 서버 에러 로그에 메시지를 기록한 후 다음 번에 중지되도록 합니다. (이 상황에서 event_scheduler 시스템 변수는 ON에서 OFF로 변경되지 않습니다. 이는 이 변수의 실제 시작 또는 정지 상태가 구분될 수 있는 반면, DBA가 Event Scheduler를 활성화하거나 비활성화하려는 의도 가 거부된다는 의미를 내포합니다.) 이후 super_read_only가 비활성화되면, 서버는 필요에 따라 Event Scheduler를 자동으로 다시 시작합니다.
ON과 OFF는 숫자 값과 동등하지만, SELECT 또는 SHOW VARIABLES에 의해 표시되는 event_scheduler의 값은 항상 OFF, ON, 또는 DISABLED 중 하나입니다. DISABLED는 숫자 동등값이 없습니다. 이러한 이유로, 이 변수를 설정할 때는 일반적으로 1과 0보다 ON과 OFF를 선호합니다.
event_scheduler를 global 변수로 지정하지 않고 설정하려고 시도하면 에러가 발생한다는 점에 유의하십시오:
1mysql< SET @@event_scheduler = OFF; 2ERROR 1229 (HY000): Variable 'event_scheduler' is a GLOBAL 3variable and should be set with SET GLOBAL
주의
Event Scheduler를 DISABLED로 설정하는 것은 서버 시작 시에만 가능합니다. event_scheduler가 ON 또는 OFF인 경우에는 런타임 동안 DISABLED로 설정할 수 없습니다. 또한 Event Scheduler가 시작 시 DISABLED로 설정된 경우, 런타임 동안 event_scheduler의 값을 변경할 수 없습니다.
Event scheduler를 비활성화하려면 다음 두 가지 방법 중 하나를 사용하십시오:
1 --event-scheduler=DISABLED
my.cnf 또는 Windows 시스템의 my.ini)에서, 서버가 읽을 수 있는 위치(예: [mysqld] 섹션)에 다음 줄을 포함합니다:1event_scheduler=DISABLED
Event Scheduler를 활성화하려면, --event-scheduler=DISABLED 커맨드라인 옵션 없이 서버를 재시작하거나, 해당하는 경우 서버 설정 파일에서 event-scheduler=DISABLED가 포함된 줄을 제거하거나 주석 처리한 후 재시작하십시오. 또는 서버를 시작할 때 DISABLED 값 대신 ON(또는 1)이나 OFF(또는 0)를 사용할 수도 있습니다.
참고
event_scheduler가 DISABLED로 설정되어 있어도 event 조작 statement를 실행할 수 있습니다. 이러한 경우, 해당 statement 자체가 유효한 한 warning이나 에러는 생성되지 않습니다. 그러나 이 변수가 ON(또는 1)으로 설정될 때까지 예약된 event는 실행될 수 없습니다. 일단 이것이 수행되면, event scheduler 스레드는 스케줄링 조건을 만족하는 모든 event를 실행합니다.
MySQL 서버를 --skip-grant-tables 옵션과 함께 시작하면, event_scheduler는 커맨드라인이나 my.cnf, my.ini 파일에서 설정된 다른 어떤 값보다 우선하여 DISABLED로 설정됩니다(Bug #26807).
Event를 생성, 변경, 삭제하는 데 사용되는 SQL statement에 대해서는 Section 27.5.3, “Event Syntax”를 참조하십시오.
MySQL은 INFORMATION_SCHEMA 데이터베이스에 EVENTS 테이블을 제공합니다. 이 테이블은 서버에 정의된 예약된 event에 대한 정보를 얻기 위해 쿼리할 수 있습니다. 보다 자세한 내용은 Section 27.5.4, “Event Metadata” 및 Section 28.3.14, “The INFORMATION_SCHEMA EVENTS Table”를 참조하십시오.
Event 스케줄링과 MySQL 권한 시스템에 관한 정보는 Section 27.5.6, “The Event Scheduler and MySQL Privileges”를 참조하십시오.
27.5.1 Event Scheduler Overview
27.5.3 Event Syntax