Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 이벤트 메타데이터 조회 방법 – INFORMATION_SCHEMA.EVENTS 활용 가이드

MySQL 이벤트 메타데이터 조회 방법

MySQL에서 등록된 이벤트(Event)의 상세 정보, 즉 메타데이터를 확인하려면 INFORMATION_SCHEMA 데이터베이스의 EVENTS 테이블을 조회하면 됩니다. 이 테이블에는 서버에 정의된 모든 이벤트의 이름, 정의자(DEFINER), 실행 주기, 상태, 생성 및 마지막 실행 시각 등 운영에 필요한 다양한 정보가 담겨 있습니다.

조회 쿼리 예제

아래 쿼리는 'query' 데이터베이스에 속한 이벤트 중 이름에 'event'가 포함된 이벤트의 메타데이터를 조회합니다. 문장 끝에 \G를 붙이면 가로로 긴 결과를 세로 형태로 정렬해 주기 때문에 컬럼이 많은 경우 가독성이 크게 향상됩니다.

mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
-> WHERE EVENT_NAME LIKE '%event%'
-> AND EVENT_SCHEMA = 'query'\G

출력 결과 예시

위 쿼리를 실행하면 이벤트별로 하나의 행(row)이 반환됩니다. 아래는 일회성 이벤트의 출력 예시입니다.

*************************** 1. row ***************************
EVENT_CATALOG: def
EVENT_SCHEMA: query
EVENT_NAME: testing_event6
DEFINER: root@localhost
TIME_ZONE: SYSTEM
EVENT_BODY: SQL
EVENT_DEFINITION: INSERT INTO event_message(message, generated_at)
VALUES('EVENT ALTERED', NOW())
EVENT_TYPE: ONE TIME
EXECUTE_AT: 2017-11-22 20:03:52
INTERVAL_VALUE: NULL
INTERVAL_FIELD: NULL
SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
STARTS: NULL
ENDS: NULL
STATUS: DISABLED
ON_COMPLETION: PRESERVE
CREATED: 2017-11-22 20:02:52
LAST_ALTERED: 2017-11-22 21:01:17
LAST_EXECUTED: 2017-11-22 20:03:52
EVENT_COMMENT:
ORIGINATOR: 0
CHARACTER_SET_CLIENT: cp850
COLLATION_CONNECTION: cp850_general_ci
DATABASE_COLLATION: latin1_swedish_ci

반복형 이벤트의 경우 EVENT_TYPERECURRING으로 표시되며, INTERVAL_VALUE가 1이고 INTERVAL_FIELD가 MINUTE라면 1분 간격으로 실행되도록 정의된 이벤트임을 알 수 있습니다.

주요 컬럼 설명

컬럼명설명
EVENT_CATALOG이벤트가 속한 카탈로그 이름 (MySQL에서는 항상 'def')
EVENT_SCHEMA이벤트가 정의된 데이터베이스(스키마) 이름
EVENT_NAME이벤트 이름
DEFINER이벤트를 생성한 사용자 계정
TIME_ZONE이벤트 일정을 해석할 때 사용되는 시간대
EVENT_BODY / EVENT_DEFINITION이벤트 본문 유형(SQL)과 실제 실행되는 SQL 문
EVENT_TYPEONE TIME(일회성) 또는 RECURRING(반복)
EXECUTE_AT일회성 이벤트가 실행될 정확한 시각
INTERVAL_VALUE / INTERVAL_FIELD반복 이벤트의 실행 간격 값과 단위 (예: 1 MINUTE)
STARTS / ENDS반복 이벤트의 시작 및 종료 시각
STATUS이벤트 상태 — ENABLED, DISABLED, SLAVESIDE_DISABLED
ON_COMPLETION이벤트 만료 후 동작 — PRESERVE(유지) 또는 NOT PRESERVE(자동 삭제)
CREATED / LAST_ALTERED / LAST_EXECUTED각각 이벤트의 생성, 마지막 수정, 마지막 실행 시각
EVENT_COMMENT이벤트에 추가한 주석
ORIGINATOR이벤트가 생성된 서버의 server_id
CHARACTER_SET_CLIENT / COLLATION_CONNECTION / DATABASE_COLLATION이벤트 생성 시 적용된 문자셋 및 콜레이션 정보

참고: 다른 조회 방법

INFORMATION_SCHEMA.EVENTS 테이블 외에도 다음과 같은 문장으로 이벤트 정보를 확인할 수 있습니다.

SHOW EVENTS FROM query;                  -- 이벤트 목록 요약 조회
SHOW CREATE EVENT query.testing_event6; -- 이벤트 정의문 조회

SHOW EVENTS는 이벤트 목록을 간략하게 보여 주고, SHOW CREATE EVENT는 해당 이벤트를 그대로 재현할 수 있는 CREATE EVENT 문을 출력해 줍니다. 참고로 INFORMATION_SCHEMA.EVENTS 테이블을 조회하려면 해당 데이터베이스에 대한 EVENT 권한이 필요합니다.