日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql历史数据备份_Mysql存储过程历史表备份

發(fā)布時(shí)間:2024/9/27 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql历史数据备份_Mysql存储过程历史表备份 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文:

Mysql存儲(chǔ)過程歷史表備份

應(yīng)用背景

SCADA采集系統(tǒng)需要將實(shí)時(shí)數(shù)據(jù)存入歷史表。問題1:如何更簡(jiǎn)單的添加歷史數(shù)據(jù)?2.海量歷史數(shù)據(jù),比如年數(shù)據(jù),如何快速篩選 畫曲線?

利用mysql的事件,每小時(shí)存一次采集數(shù)據(jù);

每月備份歷史表,并且將原表清空。每個(gè)月1號(hào)凌晨1點(diǎn),將歷史表備份,名稱命名為his_aic_20190501 01:00,將原表清空。

1.歷史表備份

1.1存儲(chǔ)過程

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,函數(shù)右鍵新建函數(shù),在跳出得向?qū)Э蜻x擇過程,點(diǎn)擊下一步。

步驟2 這里不需要任何操作,直接點(diǎn)擊完成,因?yàn)闆]有參數(shù)傳入傳出。

步驟3 將上面的存儲(chǔ)過程代碼復(fù)制進(jìn)如下圖框,點(diǎn)擊運(yùn)行即可。

步驟4點(diǎn)擊保存,輸入名稱。

結(jié)果運(yùn)行結(jié)果如下。

2.創(chuàng)建每隔一小時(shí)保存歷史數(shù)據(jù)任務(wù)

2.1 建立事件任務(wù)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選擇自己的數(shù)據(jù),點(diǎn)擊右鍵,選擇cmd模式輸入。

步驟2將以上代碼拷貝運(yùn)行即可。

結(jié)果運(yùn)行結(jié)果如下。

備注:

如果報(bào)錯(cuò)查看event是否開啟: show variables like '%sche%';

將事件計(jì)劃開啟: set global event_scheduler=1;

關(guān)閉事件任務(wù): alter event e_test ON COMPLETION PRESERVE DISABLE;

開戶事件任務(wù): alter event e_test ON COMPLETION PRESERVE ENABLE;

3.歷史表按月備份

3.1存儲(chǔ)過程

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.建立每個(gè)月的第一天凌晨1點(diǎn)執(zhí)行事件

4.1建立任務(wù)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

總結(jié)

以上是生活随笔為你收集整理的mysql历史数据备份_Mysql存储过程历史表备份的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。