博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时执行mysql数据库任务方案
阅读量:6390 次
发布时间:2019-06-23

本文共 3080 字,大约阅读时间需要 10 分钟。

hot3.png

命题: 每日 02:00 am 定时删除 表 t (id int primary key,ptime TIMESTAMP DEFAULT CURRENT_TIMESTAMP) 中三天以前的记录。

=======================================

方法一:操作系统
=======================================
(Windows)
在WINDOWS 操作系统中 的计划任务中定时操作,  
进入WINDOWS的命令行, (开始->运行-> 输入 cmd 回车)

C:\>at 02:00 /every:M,T,W,Th,F,S,Su "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -u root -p123 csdn -e "delete from t where ptime <date_sub(curdate(),interval 3 day)"

Added a new job with job ID = 1
C:\>at
Status ID   Day           Time      Command Line
-------------------------------------------------------------------------------
    1   Each Monday...      上午 02:00  "C:\Program Files\MySQL\MySQL
Server 5.1\bin\mysql.exe" -u root -p123 csdn -e "delete from t where ptime <date_
sub(curdate(),interval 3 day)"

C:\>

linux

1、创建backup.sh文件

#!/bin/sh
export MYSQLBAKDATE=`date +%Y%m%d`
# echo $MYSQLBAKDATE
export OUTFILE=$MYSQLBAKDATE'.TestDB.dbf'
# echo $OUTFILE
rm -f /bak/$OUTFILE
/usr/local/mysql/bin/mysqldump -uroot -p****** -R TestDB > /bak/$OUTFILE
gzip /bak/$OUTFILE
#END
如果考虑得再周全点,可以考虑删除一个星期或一个月之前的备份文件。
2、使用crontab -e命令编辑计划任务,加入以下一条记录
30 02 * * * sh /usr/local/mysql/backup.sh
表示在凌晨2点30分做备份

=======================================

方法二:MySQL事件 Event
=======================================
MySQL 5.1.6 之后,你可以直接使用类似于oralce job的mysql event
首先,检查一下你的MYSQL是否打开了这项功能。

mysql> show variables like '%sc%';

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

默认下是未打开的,你可以到 my.ini (windows)/ my.cnf (linux/unix) 参数文件中定义后重启mysqld

或者直接 set global event_scheduler=on;

mysql> show variables like '%sc%';

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)

创建这个event

mysql> CREATE EVENT myevent
    -> ON SCHEDULE EVERY 1 DAY STARTS '2009-10-24 02:00:00'
    -> DO
    ->  delete from t where ptime <date_sub(curdate(),interval 3 day);
Query OK, 0 rows affected (0.09 sec)
mysql> show events;
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
| Db   | Name    | Definer        | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | O
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
| csdn | myevent | root  | SYSTEM    | RECURRING | NULL       | 1              | DAY            | 2009-10-24 02:00:00 | NULL | ENABLED |  
+------+---------+----------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+--
1 row in set (0.00 sec)
mysql>

关于EVENT的介绍(很遗憾,没有中文版的)

19.4. Using the Event Scheduler
19.4.1. Event Scheduler Overview  
19.4.2. Event Scheduler Configuration  
19.4.3. Event Syntax  
19.4.4. Event Metadata  
19.4.5. Event Scheduler Status  
19.4.6. The Event Scheduler and MySQL Privileges  
关于create event 的语法和例子。
12.1.11. CREATE EVENT Syntax

转载于:https://my.oschina.net/u/1034176/blog/370036

你可能感兴趣的文章
kylin的安装与配置
查看>>
我的java学习之路--Reflect专题
查看>>
Android Intent的setClass和setClassName的区别
查看>>
php-fpm nginx 使用 curl 请求 https 出现 502 错误
查看>>
西宁海关首次对外展示截获500余件有害生物标本
查看>>
泸州移动能源产业园首片薄膜电池组件成功下线
查看>>
韩国瑜会见陆委会主委陈明通:别给高雄念紧箍咒
查看>>
交通部:加大人工售票力度保障农民工春运出行
查看>>
物联网的学术层、应用层和行为层的基本介绍
查看>>
初探github(一)
查看>>
源码分析之 LinkedList
查看>>
免SDK实现微信/支付宝转账打赏功能
查看>>
安卓.9图片制作
查看>>
MySQL 高可用性keepalived+mysql双主
查看>>
Python环境安装及数据基本预处理-大数据ML样本集案例实战
查看>>
【详解】TiDB 2.0 GA is here !
查看>>
iOS开发-模拟网络环境
查看>>
Redux执行流程梳理
查看>>
iOS 指纹识别
查看>>
说说 Vue.js 组件
查看>>