ホームページ >データベース >mysql チュートリアル >MySQL のイベント スケジューラを使用してスケジュールされたタスクのスケジューリングを実装する方法
MySQL のイベント スケジューラを使用してスケジュールされたタスクのスケジューリングを実装する方法
データベースを開発および管理する場合、データベースの毎日のバックアップ、週次の統計レポートなど、特定のタスクを定期的に実行する必要があることがよくあります。 MySQL は、スケジュールされたタスクのスケジューリングの実装に役立つイベント スケジューラという非常に便利なツールを提供します。この記事では、MySQL のイベント スケジューラを使用してスケジュールされたタスクのスケジューリングを実装する方法を紹介し、対応するコード例を示します。
1. イベント スケジューラをオンにする
イベント スケジューラを使用する前に、まず MySQL イベント スケジューラがオンになっているかどうかを確認する必要があります。次のコマンドを使用してイベント スケジューラのステータスを確認できます:
SHOW VARIABLES LIKE 'event_scheduler';
結果がオフの場合は、イベント スケジューラを手動でオンにする必要があります。次のコマンドでオンにできます:
SET GLOBALevent_scheduler = ON;
オンに成功した後、SHOW を実行するとイベント スケジューラがオンになったことを確認できます。 「event_scheduler」のような変数; コマンドを再度実行します。
2. スケジュールされたタスクの作成
イベント スケジューラを使用してスケジュールされたタスクを作成するには、次の手順が必要です:
イベント スケジューラを作成するには、CREATE EVENT ステートメントを使用します。具体的な構文は次のとおりです。
CREATE EVENT イベント名
ON SCHEDULE スケジュール
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'string']
DOevent_body;
ここで、event_name はイベントの名前、schedule はスケジュール期間、event_body はイベントの特定の操作です。
スケジュール期間は、実際のニーズに応じて設定できます。一般的に使用されるスケジューリング サイクルは次のとおりです。
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 ステートメントを使用してスケジュールされたタスクを作成した後、次のコマンドを使用してタスクを管理できます:
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 中国語 Web サイトの他の関連記事を参照してください。