MYSQLイベント操作ステップレコード

主にmysqlイベントの作成プロセス、enable、delete、viewなどのステートメントを記録します。

  1. 82 サーバーの waf_data_copy1 テーブルを例として、ストアド プロシージャを作成し、テーブルの時刻 (日時) フィールドを削除し、60 日前のデータを削除します。
use cloud;
DROP PROCEDURE IF EXISTS pro_clean_data;
CREATE PROCEDURE pro_clean_data()
    BEGIN
      DELETE FROM WAF_data_copy1 WHERE DATE(TIME) <= DATE(DATE_SUB(NOW(),INTERVAL 60 DAY));
    END 

このうちTIMEは判断の基準となる時間です。
ここでは 60 日より古いデータを削除しますが、数か月より古いデータを削除する必要がある場合 (例として 3 か月)、INTERVAL 3 MONTH です。

注意一个问题,是关于mysql中BEGIN和END的坑,这个问题是查询定界符没更改导致的。如果是直接操作后台mysql进行语句编写时, 
你在建立触发器之前,先执行这个语句 DELIMITER $$(这一句把原来默认的查询结尾定界符--分号 改为 $$,然后,你就可以在begin ....end 中
间 的每一句加 分号,最后在end的 后面,以$$ 作结束。 因为新的语句定界符已经是$$ 。
触发器建立后,你可以根据情况,把查询定界符$$ 改为原来的分号 , 使用 delimiter ;

mysql> DELIMITER $$
mysql>  CREATE PROCEDURE pro_clean_data()
    ->     BEGIN
    ->        DELETE FROM WAF_data_copy1 WHERE DATE(TIME) <= DATE(DATE_SUB(NOW(),INTERVAL 60 DAY));
    ->      END$$
Query OK, 0 rows affected (0.05 sec)

mysql> DELIMITER ;
 
  1. イベントを作成する
CREATE EVENT IF NOT EXISTS event_time_cleaner
ON SCHEDULE EVERY 1 DAY STARTS '2021-10-13 14:16:00'
ON COMPLETION PRESERVE
DO CALL pro_clean_data()
  1. イベントが有効になっているかどうかを確認する
show VARIABLES like 'event_scheduler';
  1. イベントを開始します
set global event_scheduler=on;
建议配置文件添加相关参数,确保当数据库重启后,事件依然生效
在my.cnf中的[mysqld]部分添加,
event_scheduler=on
然后重启mysql
  1. 作成されたイベントを表示する 2 つの方法
show events;
select * from information_schema.events;
  1. イベントの削除
drop event event_time_cleaner;
  1. クエリ ステートメントを介して実行結果を表示します。 を参照してください。
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44157851/article/details/120743368