MySQL定期自动删除表
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表。但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。http://blog.itpub.net/292
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
厦门中拓互联网络科技有限公司
互联网与新科技
宜安科技 互联网金融
远拓互联网科技
北京禾田雨橡互联网科技
时间互联网络科技
互联网高科技股票
成都仁贤领冠互联网科技有限公司
青海省互联网新科技
福州新华互联网科技学校 知乎
武汉健翔互联网络科技有限公司
消费医药和互联网科技
深圳育鹏互联网科技有限公司招聘
青海科技产业互联网发展
风投北京互联网科技
江苏互联网科技小贷
陕西九四连强互联网科技有限公司
美国五大互联网科技公司市值多少
长沙易易互联网科技有限公司
平安好医生打造互联网科技医疗
广州淘业互联网络科技
广州紫鲸互联网科技有限公司
友谊互联网络科技
成都铂石互联网科技做什么的
互联网科技产业特征
互联网科技如何创业
科技互联网的核心竞争力
上海京穆互联网科技有限公司
长沙渺峰互联网科技有限公司
北京瑞云互联网科技有限公司