mysql使用自带事件备份数据

查看是否开启事件调度器

只有开启事件调度器才能使用事件调度器实现定时任务(如linux的cron)

1.查看是否开启事件调度器:
方式一:
SELECT @@event_scheduler;
方式二:
SHOW VARIABLES LIKE 'event_scheduler';   #没有开启则无法启用定时器(0代表:off,1代表:on)
#若未开启则执行
SET GLOBAL event_scheduler = ON;              #开启定时器
#永久开启,在 MySQL 的配置文件中(通常是 my.cnf 或 my.ini)设置 
event_scheduler=ON 来永久开启

创建事件

-- 注意:事件中不允许锁表!!!!!!!

-- 先删除事件
DROP EVENT IF EXISTS log_bak;    
-- 创建事件
CREATE EVENT `log_bak`    -- 创建名字为user_event的事件
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR) -- 每隔一天执行一次,开始执行时间为明天凌晨1点整
ENABLE
DO call log_data_bak();

创建存储过程

对于数据量小的情况下可以直接使用以下脚本,数据量大不建议使用如下方式

-- 先删除存储过程
DROP PROCEDURE IF EXISTS log_bak; 
-- 创建存储过程
create procedure log_bak()
begin
    #清空备份表
    truncate table table_log_old;
    #备份源表
    insert into table_log_old  select * from table_log;
end

-- 测试存储过程是否正确
call log_data_bak() 

对于数据量大的情况可以使用修改表名的方式实现备份

-- 先删除存储过程
DROP PROCEDURE IF EXISTS log_bak; 
-- 创建存储过程
create procedure log_bak()
begin
	rename table  table_log  to table_log_old;
	create table table_log like table_log_old;
end

-- 测试存储过程是否正确
call log_data_bak() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值