>데이터 베이스 >MySQL 튜토리얼 >MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 예약을 구현하는 방법

MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 예약을 구현하는 방법

WBOY
WBOY원래의
2023-08-03 09:43:501787검색

MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 예약을 구현하는 방법

데이터베이스를 개발하고 관리할 때 데이터베이스 일일 백업, 주간 통계 보고서 등 특정 작업을 정기적으로 수행해야 하는 경우가 종종 있습니다. MySQL은 예약된 작업 일정을 구현하는 데 도움이 되는 매우 유용한 도구인 이벤트 스케줄러를 제공합니다. 이 기사에서는 MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 스케줄링을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. 이벤트 스케줄러를 켜세요

이벤트 스케줄러를 사용하기 전에 먼저 MySQL 이벤트 스케줄러가 켜져 있는지 확인해야 합니다. 다음 명령을 통해 이벤트 스케줄러의 상태를 확인할 수 있습니다.

SHOW VARIABLES LIKE 'event_scheduler';

결과가 Off인 경우 이벤트 스케줄러를 수동으로 켜야 합니다. 다음 명령으로 활성화할 수 있습니다.

SET GLOBAL event_scheduler = ON;

성공적으로 활성화된 후 SHOW VARIABLES LIKE 'event_scheduler' 명령을 다시 실행하여 이벤트 스케줄러가 활성화되었는지 확인할 수 있습니다. .

2. 예약된 작업 만들기

이벤트 스케줄러를 사용하여 예약된 작업을 만들려면 다음 단계를 수행해야 합니다.

  1. 이벤트 스케줄러 만들기

CREATE EVENT 문을 사용하여 이벤트 스케줄러를 만듭니다. 구체적인 구문은 다음과 같습니다.

CREATE EVENT event_name
ON SCHEDULE Schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'string']
DO event_body;

여기서 event_name은 이벤트 및 일정은 스케줄링 주기이고, event_body는 이벤트의 특정 작업입니다.

  1. 일정 주기 설정

일정 주기는 실제 필요에 따라 설정할 수 있습니다. 다음은 일반적으로 사용되는 예약 주기입니다.

  • 1초에 한 번 실행: EVERY 1 SECOND
  • 1분에 한 번 실행: EVERY 1 MINUTE
  • 1시간에 한 번 실행: EVERY 1 HOUR
  • 하루에 한 번 실행: EVERY 1 DAY
  • 일주일에 한 번 실행: EVERY 1 WEEK
  • 한 달에 한 번 실행: EVERY 1 MONTH

필요에 따라 적절한 예약 기간을 선택할 수 있습니다.

  1. 이벤트의 구체적인 동작을 작성하세요

event_body 부분에 구체적인 동작 로직을 적어주세요. SQL 문을 사용하여 데이터베이스 작업을 수행하거나 저장 프로시저 또는 함수를 호출할 수 있습니다.

다음은 매일 오전 3시에 데이터베이스를 백업하도록 예약된 작업의 예입니다.

CREATE EVENT backup_event
ON SCHEDULE EVERY 1 DAY
STARTS '2022-01-01 03:00:00'
DO
BEGIN

DECLARE backup_file VARCHAR(255);
SET backup_file := CONCAT('/var/backup/db_', DATE_FORMAT(NOW(), '%Y%m%d_%H%i%s'), '.sql');
SET @sql := CONCAT('mysqldump -hlocalhost -uroot -ppassword dbname > ', backup_file);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END ;

위 코드는 backup_event라는 이벤트 스케줄러를 생성하고, 하루에 한 번 실행되도록 스케줄링 주기를 설정합니다. event_body 부분에서는 먼저 백업 파일의 경로를 저장하기 위해 backup_file 변수를 정의합니다. 그런 다음 CONCAT 함수를 사용하여 백업 파일 경로를 연결한 다음 SET 문을 사용하여 @sql 변수에 백업 명령을 할당합니다. 마지막으로 PREPARE 및 EXECUTE 문을 사용하여 백업 명령을 실행합니다.

3. 예약된 작업 관리

CREATE EVENT 문을 사용하여 예약된 작업을 만든 후 다음 명령을 통해 이를 관리할 수 있습니다.

  • 모든 이벤트 스케줄러 보기: SHOW EVENTS; 스케줄러: SHOW EVENT event_name;
  • 이벤트 스케줄러 활성화: ALTER EVENT event_name ENABLE;
  • 이벤트 스케줄러 비활성화: ALTER EVENT event_name DISABLE;
  • 이벤트 스케줄러의 실행 시간 수정: ALTER EVENT event_name ON SCHEDULE AT 'date_time' ;
  • 통과된 관리 명령을 통해 예약된 작업을 쉽게 확인하고 관리할 수 있습니다.

요약

이 글에서는 MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 스케줄링을 구현하는 방법을 소개합니다. 이벤트 스케줄러를 생성하고, 스케줄링 주기를 설정하고, 특정 연산 로직을 작성함으로써 정기적으로 데이터베이스 작업을 실행하는 기능을 쉽게 구현할 수 있습니다. 개발자는 실제 필요에 따라 예약된 작업의 예약 주기 및 작업 논리를 사용자 정의할 수 있습니다. MySQL의 이벤트 스케줄러는 데이터베이스 개발 및 관리에 더 많은 유연성과 편의성을 제공합니다.

참조 코드:

--이벤트 스케줄러 생성

CREATE EVENT backup_event

ON SCHEDULE EVERY 1 DAY
STARTS '2022-01-01 03:00:00'
DO
BEGIN

DECLARE backup_file VARCHAR(255);
SET backup_file := CONCAT('/var/backup/db_', DATE_FORMAT(NOW(), '%Y%m%d_%H%i%s'), '.sql');
SET @sql := CONCAT('mysqldump -hlocalhost -uroot -ppassword dbname > ', backup_file);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END;

-- 보기 모든 이벤트 스케줄러

SHOW EVENTS;


--지정된 이벤트 스케줄러에 대한 정보 보기

SHOW EVENT backup_event;


--이벤트 스케줄러 활성화

ALTER EVENT backup_event ENABLE;


--이벤트 스케줄러 비활성화

ALTER EVENT backup_event DISABLE ;


-- 이벤트 스케줄러 실행 시간 수정

ALTER EVENT backup_event ON SCHEDULE AT '2023-01-01 03:00:00';

위 내용은 MySQL의 이벤트 스케줄러를 사용하여 예약된 작업 예약을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.