MySQL定期自动删除表
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表。但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。http://blog.itpub.net/292
千家信息网最后更新 2025年11月06日MySQL定期自动删除表单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表。
但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。
http://blog.itpub.net/29254281/viewspace-1141985/
由于Master-Slave结构,在Drop表之前,设置@@session.sql_log_bin=0,那么Drop的行为就没有记录到binlog,所以Slave的日志表就会被保留。
模拟环境如下,
配合Linux crontab即可实现定期自动删除表的功能。
一定不要把sql_log_bin设置为global级别,不能犯迷糊
但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。
http://blog.itpub.net/29254281/viewspace-1141985/
由于Master-Slave结构,在Drop表之前,设置@@session.sql_log_bin=0,那么Drop的行为就没有记录到binlog,所以Slave的日志表就会被保留。
模拟环境如下,
- mysql> show tables;
- +---------------------------------+
- | Tables_in_edmond |
- +---------------------------------+
- | sod_song_log_2014_1_22_13_18_20 |
- | sod_song_log_2014_2_22_13_18_20 |
- | sod_song_log_2014_3_22_13_18_20 |
- | sod_song_log_2014_4_22_13_18_20 |
- +---------------------------------+
- 4 rows in set (0.00 sec)
- delimiter $$
- CREATE procedure drop_table()
- BEGIN
- declare t_name varchar(64);
- declare isFinished int default false;
- declare log_table_list cursor for (select table_name from information_schema.tables where table_schema ='EDMOND' and table_name like'sod_song_log_%');
- declare continue handler for not found set isFinished=true;
- open log_table_list;
- repeat
- fetch log_table_list into t_name;
- if isFinished = false then
- if datediff(now(),replace(t_name,'sod_song_log_',''))>30 then
- set @@session.sql_log_bin=0;
- set @sqltext=concat('drop table ',t_name,';');
- PREPARE c_tab_stat from @sqltext;
- execute c_tab_stat;
- set @@session.sql_log_bin=1;
- end if;
- end if;
- until isFinished
- end repeat;
- close log_table_list;
- END $$
- delimiter ;
- mysql> call drop_table();
- Query OK, 0 rows affected (0.28 sec)
- mysql> show tables;
- +---------------------------------+
- | Tables_in_edmond |
- +---------------------------------+
- | sod_song_log_2014_4_22_13_18_20 |
- +---------------------------------+
- 1 row in set (0.00 sec)
- mysql> select now() from dual;
- +---------------------+
- | now() |
- +---------------------+
- | 2014-04-22 17:58:24 |
- +---------------------+
- 1 row in set (0.00 sec)
配合Linux crontab即可实现定期自动删除表的功能。
一定不要把sql_log_bin设置为global级别,不能犯迷糊
日志
行为
过程
下线
分表
功能
单位
只是
多条
环境
级别
结构
结果
在线
查询
迷糊
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全教程视频教程
数据库中字段编码设计
互联网数据库课件ppt
美国云服务器 恒创科技官网
数据库的通信技术
我的世界服务器一个月要多少元
不符合网络安全立法
ICT网络技术路线
专升本4567空间数据库
分布式时控数据库
人工智能与网络安全专业的联系
成都各种软件开发
海康硬盘录像机时间服务器地址
手机麻将软件开发费用
防封号软件开发者
服务器配置网关厂家直供
数据库设计公众号
深圳市易联网络技术
怎么修改服务器上的源代码
电脑网络安全模式下打开应用
我的世界服务器优化模组
安徽云都网络技术有限公司
serv文件复制ftp服务器
物联网短距离网络技术
数据库程度
数据库一条指令修改gbk
家居软件开发公司电话
台江网络技术信息系统运维公司
服务器设置网络
ssl代理服务器的作用