-
2021-07-01 09:11:45
1.创建表 //创建一个表 CREATE TABLE accountno( id INT(10) PRIMARY KEY NOT NULL auto_increment, account_number VARCHAR(20) NOT NULL, date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); //查看定时器是否开启, show variables like 'event_scheduler'; 如果 event_scheduler Value OFF 执行:-- 开启定时器 0:off 1:on SET GLOBAL event_scheduler = 1; //每60秒删除过期5分钟的数据 DROP event IF EXISTS e_delete_wxauth; CREATE EVENT e_delete_wxauth ON SCHEDULE EVERY 60 SECOND DO DELETE FROM accountno WHERE DATE < DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 5 MINUTE); select * from mysql.event;
更多相关内容 -
mysql过期数据如何删除
2021-01-18 19:31:29mysql过期数据如何删除发布时间:2020-06-05 17:09:52来源:51CTO阅读:240作者:三月下面讲讲关于mysql过期数据如何删除,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完mysql过期...mysql过期数据如何删除
发布时间:2020-06-05 17:09:52
来源:51CTO
阅读:240
作者:三月
下面讲讲关于mysql过期数据如何删除,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完mysql过期数据如何删除这篇文章你一定会有所受益。
1、 查看MySQL是否开启了事件功能
查看命令:
show variables like '%sc%';
打开event_scheduler(临时开启,MySQL服务重启后时效)
SET GLOBAL event_scheduler = ON;
永久开启方法:my.cnf中[mysqld]添加event_scheduler=on #重启服务
2、 创建事件
create event myevent on SCHEDULE every 5 second do delete from Syslog.SystemEvents where ReceivedAt
说明:
ReceivedAt:数据库Syslog.Systemevents表中的时间字段
(date,INTERVAL expr type):
date:数据库当前时间CURRENT_TIMESTAMP()
INTERVAL:关键字(间隔)
expr:具体的时间间隔(-5)
type:时间单位:MICROSECOND间隔单位:毫秒
SECOND间隔单位:秒
MINUTE间隔单位:分钟
HOUR间隔单位:小时
DAY间隔单位:天
WEEK间隔单位:星期
MONTH间隔单位:月
QUARTER间隔单位:季度
YEAR间隔单位:年
SECOND_MICROSECOND复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒
MINUTE_MICROSECOND复合型,间隔单位:分、毫秒
MINUTE_SECOND复合型,间隔单位:分、秒
HOUR_MICROSECOND复合型,间隔单位:小时、毫秒
HOUR_SECOND复合型,间隔单位:小时、秒
HOUR_MINUTE复合型,间隔单位:小时分
DAY_MICROSECOND复合型,间隔单位:天、毫秒
DAY_SECOND复合型,间隔单位:天、秒
DAY_MINUTE复合型,间隔单位:天、分
DAY_HOUR复合型,间隔单位:天、小时
YEAR_MONTH复合型,间隔单位:年、月
如果存在事件,请先删除,删除命令:drop event if exists myevent;
3、 开启事件
alter event myevent on completion preserve enable;
4、关闭事件的命令:alter event myevent on completion preserve disable;
对于以上mysql过期数据如何删除相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。
-
mysql定时删除过期数据记录的简单方法
2020-09-09 01:48:07今天小编就为大家分享一篇mysql定时删除过期数据记录的简单方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
MySQL大表数据过期策略设计
2021-01-28 07:47:44项目初期未考虑数据过期问题,导致数据越来越多,几年之后数据直接上亿数据存储不合理,导致各种数据都存起来,无法有效删除表设计必要字段:新增create_time,update_time字段为什么需要提到表设计,因为笔者在工作...缘起:
你有没有在工作中接手一个烂摊子项目,数据库很多表数据上亿,而且越来越大?但是数据库中有效的数据只有几百万上千万,给你你该怎么办?
为什么会出现这种问题呢?
项目初期未考虑数据过期问题,导致数据越来越多,几年之后数据直接上亿
数据存储不合理,导致各种数据都存起来,无法有效删除
表设计必要字段:新增create_time,update_time字段
为什么需要提到表设计,因为笔者在工作中遇到过类似问题,某些表数据已经超过1亿,但是表字段没有创建时间和修改时间,这导致无法通过这个表来删除过期数据,如下:
user_item_info(uid, item_id,num)
经过血与泪的洗礼,笔者强烈建议表设计必须带上create_time,update_time字段,如
user_item_info(uid, item_id,num,create_time,update_time)
参考方案一:设计初期考虑并处理
玩家登陆时候删除过期数据。
如果表数据量在100w一下,可以在每天业务低峰期通过定时任务删除过期数据。
如果表数据量在100w以上,可以考虑一下这些数据是否有必要,如果是过期时间很快的是不是考虑一下redis?
如果确实有这么大的数据量,通过定时脚本,从从库查询过期数据,保存主键,通过脚本任务从主库慢慢删除
参考方案二:系统已经上线运行多年
如果数据不需要一定保证强一致性,可以允许丢失很小一部分,并且有用数据远远小于过期数据,有用数据在100w内,可以考虑换表,将老表的有用数据直接倒过去,具体操作流程:mysql从库导出有用数据--》mysql主库新建临时表--》将从库数据导入主机临时表--》修改表名,用临时表代替老表--》drop老表
优点:快
缺点:数据丢失小部分、使用场景很局限
有效数据多,又需要保证数据安全:操作流程:从从库导出过期数据的主键存起来--》编写小工具,通过主键,一行一行慢慢删除
优点:稳
缺点:慢,具体有多慢,给你举个例子:如果你需要删除8kw数据,导出数据的时间姑且不计算,单单计算删除的时间,笔者的mysql机器性能目前支持50qps的delete请求,笔者是开的两个进程,那么删除8kw数据需要多久呢?每天极限删除432w,需要18天,但这些都是理想状态下,笔者亲自经历过,实际删除时间需要打7折,所以时间会更长
总结
表不是随意设计的,避免埋坑,所以业务初期需要考虑数据的过期策略,分为4个不同场景的不同方案,如果线上有数据需要清理,笔者有2种方案供选择。
-
定时删除过期数据(MySQL数据表)
2019-05-29 21:57:25需求: Mysql用户信息表,每隔15天进行一次清理,只保留15天内的用户数据 1.表结构 class UserInfo(db.Model): __tablename__ = '用户信息表' id = db.Column(db.Integer, primary_key=True) username = db....需求: Mysql用户信息表,每隔15天进行一次清理,只保留15天内的用户数据
1.表结构
class UserInfo(db.Model): __tablename__ = '用户信息表' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(32), index=True ) id_card = db.Column(db.String(18), index=True) create_time = db.Column(db.DateTime, default=datetime.datetime.now)
2.开启事件调度
SET GLOBAL event_scheduler = 1; 或可以在配置my.cnf文件 中加上 event_scheduler = 1
3.查看是否开启事件调度
SHOW VARIABLES LIKE 'event_scheduler';
4 创建每天删除15天前数据
CREATE EVENT `del_tbl_expired_data` ON SCHEDULE EVERY 1 DAY STARTS '2019-05-29 17:33:43' ON COMPLETION NOT PRESERVE ENABLE DO CALL del_data_count (15);
上面代码表示从2019-05-29 17:33:43起每一天执行一次del_data_count这个存储过程,并带上参数
5. 创建存储过程mysql> delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义) mysql> CREATE PROCEDURE `del_data_count`(IN `date_inter` INT) -> BEGIN -> DELETE FROM UserInfo -> WHERE -> (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(unix_timestamp(create_time),'%Y%m%d'))) >=date_inter -> END$$ mysql> delimiter ; #将语句的结束符号恢复为分号
6 查看已有定时事件任务
SHOW EVENTS;
7.事件的开启与关闭
开启某事件: ALTER EVENT del_tbl_expired_data ON COMPLETION PRESERVE ENABLE; 关闭某事件: ALTER EVENT del_tbl_expired_data ON COMPLETION PRESERVE DISABLE;
-
详解MySQL的用户密码过期功能
2020-12-15 07:38:46Payment Card Industry,即支付卡行业,PCI行业表示借记卡、信用卡、预付...幸运的是,在MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。 这个特性已经添加到mysql.user数据表,但是它 -
MySQL自动删除过期数据
2018-10-08 21:41:01我们预约的数据表是Reserve(book_id,user_id,reserve_time),于是打算在MySQL里面每隔10秒钟删除过期的预约(当前时间-reserve_time &gt; 7200 秒)。百度了一下,基本上都是利用event实现的。下面是利用... -
MySql数据库账号密码过期导致Navicat连接不上.docx
2021-01-20 09:37:31MySql数据库账号密码过期导致Navicat连接不上 -
MYSQL定时清除备份数据的具体操作
2020-09-09 03:10:24主要给大家介绍了关于MYSQL定时清除备份数据的具体操作,文中通过示例代码介绍的非常详细,对大家学习或者使用MYSQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
MYSQL:指定时间删除过期数据
2017-12-12 17:32:45要求内容:要求在每天的凌晨一点定时删除sys_msg_offline表上...设计思路:采用mysql自带的event事件,设计一个存储过程用于删除数据,之后创建event运行存储过程即可。 表结构:DROP TABLE IF EXISTS `sys_msg_offlin -
mysql数据库过期处理
2021-03-22 16:12:28:You must reset your password using ALTER USER statement before executing this ...D:\ProgramData\MySQL\MySQL Server 5.7\my.ini,最后面加上skip-grant-tables,重启mysql服务 update mysql.user set authentic -
mysql定时删除过期数据记录方法
2019-09-18 05:58:201、 查看MySQL是否开启了事件功能查看命令:show variables like '%sc%';打开event_scheduler(临时开启,MySQL服务重启后时效)SET GLOBAL event_scheduler = ON;永久开启方法:my.cnf中[mysqld]添加event_... -
mysql定时删除过期数据记录
2017-10-16 09:53:44连接登录MySQL后,先查看MySQL是否开启了事件功能: 命令:show variables like '%sc%'; 发现event_sheduler是OFF关闭的; 2. 打开event_scheuler: 临时开启(mysql服务重启后之后失效)SET GLOBAL ... -
Mysql数据库定时删除三天以上过期数据
2019-10-18 17:03:01Mysql数据库定时删除三天以上过期数据简述定时器删除过期数据查询三天以上过期数据创建存储过程写Event事件打开事件事件开启与关闭:修改事件开启与关闭修改定时器时间间隔 简述 由于霍尼韦尔门禁项目要求,需要把... -
Mysql设置binlog过期时间并自动删除
2021-01-27 12:17:27问题:Mysql数据库由于业务原因,数据量增长迅速,binlog日志会增加较多,占用大部分磁盘空间。解决方案:出于节约空间考虑,可进行删除多余binary日志,并设置定期删除操作。1、查看binlog过期时间mysql> show ... -
MySQL Binlog Digger 4.8.0
2020-12-14 17:14:03MySQL Binlog Digger是一个基于图形界面的MySQL Binlog挖掘分析工具,可以为数据恢复提供undo sql回滚语句,它免安装,能对在线binlog与离线binlog进行分析,在选定在线binlog(甚至分析到最新日志)或离线binlog日志... -
Shell脚本自动备份MySQL到FTP并定期清理过期备份
2020-09-10 11:46:12主要介绍了Shell脚本自动备份MySQL到FTP并定期清理过期备份,本文中的脚本同时实现了定期清理旧备份数据的功能,这是一大特色,需要的朋友可以参考下 -
Navicat for Mysql由于过期引发的一系列问题
2020-11-23 15:37:251、今天遇到Navicat for Mysql由于过期,所以进行注册表进行数据清除,获得14天继续使用的权限, 2、但是当重新运行的时候报2003的错,于是在服务中将Mysql手动开启, 3、后又遇到1045 的问题,但是之前是我的mysql... -
MySQL之间数据同步
2018-07-08 23:23:29原文链接:...环境操作系统版本:CentOS7 64位 MySQL版本:mysql5.6.33 节点1IP:192.168.1.205 主机名:edu-mysql-01 节点2IP:192.168.1.206 主机名:edu-mysql... -
MySQL的用户密码过期功能详解
2021-01-19 13:20:53先说明两个术语。...PCI DSS,即PCI数据安全标准(Payment Card Industry Data Security Standard)是由PCI安全标准委员会制定,旨在使国际上采用一致的数据安全措施。详见: https://www.pcisecurity... -
Mysql 定时删除过期数据。
2019-03-25 11:35:40Mysql 第一步:检测事件触发器是否打开。 输入show variables like '%event_scheduler%'; 如果是OFF,则需要输入代码打开 开启event_scheduler sql指令: SET GLOBAL event_scheduler = ON; SET @@global.... -
Redis和mysql数据怎么保持数据一致的?
2022-01-11 13:41:37读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。 不管是先写MySQL数据库,再删除Redis缓存;还是先删除缓存,再写库, -
MySQL之windows下使用批处理定时备份数据库并删除过期数据备份
2018-05-30 11:37:281.创建批处理文件mysql_backup.batrem ******MySQL backup start******** @echo off ::删除超过30天的备份数据 forfiles /p "D:\db_backup" /m *_backup_*.sql -d -30 /c "cmd /c del /f @path"... -
面试官:谈谈Redis缓存和MySQL数据一致性问题
2020-11-10 12:24:11重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据库查询为null。每次请求落在数据库、并且高并发。数据库扛不住会挂掉。 解决方案 可以将查到的null设成该key的缓存对象。 当然,也... -
MySQL的用户密码过期功能介绍
2020-12-22 14:43:34从MySQL版本5.6.6版本起,添加了password_expired功能,它允许设置用户的过期时间。这个特性已经添加到mysql.user数据表,但是它的默认值是”N”。可以使用ALTER USER语句来修改这个值。例如:mysql> ALTER USER ... -
Redis和MySQL如何保持数据一致性
2022-03-14 19:48:09Redis和MySQL如何保持数据一致性? 在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数据库,如何保证不同... -
数据库系列——基于Canal实现MySQL增量数据同步
2020-12-12 02:34:07实际项目我们是配置MQ模式,配合RocketMQ或者Kafka,canal会把数据发送到MQ的topic中,然后通过消息队列的消费者进行消费处理。 这篇文章演示部署Canal,配合使用Kafka,同步数据到Redis 通过架构图,我们很清晰...