Mysql 定时任务删除过期数据
1、查看数据库是否开启定时调度
SHOW VARIABLES LIKE 'event_scheduler';//查看OFF为关
SET GLOBAL event_scheduler = ON;//设置开启,重启后失效
防止重启后失效
设置my.cnf,Linux一般在/etc/my.cnf ,
在[mysqld]下增加
event_scheduler = ON //重启后生效
2、执行命令
DROP event IF EXISTS e_delete_channel;
CREATE EVENT e_delete_channel
ON SCHEDULE
EVERY 1 DAY STARTS '2020-10-30 00:00:00'
DO
DELETE FROM t_instant_channel WHERE occurtime < DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 7 DAY);
————————————————
实例配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 1. Mysql 创建表需添加创建数据时间的字段,如 created_at mysql> show create table website_record\G; *************************** 1. row *************************** Table: website_record Create Table: CREATE TABLE `website_record` ( ` id ` int(11) NOT NULL AUTO_INCREMENT, `created_at` datetime(6) NOT NULL, `instance_id` varchar(200) NOT NULL, `status` int(11) NOT NULL, `env_region` varchar(100) NOT NULL, `app_name` varchar(200) DEFAULT NULL, `resource_name` varchar(200) NOT NULL, `system_name` varchar(200) DEFAULT NULL, PRIMARY KEY (` id `) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 2. 测试插入部分数据 3. mysql> insert into website_record values(10, '2023-09-19 08:26:31' , '111' ,1, 'test001' , 'test001' , '001' , '002' ); 4. Query OK, 1 row affected (0.00 sec) 5. 6. mysql> insert into website_record values(10, '2023-09-19 08:26:31' , '111' ,1, 'test001' , 'test001' , '001' , '0022' ); 7. ERROR 1062 (23000): Duplicate entry '10' for key 'PRIMARY' 8. mysql> insert into website_record values(11, '2023-09-19 08:26:31' , '111' ,1, 'test001' , 'test001' , '001' , '0022' ); 9. Query OK, 1 row affected (0.01 sec) 10. 11. mysql> insert into website_record values(12, '2023-09-19 08:26:31' , '111' ,1, 'test001' , 'test001' , '001' , '0022' ); 12. Query OK, 1 row affected (0.00 sec) 13. 14. mysql> insert into website_record values(13, '2023-09-19 08:26:31' , '111' ,1, 'test001' , 'test001' , '001' , '0022' ); 15. Query OK, 1 row affected (0.00 sec) 16. 17. mysql> 18. mysql> select * from website_record; 19. +----+----------------------------+-------------+--------+------------+----------+---------------+-------------+ 20. | id | created_at | instance_id | status | env_region | app_name | resource_name | system_name | 21. +----+----------------------------+-------------+--------+------------+----------+---------------+-------------+ 22. | 10 | 2023-09-19 08:26:31.000000 | 111 | 1 | test001 | test001 | 001 | 002 | 23. | 11 | 2023-09-19 08:26:31.000000 | 111 | 1 | test001 | test001 | 001 | 0022 | 24. | 12 | 2023-09-19 08:26:31.000000 | 111 | 1 | test001 | test001 | 001 | 0022 | 25. | 13 | 2023-09-19 08:26:31.000000 | 111 | 1 | test001 | test001 | 001 | 0022 | 4. 创建定时任务event ###创建事件event 开始时间2023-9-19 16:25:00 每一分钟执行一次,删除website_record表中created_at字段时间早于现在1分钟的数据。 DROP event IF EXISTS e_delete_channel; CREATE EVENT e_delete_channel ON SCHEDULE EVERY 1 Minute STARTS '2023-9-19 16:25:00' DO DELETE FROM website_record WHERE created_at < DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 1 Minute); 显示 events scheduler 调度事件 mysql> show events\G; *************************** 1. row *************************** Db: datasource Name: e_delete_channel Definer: root@localhost Time zone: SYSTEM Type: RECURRING Execute at: NULL Interval value: 1 Interval field: MINUTE Starts: 2023-09-19 16:25:00 Ends: NULL Status: ENABLED Originator: 0 character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec) 5. 验证数据是否已经被定时任务删除,定时任务是否已经生效 mysql> select * from website_record; Empty set (0.00 sec) |
分类:
mysql数据库,阿里云rds
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2017-09-20 Jenkins代码管理