MySql常用维护命令6
2015-09-25 15:37
701 查看
内容摘要:
本篇主要是对项目运行过程中会产生的一些数据维护,更新,参数设置等常用操作的记录和总结,方面在运用是有个参考。主要内容会涉及可参考目录简介。本编包含第6章节。
目录简介:
1. 数据库启停及状态检查
2. CREATE 操作项目
3. ALTER 操作项目
4. 数据库参数查看和设置
5. 客户端权限管理
6. 事件调度/临时触发器/定制任务
7. 触发器、存储过程
标签:
MySql,Create,Alter,Show Parameter,Event,Trigger,Procedure,Privilige
6. 事件调度/临时触发器/定制任务
有时我们需要完成一些定时任务或周期性的任务触发,比如用户表中状态字段定时刷新。在mysql中有Event_Scheduler可以完成实现,中文名称可以叫做计划任务、事件调度,这个是在5.1版本之后才引入的新功能。定时性操作可以不再依赖外部程序,而直接使用数据库本身提供的功能。要是用该功能,可以通过如下基本步骤。
1. 检查是否开启事件调度,是event_scheduler参数控制.如下示例,具体方法可以参考第4节介绍内容。
mysql>SHOW VARIABLES LIKE ‘event_scheduler’;
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
2. 若为OFF表示未打开,可以通过
mysql>SET GLOBAL event_scheduler = 1;(参考第4节内容)
3. 创建事件(CREATE EVENT)
参考如下语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND|HOUR_MINUTE|HOUR_SECOND|MINUTE_SECOND}
语法说明:
1. 大写内容是创建event的关键字
2. []括起来的内容是可选项,|分隔的是对应的选项,使用时选择其中之一
3. 小写内容是自定义部分,如计划的名称、计划实施时间周期。
4. ON SCHEDULE 计划任务,有两种设定计划任务的方式:
1. AT 时间戳,用来完成单次的计划任务。
2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。
在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。
在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
提示: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。
5. ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。
6. 参数Enable和Disable表示设定事件的状态。Enable表示系统将执行这个事件。Disable表示系统不执行该事件。
7. 注释会出现在元数据中,它存储在information_schema表的COMMENT列,最大长度为64个字节。'comment'表示将注释内容放在单引号之间,建议使用注释以表达更全面的信息。
8. DO sql_statement字段表示该event需要执行的SQL语句或存储过程。这里的SQL语句可以是复合语句,例如:
BEGIN
CREATE TABLE test1;//创建表(需要测试一下)
DROP TABLE test2;//删除表
CALL proc_test1();//调用存储过程
END
建议 sql_statement尽量使用简单语句,有复杂的逻辑可以配合存储过程一起使用。
4. 示例介绍
4.1每隔一秒自动调用e_procedure()存储过程
CREATE EVENT IF NOT EXISTS e_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL e_ procedure ();
4.2 每天定时清空test库中的test表
CREATE EVENT e_truncate_test_table
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test. test;
4.3 5天后开启每天定时清空test库中的test表,一个月后停止执行
CREATE EVENT e_truncate_test_table
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE test.test;
5. 修改事件(ALTER EVENT)
语法类似创建:
ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
5.1 临时关闭事件
ALTER EVENT e_eventname DISABLE;
5.2 开启事件
ALTER EVENT e_eventname ENABLE;
5.3将任务执行周期每天改为7天执行一次
ALTER EVENT e_ eventname
ON SCHEDULE EVERY 7 DAY;
6. 删除事件(DROP EVENT)
DROP EVENT [IF EXISTS] event_name
注:对于event对象同样可以在mysql.event和information_schema.events中通过select语句查询出来已经建立的event。或者在mysql命令行中执行SHOW EVENTS查看。
本篇主要是对项目运行过程中会产生的一些数据维护,更新,参数设置等常用操作的记录和总结,方面在运用是有个参考。主要内容会涉及可参考目录简介。本编包含第6章节。
目录简介:
1. 数据库启停及状态检查
2. CREATE 操作项目
3. ALTER 操作项目
4. 数据库参数查看和设置
5. 客户端权限管理
6. 事件调度/临时触发器/定制任务
7. 触发器、存储过程
标签:
MySql,Create,Alter,Show Parameter,Event,Trigger,Procedure,Privilige
6. 事件调度/临时触发器/定制任务
有时我们需要完成一些定时任务或周期性的任务触发,比如用户表中状态字段定时刷新。在mysql中有Event_Scheduler可以完成实现,中文名称可以叫做计划任务、事件调度,这个是在5.1版本之后才引入的新功能。定时性操作可以不再依赖外部程序,而直接使用数据库本身提供的功能。要是用该功能,可以通过如下基本步骤。
1. 检查是否开启事件调度,是event_scheduler参数控制.如下示例,具体方法可以参考第4节介绍内容。
mysql>SHOW VARIABLES LIKE ‘event_scheduler’;
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
2. 若为OFF表示未打开,可以通过
mysql>SET GLOBAL event_scheduler = 1;(参考第4节内容)
3. 创建事件(CREATE EVENT)
参考如下语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND|HOUR_MINUTE|HOUR_SECOND|MINUTE_SECOND}
语法说明:
1. 大写内容是创建event的关键字
2. []括起来的内容是可选项,|分隔的是对应的选项,使用时选择其中之一
3. 小写内容是自定义部分,如计划的名称、计划实施时间周期。
4. ON SCHEDULE 计划任务,有两种设定计划任务的方式:
1. AT 时间戳,用来完成单次的计划任务。
2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。
在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。
在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。
提示: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。
5. ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。
6. 参数Enable和Disable表示设定事件的状态。Enable表示系统将执行这个事件。Disable表示系统不执行该事件。
7. 注释会出现在元数据中,它存储在information_schema表的COMMENT列,最大长度为64个字节。'comment'表示将注释内容放在单引号之间,建议使用注释以表达更全面的信息。
8. DO sql_statement字段表示该event需要执行的SQL语句或存储过程。这里的SQL语句可以是复合语句,例如:
BEGIN
CREATE TABLE test1;//创建表(需要测试一下)
DROP TABLE test2;//删除表
CALL proc_test1();//调用存储过程
END
建议 sql_statement尽量使用简单语句,有复杂的逻辑可以配合存储过程一起使用。
4. 示例介绍
4.1每隔一秒自动调用e_procedure()存储过程
CREATE EVENT IF NOT EXISTS e_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL e_ procedure ();
4.2 每天定时清空test库中的test表
CREATE EVENT e_truncate_test_table
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test. test;
4.3 5天后开启每天定时清空test库中的test表,一个月后停止执行
CREATE EVENT e_truncate_test_table
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE test.test;
5. 修改事件(ALTER EVENT)
语法类似创建:
ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]
5.1 临时关闭事件
ALTER EVENT e_eventname DISABLE;
5.2 开启事件
ALTER EVENT e_eventname ENABLE;
5.3将任务执行周期每天改为7天执行一次
ALTER EVENT e_ eventname
ON SCHEDULE EVERY 7 DAY;
6. 删除事件(DROP EVENT)
DROP EVENT [IF EXISTS] event_name
注:对于event对象同样可以在mysql.event和information_schema.events中通过select语句查询出来已经建立的event。或者在mysql命令行中执行SHOW EVENTS查看。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复