需求:由于一张表按照日期水平分表,所以需要定时做一些事情,比如说分表。
表名格式:historydata_XXXX(如history_20170218)
具体需求:每日定时创建后续15天空表。
一、打开mysql 定时任务
方法1:修改my.ini
添加一行:
event_scheduler=ON
方法2:命令行状态输入
mysql> set global event_scheduler =1;
二、添加存储过程
1、右键函数,选择新建函数
2、选择‘过程’
3、该存储过程不用参数
4、输入创建表的存储过程
代码:
BEGIN declare start int default 0; set start=0; WHILE start < 15 DO set @sql_create_table = concat( 'CREATE TABLE IF NOT EXISTS historydata_', date_format(FROM_UNIXTIME(unix_timestamp()+86400*start),'%Y%m%d'), "( `oper_id` int(10) NOT NULL AUTO_INCREMENT, `oper_role` int(11) NOT NULL, `oper_type` varchar(30) NOT NULL DEFAULT '', `oper_content` varchar(1000) NOT NULL DEFAULT '', `oper_cls` int(10) NOT NULL DEFAULT '0', `oper_date` datetime NOT NULL, `oper_serverid` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`oper_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8"); PREPARE sql_create_table FROM @sql_create_table; EXECUTE sql_create_table; #Routine body goes here... set start = start +1; end WHILE; END
5、保存,输入存储过程名
名字:proc_auto_create_historydata_table
三、创建定时事件
1、新建事件
输入事件过程
call proc_auto_create_historydata_table()
2、定义定时计划任务
3、保存事件
输入时间名称:event_auto_create_historydata_table
四、检验
经查验,该定时任务无误。
enjoy it !
参考链接
http://blog.csdn.net/tantexian/article/details/50317829
http://blog.csdn.net/ljxfblog/article/details/41175923