首页 > 数据库 >Mysql 定时任务删除过期数据

Mysql 定时任务删除过期数据

时间:2023-09-20 17:36:28浏览次数:36  
标签:过期数据 website test001 09 19 2023 record 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.	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)

  

标签:过期数据,website,test001,09,19,2023,record,Mysql,定时
From: https://www.cnblogs.com/weifeng1463/p/17717854.html

相关文章

  • phpstudy无法启动mysql(启动之后立马关闭)
    好久没有打开本地环境,直到昨天打开phpstudy,正常启动,但是在任务管理器中发现没有mysql服务于是在mysql的bin目录下执行.\mysqld.exe--install  mysql服务是有了,但这个问题就来了重启phpstudy无法启动mysql注意:在此之前注意备份mysql数据,查看现在设置的mysql密码,以便本地项......
  • MySQL高级12-事务原理
    一、事务概念事务是一组操作的集合,他是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或者撤销请求操作,即这些操作要么同时成功,要么同时失败。二、事务特性原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败一致性(Consistency):事......
  • mysql数据库服务双主搭建
    mysql数据库服务双主搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 3、主库1(master)配置配置mysql的启动配置文件vim/etc/my.cnf#开启binlog日志log......
  • mysql 行级锁应用
    当在MySQL中需要实现从scheduler_task表中选择一个status='todo'的任务,并将其状态设置为"ongoing"和worker_id设置为"1",同时确保线程安全并返回该任务的信息时,我们需要使用行级锁来实现。介绍在多线程环境下,当多个线程同时执行数据库操作时,可能会出现并发冲突的情况。为了确保线......
  • Mysql中如何批量更新数据库中某个字段值中的部分内容;
    在平时的开发过程中,偶尔会遇到需要批量更新数据库中某个字段值的部分内容,比如某个字段存储的是图片的URL路径,这个路径中的域名无法访问了,需要更新为另一个ip地址。Mysql中提供了REPLACE函数:可以使用了REPLACE函数来替换原来字段中的一部分数据为新值。UPDATEcar_data_hisSETc......
  • MySQL的字段数量以及长度限制
    一、InnoDB行格式行格式紧凑的存储特性增强的可变长度列存储大型索引键前缀支持压缩支持支持的表空间类型REDUNDANTNNNNsystem,file-per-table,generalCOMPACTYNNNsystem,file-per-table,generalDYNAMICYYNNsystem,file-per-table,gener......
  • mysqldump导出命令
    导出数据备份数据[root@sf105113bin]#mysqldump-h127.0.0.1-P3306-uroot-p--add-locks-qdbname>dbname.sql//参数依次为:-h主机-p端口-u用户名-p密码--add-locks:导出过程中锁定表,完成后回解锁。-q:不缓冲查询,直接导出至标准输出2.  ......
  • mysql数据库服务主从搭建
    mysql数据库服务主从搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 如果显示以下内容就关闭mysql服务重新启动 3、主库(master)配置配置mysql的启动配置......
  • Systick定时器详解
    目录一.SysTick简介1.SysTick概念2.Systick寄存器二.代码详解1.寄存器方式驱动2.固件库方式驱动一.SysTick简介1.SysTick概念Systick属于系统内核中的外设,其详细使用说明和寄存器介绍都在M3权威指南手册中.Systick内嵌在NVIC中,系统定时器是一个24bit的向下递......
  • MySQL运行原理与基础架构
    原始出处:http://harisxiong.blog.51cto.com/7513022/1351370 1.MySQL基础       MySQL是一个开放源代码的关系数据库管理系统。原开发者为瑞典的MySQLAB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用。 2008年MySQL公司被Sun公司收......