mysql event 备份数据_mysql event 时间备份数据

-- 创建存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS `dep_syn_data`$$

CREATE PROCEDURE `dep_syn_data` (date_inter INT,table_name VARCHAR(255),filed VARCHAR(225))

BEGIN

SET @soutable = CONCAT(table_name) ;

SET @dateformat = CONCAT(DATE_FORMAT(CURDATE(),'%m'));

-- 备份表名规则 一年 三个表

IF @dateformat BETWEEN 1 and 4 THEN

set @tnum = '1';

ELSEIF @dateformat BETWEEN 5 and 8 THEN

set @tnum = '2';

ELSE

set @tnum = '3';

END IF;

SET @tabletr = CONCAT(@soutable,'_',DATE_FORMAT(CURDATE(),'%Y'),'_',@tnum) ;

-- 创建备份表

SET @cretmpstr = CONCAT( 'create table if not exists ' ,@tabletr, ' like ' ,@soutable ) ;

PREPARE stmt2 FROM @cretmpstr ;

EXECUTE stmt2 ;

-- 查询数据条数

SET @countstr = CONCAT('select count(id) into @countnum from ' ,@soutable,

' where (TO_DAYS(NOW()) - TO_DAYS(',filed,')) >=', CAST(date_inter AS CHAR));

PREPARE stmt1 FROM @countstr ;

EXECUTE stmt1 ;

SET @num = @countnum;

-- 循环备份数据 只执行10次

SET @i = 1;

WHILE @num > 0 DO

IF @i > 3 THEN

SET @num = 0;

ELSE

SET @csqlstr = CONCAT( 'insert into ' ,@tabletr, ' select * from ' ,@soutable,

' where (TO_DAYS(NOW()) - TO_DAYS(',filed,')) >=',

CAST(date_inter AS CHAR),' limit 2000;') ;

SET @dsqlstr = CONCAT( 'delete from ' ,@soutable, ' where (TO_DAYS(NOW()) - TO_DAYS(',filed,')) >=',

CAST(date_inter AS CHAR),' limit 2000;') ;

PREPARE stmt3 FROM @csqlstr ;

PREPARE stmt4 FROM @dsqlstr ;

EXECUTE stmt3 ;

EXECUTE stmt4 ;

SET @i = @i+1;

END IF;

END WHILE;

END$$

DELIMITER ;

-- 创建event 触发器

DROP EVENT IF EXISTS `backup_wbs_tt_router_data`;

CREATE EVENT `backup_wbs_tt_router_data` ON SCHEDULE EVERY 1 DAY STARTS NOW() ON COMPLETION NOT PRESERVE ENABLE DO

CALL dep_syn_data (180,'wbs_tt_router','insert_time');

-- 开启触发器

ALTER EVENT backup_wbs_tt_router_data ON COMPLETION PRESERVE ENABLE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值