Mysql 每天日志表每天自动分区

目标:

visitor_log收集线上访问日志,数据越来越多,目标每天对visitor_log按天新增一个分区

计划任务开启

  • 查看event是否开启 : SHOW VARIABLES LIKE ‘%event_sche%’;
  • 将事件计划开启 : SET GLOBAL event_scheduler = 1;
  • 将事件计划关闭 : SET GLOBAL event_scheduler = 0;

建表语句:

CREATE TABLE `visitor_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `uicode` varchar(32) NOT NULL,
  `actcode` varchar(10) DEFAULT '',
  `F` varchar(30) DEFAULT '',
  `uid` bigint(20) NOT NULL,
  `element` varchar(32) DEFAULT '',
  `create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `i_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `day` int(11) DEFAULT NULL,
  `h` int(11) DEFAULT NULL,
  `i` int(11) DEFAULT NULL,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`,i_time),
  KEY `idx_itimef` (`i_time`,`F`)
) ENGINE=InnoDB AUTO_INCREMENT=4782637 DEFAULT CHARSET=utf8
partition by range(to_days(i_time))
(PARTITION p20180128 VALUES LESS THAN (to_days('2017-12-11')),
PARTITION p20180129 VALUES LESS THAN (to_days('2018-01-28')));

分区字段:i_time

创建计划任务:

DELIMITER  $$
CREATE EVENT  visitor_log_auto_partition
ON SCHEDULE 
              EVERY 1 day
    STARTS str_to_date('2018-01-29 00:00:00','%Y-%m-%d %T')
    COMMENT 'upv日志表,每天自动增加分区'
   DO
         BEGIN
 		  set @c_table='visitor_log';
set @c_day=DATE_SUB(curdate(),INTERVAL -1 DAY);
set @p_c_day=DATE_FORMAT(NOW(),'%Y%m%d');
set @p_name=concat('p_',@c_table,@p_c_day);
set @p_sql=concat('ALTER TABLE  ',@c_table,'  ADD PARTITION (PARTITION  ',@p_name,'   VALUES LESS THAN (TO_DAYS ("',@c_day,'")))');
select @p_sql;
PREPARE auto_create_partion from @p_sql;
execute auto_create_partion;
END  $$
delimiter ;

查看计划任务

show events;

删除计划任务:

DROP EVENT IF EXISTS visitor_log_auto_partition

表分区查看:

explain partitions select * from visitor_log;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值