使用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()
如果是以前没有分过区的表,则需要先创建一个分区,然后才能执行上面的代码
分享到:
相关推荐
实现mysql 每天定时自动给数据库表追加分区,包含存储计划和存储过程
MySQL事件调度器允许在预定义的时间执行特定任务,如定期创建和删除分区。这个事件可能会按照每天、每周或每月等周期触发,确保分区表始终保持最优状态。 "表.txt"文件可能包含了一些示例表结构或者分区设计的说明...
总结来说,MySQL的定时执行脚本功能通过`EVENT`对象提供了强大的定时任务能力,允许开发者按需设置执行频率,执行各种SQL操作,包括数据更新、备份、清理等。这不仅提高了效率,也降低了系统的复杂性。通过熟练掌握...
`EVENT_AUTO_CREATE_DROP_PARTITION.sql`可能定义了一个数据库事件,定期执行删除过期分区的存储过程。这个事件可以根据业务需求设置,比如每天、每周或每月运行一次。 ```sql DELIMITER // CREATE EVENT drop_old_...
windows定时任务备份mysql数据库脚本
SpringBoot是一个开源的Java基础框架,...结合Mybatis和MySQL,可以在不重启应用的情况下调整定时任务的执行周期,以适应业务的变化需求。这种机制为复杂的后台任务调度提供了极大的便利,使得任务管理更加高效和可靠。
3、SpringCloudSchedule定时任务(使用mybatis读写mysql数据库, spring实现定时任务, 按照间隔时间或固定时间方式执行定时任务) 4、定时自动运行任务(在数据库中设置好定时时间,及运行的程序,及参数) 5、C#...
首先,我们需要了解Spring Boot中的定时任务是通过`@Scheduled`注解实现的,它来自于Spring的Task模块。这个注解可以标记在方法上,使得该方法按预定的时间间隔执行。例如: ```java import org.springframework....
要使用APScheduler,首先需要安装库,然后定义一个处理XML和数据库操作的函数,最后配置调度器来定期执行这个函数。 XML报文的解析是另一个关键步骤。Python的标准库中包含ElementTree模块,它能方便地处理XML文档...
在IT行业中,构建一个基于Spring MVC、Spring、MySQL和Maven的定时任务系统是一项常见的需求。这个系统通常用于执行周期性的后台操作,如数据同步、报表生成或清理过期数据等。下面将详细讲解如何利用这些技术实现...
【MySQL 表分区详解】 ...综上所述,MySQL表分区是大数据场景下的有力工具,通过合理设计和使用,可以显著提升数据库的性能和管理效率。在实际应用中,应结合业务需求和查询模式选择合适的分区策略。
在IT行业中,定时任务是许多应用不可或缺的一部分,用于执行定期的后台处理,如数据同步、报表生成、清理任务等。Spring Boot作为一个轻量级的Java框架,提供了与各种定时任务库集成的能力,其中Quartz是一个广泛...
MySQL表分区支持不同的分区策略,例如range分区、list分区和hash分区等。 **range分区**是根据数据范围来进行分区的一种方法。它允许数据根据列值的范围被分配到不同的分区中。例如,可以根据日期、数值或其他连续...
MySQL数据库的自动定时备份是数据库管理中的重要环节,它确保了数据的安全性和可恢复性,尤其是在发生意外情况如系统故障、硬件损坏或人为错误时。本教程将详细讲解如何设置MySQL数据库的自动定时备份,包括步骤、所...
总之,《MySQL分区分表方案实践手册》将引导读者全面了解MySQL分区的理论与实践,通过实例解析和最佳实践分享,帮助读者在面对大数据挑战时,能够有效利用分区技术提升数据库性能,实现高效的数据管理。
生成sql文件备份和还原,经过本人测试,可以使用。实现定时功能
- 提供了对MySQL表分区的操作接口,包括创建、追加和删除分区。 - 追加分区意味着可以在表已经存在分区的基础上增加新的分区,适应不断增长的数据。 - 创建分区时,可以根据业务需求设置分区条件,如日期范围、...