MySQL一个删除备份表(180天前)的存储过程

本文分享了一段用于自动删除180天前备份表的存储过程代码,并配置了定时任务,实现对zactemp数据库中旧表的定期清理。

闲来没事,写了一个删除zactemp(我们的备份库)180以前备份表的存储过程。配合定时任务每天跑,就可以做到自动删除180天前的临时表了。 

存储过程如下:

 

delimiter $$
CREATE  procedure drop_table()
BEGIN
            declare t_name varchar(100);
            declare isFinished int default false;
            declare log_table_list cursor for (select t.table_name from information_schema.`TABLES` t where t.TABLE_SCHEMA = 'zactemp' and t.CREATE_TIME <= date_add(now(),interval -180 day));
            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                   
                        set @@session.sql_log_bin=0;
                        set @sqltext=concat('drop table zactemp.',t_name,';');
                        PREPARE c_tab_stat from @sqltext;
                        execute c_tab_stat;
                        set @@session.sql_log_bin=1;                   
                end if;
                until isFinished
            end repeat;
            close log_table_list;
END $$
delimiter ;

 

定时任务:

CREATE DEFINER=`zd_dba`@`%` EVENT `drop_zactemp_table` ON SCHEDULE EVERY 1 DAY STARTS '2019-08-22 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call zactemp.drop_table()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值