目次
MySQLのprocesslistにevent_schedulerがいた
MySQLのprocesslistを見ると、event_schedulerが出てきました。
mysql> show processlist;
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+
| 55 | event_scheduler | localhost | NULL | Daemon | 103848 | Waiting on empty queue | NULL |
+-------+-----------------+-----------------+------+---------+--------+--------------------------------------------------------+------------------+
event_schedulerというユーザが確認できました。event_schedulerは定期実行をしてくれるスレッドで、cronのような役割をしています。MySQLの設定で、event_schedulerを動かすかどうかを決めることができます。MySQL5.7まではデフォルトでOFFになっていましたが、MySQL8からはデフォルトでONになるようになりました。
event_schedulerの設定方法(ON / OFFを切り替える)
event_schedulerの設定方法を記載しておきます。現在の設定を確認すると、ONになっておりました。
mysql > SHOW VARIABLES like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
event_schedulerをOFFにするには、
mysql> SET GLOBAL event_scheduler = 'OFF';
event_schedulerをONにするには、
mysql> SET GLOBAL event_scheduler = 'ON';
と実行します。これだけだと再起動時には、MySQL5.7まではOFF、MySQL8からはONに戻ってしまうので、my.cmfにも追記しておきましょう。
event_schedulerでイベントを作成
ONにしたときの定期実行するイベントを作成します。
CREATE EVENT <イベント名> ON SCHEDULE <スケジュール> DO <実行するクエリ>
上記のような形式でコーディングをします。
mysql> CREATE EVENT test1
-> ON SCHEDULE
-> EVERY 3 MINUTE
-> DO
-> SELECT * FROM test1;
Query OK, 0 rows affected (0.03 sec)
このようにすると、3分毎にtest1テーブルにselect参照するイベントが作成できました。
event_schedulerのイベント一覧を表示
作成したイベント一覧を確認するときは、
mysql > show events
上記のコマンドで表示することができます。
event_schedulerのイベントを削除
作成したイベントを削除するときは、
drop event test1
このようにすることで削除できます。test1の部分にイベント名を記載しましょう。