mysql历史数据备份_Mysql存储过程历史表备份
原文:
Mysql存储过程历史表备份
应用背景
SCADA采集系统需要将实时数据存入历史表。问题1:如何更简单的添加历史数据?2.海量历史数据,比如年数据,如何快速筛选 画曲线?
利用mysql的事件,每小时存一次采集数据;
每月备份历史表,并且将原表清空。每个月1号凌晨1点,将历史表备份,名称命名为his_aic_20190501 01:00,将原表清空。
1.历史表备份
1.1存储过程
BEGIN
INSERT INTO his_dic (ParentID,PointID,DICName,DICValue,StateDesc,AlarmThreshold,AlarmLevel,AlarmEnable,UpdatedTime)
select ParentID,PointID,DICName,DICValue,StateDesc,AlarmThreshold,AlarmLevel,AlarmEnable,UpdatedTime
FROM dic on duplicate key update
ParentID=VALUES( ParentID),PointID=VALUES(PointID ),DICName=VALUES(DICName ),DICValue=VALUES(DICValue ),StateDesc=VALUES(StateDesc ),AlarmThreshold=VALUES( AlarmThreshold),AlarmLevel=VALUES(AlarmLevel ),AlarmEnable=VALUES( AlarmEnable),UpdatedTime=VALUES(UpdatedTime );
INSERT INTO his_doc (ParentID,PointID,DOCName,DetectDOStatus,DOCValue,StateDesc,ControlEnable,UpdatedTime)
SELECT ParentID,PointID,DOCName,DetectDOStatus,DOCValue,StateDesc,ControlEnable,UpdatedTime
FROM doc on duplicate key update
ParentID=VALUES(ParentID ),PointID=VALUES(PointID ),DOCName=VALUES(DOCName ),DetectDOStatus=VALUES( DetectDOStatus),DOCValue=VALUES(DOCValue ),StateDesc=VALUES(StateDesc ),ControlEnable=VALUES( ControlEnable),UpdatedTime=VALUES(UpdatedTime );
INSERT INTO his_aic (ParentID,PointID,AICName,AICValue,Unit,sAICValue,MaxAICValue,MinAICValue,`Enable`,UpdatedTime)
SELECT ParentID,PointID,AICName,AICValue,Unit,sAICValue,MaxAICValue,MinAICValue,`Enable`,UpdatedTime
FROM aic on duplicate key update
ParentID=VALUES(ParentID ),PointID=VALUES(PointID ),AICName=VALUES(AICName ),AICValue=VALUES( AICValue),Unit=VALUES(Unit ),sAICValue=VALUES(sAICValue ),MaxAICValue=VALUES(MaxAICValue ),MinAICValue=VALUES(MinAICValue ),`Enable`=VALUES( `Enable`),UpdatedTime=VALUES(UpdatedTime);
END
1.2使用说明
步骤1 使用navicat工具管理Mysql,函数右键新建函数,在跳出得向导框选择过程,点击下一步。
步骤2 这里不需要任何操作,直接点击完成,因为没有参数传入传出。
步骤3 将上面的存储过程代码复制进如下图框,点击运行即可。
步骤4点击保存,输入名称。
结果运行结果如下。
2.创建每隔一小时保存历史数据任务
2.1 建立事件任务event_To_His:
CREATE EVENT if not exists event_To_His
on schedule every 1 hour
on completion preserve
do call To_His();
2.2 使用说明
步骤1选择自己的数据,点击右键,选择cmd模式输入。
步骤2将以上代码拷贝运行即可。
结果运行结果如下。
备注:
如果报错查看event是否开启: show variables like '%sche%';
将事件计划开启: set global event_scheduler=1;
关闭事件任务: alter event e_test ON COMPLETION PRESERVE DISABLE;
开户事件任务: alter event e_test ON COMPLETION PRESERVE ENABLE;
3.历史表按月备份
3.1存储过程
BEGIN
create table his_aic_temp like his_aic;
set @i=now();
set @sqlstr=CONCAT('rename table his_aic to `his_aic_',cast(@i as char),'`');
select @sqlstr;
PREPARE renameHisBak FROM @sqlstr;
EXECUTE renameHisBak;
rename table his_aic_temp to his_aic;
create table his_dic_temp like his_dic;
set @i=now();
set @sqlstr=CONCAT('rename table his_dic to `his_dic_',cast(@i as char),'`');
select @sqlstr;
PREPARE renameHisBak FROM @sqlstr;
EXECUTE renameHisBak;
rename table his_dic_temp to his_dic;
create table his_doc_temp like his_doc;
set @i=now();
set @sqlstr=CONCAT('rename table his_doc to `his_doc_',cast(@i as char),'`');
select @sqlstr;
PREPARE renameHisBak FROM @sqlstr;
EXECUTE renameHisBak;
rename table his_doc_temp to his_doc;
END
3.2使用说明
详见1.2
4.建立每个月的第一天凌晨1点执行事件
4.1建立任务event_HistoryBak:
CREATE DEFINER=`root`@`localhost`
EVENT `event_HistoryBak`
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)
ON COMPLETION PRESERVE ENABLE
DO call HistoryBak();
4.2使用说明
详见2.2
QQ群:20120449
mysql历史数据备份_Mysql存储过程历史表备份相关推荐
- mysql 不锁表备份_Mysql不锁表备份之Xtrabackup的备份与恢复
一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...
- MySql定期备份数据到历史表的解决方案
前言 互联网项目最大不瓶颈还是在于数据库,80%的数据请求只针对20%的数据:特别是电商项目,体现的更为明显,大量的数据请求,即使MySql在一主多从,读写分离,使用了Elasticsearch.Me ...
- mysql数据库分表备份脚本_MySQL分库分表备份脚本
MySQL分库分表备份脚本 vim /data/mysqlback.sh #! /bin/bash BAKPATH=/data/mysql-back MYUSER=root MYPASS=" ...
- mysql数据库分表备份脚本_MySQL分库分表备份数据库脚本的操作
MySQL分库分表备份数据库脚本的操作 发布时间:2020-05-26 16:52:23 来源:51CTO 阅读:134 作者:三月 本篇文章给大家主要讲的是关于MySQL分库分表备份数据库脚本的操作 ...
- mysql 5.7 差异备份_MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结
之前详细介绍了Mysqldump备份工具使用,下面说下MySQL5.7之后新添加的备份工具mysqlpump.mysqlpump是mysqldump的一个衍生,mysqldump备份功能这里就不多说了 ...
- Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12
1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...
- mysql binlog 备份_Mysql数据库的增量备份与还原
一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原. 二.备份需要考虑的问题 可以接受丢失多少数据: 恢复数据的时间要多久: 恢复数据时是否持续提供服务: 恢复的对象,是一个库,多个表,单个表,还 ...
- mysql全备和指定库和表备份,mysql日志的分类简介和作用, mysql加速跳过域名解析,mysql权限授予与收回,数据库实用篇~~Tring
mysql改密,重置,备份,权限和日志 改密~ 修改密码 重置密码 步骤 数据库备份 用到的命令: 可加参数 : -A 参数 例子: -B 参数 例子: 备份指定数据库的某个表 恢复表 创建用户 操作 ...
- mysql存储过程表_mysql 存储过程,表
drop procedure if exists UP_SYS_GetBillId; /* 创建:Jaxk 2017-03-31 功能:get bill id */ create procedure ...
最新文章
- SAP PM入门系列32 - S_ALR_87013432 Display Confirmations
- python过滤多个开头结尾
- 基于注解的IOC案例
- Python+Opencv实现自动化阅卷
- JavaScript代码片段
- 其实没事做,写写博客也不错的
- SQL SERVER中的纵横查询
- Python中*args和**kwargs的解释
- 滴滴接盘小蓝单车,押金问题谁来负责?
- 接口性能测试+调优+性能指标
- JS 三级联动之 省市县。
- 检测应用位于后台,并弹出手势解锁,解锁成功进入主界面
- amd服务器cpu性能排行榜,AMD 32核服务器CPU完胜Intel 22核顶级CPU
- 助教日志_【沈阳航空航天大学软件工程 1,2班】期末排行
- python画图显示中文加标题控制字体
- 我国有关信息方面的法律法规
- 笔记本怎么用android,电脑上如何使用Android系统
- 用旭日图展示数据的三种方法
- 解决方案:No space left on device
- 截至4月印度可再生能源装机超57GW 光伏装机12.5GW
热门文章
- 创业 4 年获近 7000 万美元融资,53 岁老程序员 all in 开源
- 夯实数字化转型算能基石 构建洛阳银行核心云
- 这 10 行比较字符串相等的代码给我整懵了,不信你也来看看
- 达摩院2020十大科技趋势发布:云成IT技术创新中心
- 腾讯云全面更新数据智能服务全景图!
- 电大1253c语言程序设计考试题,电大1253《C语言程序设计》开放大学期末考试试题2020年1月(含答案)...
- git 撤销挂起的更改_小姐姐带你用Git
- 网站建设中 模板_网站建设之模板网站的缺点
- 如何用c语言程序写一段英文字母,菜鸟求助,写一个随机输出26个英文字母的程序...
- mysql 默认时间字段 1067,mysql替datetime类型字段设置默认值default