应用:发送到mysql数据库的备份及删除历史数据
一、定时备份
- 备份方式:使用的是navicat premium工具的自动运行中的备份功能:
点击自动运行,新建批处理作业,在下方点击备份,选择需要备份的数据库,选择可用的工作,双击
2.列表中显示了已经选择的工作:
3.点击保存,提示输入文件名
4. 输入数据备份,这样自动运行列表中就有了:
5.点击设置任务计划,弹出框进行常规和触发器设置:
新建触发器
6.定时任务设置成功后,点击自动运行
双击数据备份任务,点击开始
二、定时删除历史数据
- 在navicat premium左侧的数据库列表中,右键单击事件,点击新建事件:
- 在定义空白框中输入:
/*删除一天前的所有数据,86400000是24h*/
DELETE FROM xz_sensor_data WHERE sensor_suffix_time <= (unix_timestamp() * 1000 - 86400000) - 设置计划
- 设置完成后,点击保存,提示输入事件名,delete_data
- 此事件的其他信息
- 关于mysql的事件定时任务(参考)
-
mysql数据库,指定到某一时间,它就自动执行相应的操作?sql语句该怎么写?
mysql要实现定时执行sql语句就要用到Event
具体操作如下:
先看看看event 事件是否开启
show variables like '%sche%';
如没开启,则开启。需要数据库超级权限
set global event_scheduler =1;
创建存储过程 update_a (注:就是你要执行的sql语句)
mysql> create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);
创建一个定时任务:event e_updateA
mysql> create event if not exists e_updateA
-> on schedule every 60 second ---设置60秒执行一次
-> on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行
-> on completion preserve
-> do call update_a(); ---执行update_a()存储过程
创建Event之后,sql语句就定时执行一次。
关闭事件任务
mysql> alter event e_updateA ON
-> COMPLETION PRESERVE DISABLE;
开启事件任务
mysql> alter event e_updateA ON
-> COMPLETION PRESERVE ENABLE;
–查看时间调度器是否开启
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
–开启时间调度器
SET GLOBAL event_scheduler = 1;
或
SET GLOBAL event_scheduler = ON;
–创建定时任务
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call day_update();
CREATE EVENT if not exists event_day_update
ON SCHEDULE EVERY 1 DAY STARTS '2016-01-04 00:20:00'
ON COMPLETION PRESERVE
ENABLE
DO call day_update(); --day_update是存储过程
–开启定时任务
alter event event_day_update ON COMPLETION PRESERVE ENABLE;
–关闭定时任务
alter event event_day_update ON COMPLETION PRESERVE DISABLE;
设置事件在mysql启动时自动开启方法
1. 开启事件,通过动态参数修改:SET GLOBAL event_scheduler = ON;
2. 在my.cnf中添加event_scheduler=ON。(如果没有添加的话,mysql重启事件又会回到原来的状态)