文档章节

通过定时任务执行mysql的定期删除和新建分区,此处是按日分区

mickelfeng
 mickelfeng
发布于 2017/02/06 17:58
字数 368
阅读 39
收藏 1

使用python脚本作为命令脚本,linux的定时任务来每天定时执行

#!/usr/bin/python  
# -*- coding: utf8 -*-  
import pymysql  
import datetime  
import calendar  
  
#要分区的表  
table_name = 'my_table'  
#连接数据库的信息  
host,user,passwd,db = ('127.0.0.1','root','123456','test')  
#保留数据的天数  
days = 2  
  
#===================================================  
''''' 
#根据月分区,计算出要删除的上月分区名称和下月新增的分区名称 
def add_months(dt,months): 
    month = dt.month - 1 + months 
    year = dt.year + month / 12 
    month = month % 12 + 1 
    day = min(dt.day,calendar.monthrange(year,month)[1]) 
    return dt.replace(year=year, month=month, day=day) 

today = datetime.datetime.today() 
last_date = add_months(today,-1)  
next_date = add_months(today,1) 
next_next_date = add_months(next_date,1) 

last_p = 'p%s' % last_date.strftime('%Y%m') 
next_p = 'p%s' % next_date.strftime('%Y%m') 
'''  
  
#===================================================  
#根据天分区,根据保留的天数计算出要删除的分区名称和要新增的分区名称  
today = datetime.datetime.today()  
last_date = today-datetime.timedelta(days)  
next_date = today+datetime.timedelta(1)  
next_next_date = today+datetime.timedelta(2)  
  
last_p = 'p%s' % last_date.strftime('%Y%m%d')  
next_p = 'p%s' % next_date.strftime('%Y%m%d')  
  
sql_add_p = 'alter table %s add partition (partition %s values less than (to_days(\'%s\')))' %(table_name,next_p,next_next_date.strftime('%Y-%m-%d'))  
sql_del_p = 'alter table %s drop partition %s' %(table_name,last_p)  
  
  
#===================================================  
#连接数据库,执行删除和新增分区的sql语句  
#print sql_add_p  
#print sql_del_p  
print '==============================================\nstart work:\n%s\n%s' %(sql_add_p,sql_del_p)  
conn = pymysql.connect(host,user, passwd, db)  
cur = conn.cursor()  
cur.execute(sql_add_p)  
cur.execute(sql_del_p)  
conn.close()  

 如果是以前没有分过区的表,则需要先创建一个分区,然后才能执行上面的代码

 

本文转载自:http://314858770.iteye.com/blog/1674884

mickelfeng

mickelfeng

粉丝 237
博文 2801
码字总数 604377
作品 0
成都
高级程序员
私信 提问
MySQL架构优化实战系列3:定时计划任务与表分区

一 定时计划任务 1、概论 mysql计划任务可以定时更新数据库表或者做大文件的汇总表。 2、配置

汤抗
2016/07/08
0
0
(部分转载)Presto上使用SQL遇到的一些坑

遇到过的问题: 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。这个时候Presto的做法是从MySQL数据库端拉取最基本的数据,然后再去做进一步的处理,例如统计等聚合操作。 举个栗...

Avner
2018/08/07
538
0
mysql 动态新建以及删除分区表

因为项目需要,最近研究了一下在mysql数据库下如何动态新建以及删除分区表。如果全部借助存储过程的话,新建以及删除分区表在逻辑上比较死板、不灵活,而且还容易出错。因此,我新建了一个数...

heiansan
2013/06/06
2.8K
0
根分区满导致mysql无法启动解决

故障描述:论坛访问出现502,开始以为php端口被占用,按常规查端口发现并没有被占用。后又出现mysql无法连接,报(2002) notconnect错误,问百度可能是空间满了。查看根分区已用100%。再查论坛...

武当剑客
2014/10/14
220
0
zabbix 一次惨痛的分区经历

问题 今天来到公司,像往常一样打开zabbix,突然发现没有数据被收集,于是快速检查了其他的图形,发现都没有数据,于是定位到了服务端的问题,检查日志发现:zabbix日志突然报查询history和h...

滕先生
2018/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue nodejs商城项目-搭建express框架环境

本文转载于:专业的前端网站➯Vue nodejs商城项目-搭建express框架环境 1.express-project 搭建express框架环境 安装express generator生成器 通过生成器自动创建项目 配置分析 安装 cnpm i -...

前端老手
8分钟前
1
0
maven项目A引入maven项目B的jar包

首先打开 项目B 的 pom 文件,加入如下配置 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin<......

嘴角轻扬30
11分钟前
2
0
一个突然出现的诡异bug

突然从昨天的某个时刻开始,程序报错了,作为接管该项目的我只能从找日志开始:这是打印的日志 日志已经很清楚了,说的的验签或者解密失败了! 好吧,我把代码拉下来瞅瞅,这是打印日志的地方...

布袋和尚_爱吃鱼
17分钟前
2
0
按位与(&)运算符应用实践

按位与运算是将数字转换成二进制格式进行位运算。 1、&的运算方法(奇偶性判断) 整数与“1”进行按位与运算,运算结果为“0”表示为偶数,运算结果为“1”表示为奇数。 <?php//将数组中...

尤金
27分钟前
2
0
java常量池

https://blog.csdn.net/qq_41376740/article/details/80338158

南桥北木
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部