amegonの雑なブログ

日常的なものから技術的なものまでメモの雑記

MariaDB イベントスケジューラ関連

MariaDB でイベントを使用したいときに使う設定コマンドのメモ。

状態確認

show variables like '%event%';
MariaDB [zabbix]> show variables like '%event%';
+--------------------------------------------------------+-----------+
| Variable_name                                          | Value     |
+--------------------------------------------------------+-----------+
| binlog_annotate_row_events                             | OFF       |
| event_scheduler                                        | OFF       |
| performance_schema_events_stages_history_long_size     | -1        |
| performance_schema_events_stages_history_size          | -1        |
| performance_schema_events_statements_history_long_size | -1        |
| performance_schema_events_statements_history_size      | -1        |
| performance_schema_events_waits_history_long_size      | -1        |
| performance_schema_events_waits_history_size           | -1        |
| replicate_annotate_row_events                          | OFF       |
| replicate_events_marked_for_skip                       | REPLICATE |
+--------------------------------------------------------+-----------+
10 rows in set (0.00 sec)

MariaDB [zabbix]>

設定変更

一時的な設定変更

DB にログインして実行

set GLOBAL event_scheduler=ON;
MariaDB [zabbix]> set GLOBAL event_scheduler=ON;
MariaDB [zabbix]> show variables like '%event%';
+--------------------------------------------------------+-----------+
| Variable_name                                          | Value     |
+--------------------------------------------------------+-----------+
| binlog_annotate_row_events                             | OFF       |
| event_scheduler                                        | ON        |
| performance_schema_events_stages_history_long_size     | -1        |
| performance_schema_events_stages_history_size          | -1        |
| performance_schema_events_statements_history_long_size | -1        |
| performance_schema_events_statements_history_size      | -1        |
| performance_schema_events_waits_history_long_size      | -1        |
| performance_schema_events_waits_history_size           | -1        |
| replicate_annotate_row_events                          | OFF       |
| replicate_events_marked_for_skip                       | REPLICATE |
+--------------------------------------------------------+-----------+
10 rows in set (0.00 sec)

MariaDB [zabbix]>

永続的な設定変更

my.cnf に記載して event 設定を永続的に有効化

my.cnfファイルの [mysqld] セクションに以下を記載する。

event_scheduler = on

イベントの作り方

実行間隔は1日単位だけではなく、月だったり年だっだと色々設定可能。
以下の例では1日おきの設定で記載。

delimiter $$
create event <イベント名>
on schedule every 1 day
starts 'YYYY-MM-DD hh:mm:ss'
do
begin
     <実行するクエリ>
end$$
delimiter ;

イベント一覧の見方

show events\G

イベントの編集

delimiter $$
alter event <イベント名>
on schedule every 1 day
starts 'YYYY-MM-DD hh:mm:ss'
do
begin
     <実行するクエリ>
end$$
delimiter ;

イベントの削除

drop event <イベント名>;