MySQL定期自动删除表
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表。但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询。http://blog.itpub.net/292
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
汽车服务器检测
个人服务器可以下载游戏玩吗
换卡显示服务器异常
网络安全我们在行动视频
互联网科技新零售动态
服务器信息发送失败
bi工程师和软件开发工程
国家网络安全宣传周将于每年九月
网络技术中关键路线
软件开发概要设计谁提供
有关网络安全问题的作文材料
永安软件开发外包公司排名
绝地求生这么选服务器
华硕软件开发笔记本电脑配置
多用户上传数据的服务器
从事网络技术工作的男人
杭州互联网软件开发定制费用
龙之谷服务器断开连接
会计信息系统和网络技术
《护苗网络安全课》总结
壹零软件开发深圳有限公司
ubuntu 软件开发
有vultr的服务器怎么上网
软件开发 看不到未来
云课堂网络安全
大学网络安全重点
绝地求生更换服务器封号
从事网络技术工作的男人
计算机网络技术基础第五版笔记
网络安全专业靠谱吗