涉及技术有Sql语句、存储过程、MySQL事件
需求:按月对每个表进行分表备份操作
实现:编写一个存储过程1、重命名现有的表名后缀添加上一个月,然后创建相同结构的新表。2、定时执行该任务
备份的表名:mmall_order
存储过程名称:p_month_backups
定时任务名称:month_call_order_backups
一、创建存储过程
create procedurep_month_backups()BEGIN# 创建表名后缀,上个月SET @dateStr = DATE_FORMAT(date_add(now(),interval-1 month), '%Y_%m');
#这里直接重命名原来的表SET @renameTableName = CONCAT("rename table mmall_order to mmall_order_",@dateStr);PREPARE stmt FROM @renameTableName;EXECUTEstmt;
#创建新表SET @createStr = CONCAT("create table mmall_order as select * from mmall_order_",@dateStr," where 1=2");PREPARE stmt FROM @createStr;EXECUTEstmt;END ;
步骤依次是:重命名原来的表,创建新表
二、调用存储过程测试是否能达到理想的结果