mysql中定時刪除N天前以時間命名的資料表
最近在做一個log管理。具體情形是這樣的,在mysql中每天產生一個log資料表,要求自動刪除N天前的資料表。之前對這方面沒什麼瞭解,查了很多資料,都是很抽象的從一個高度上講了講。在此,記錄一下實現過程,供有需要的童鞋參考。寫的可能有點笨拙,歡迎討論,共同提高~
實現過程中用到了mysql中的儲存過程(procedure)和定時器(event)。需要注意的是,mysql從5.1版本才開始支援定時器。
1、檢視mysql版本
mysql> select version();
2、檢視定時器開關
mysql> show variables like '%sche%';+---------------------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------------------+---------+
| event_scheduler | ON |
如果value值為OFF,可以這樣開啟:
set GLOBAL event_scheduler=1;
想關閉,只需設定為0即可。
3、建立測試用資料表
mysql> create table 2013_04_15-> (
-> id int(11) not null auto_increment primary key,
-> time datetime not null
-> );
我想刪除一年之前的資料表。
4、建立儲存過程
mysql> delimiter // mysql> drop procedure if exists del//mysql> create procedure del()
-> BEGIN
-> select date_format(DATE_SUB(now(),INTERVAL 1 YEAR),'%Y_%m_%d') into @tf;
-> set @sql = concat('drop table if exists ',@tf);
-> PREPARE stml FROM @sql;
-> EXECUTE stml;
-> END//
mysql> delimiter ; 註釋:
- 第一行delimiter //,設定mysql的定界符,預設是分號,即當以分號結束時,執行輸入的mysql命令。但有時不希望這樣,故需要重新定義界定符,本例中使用雙斜槓,注意再設定回來,上述最後一行sql語句即是。
- 第二行drop procedure if exists del//,判斷是否已經存在名為del的procedure。如果存在就刪除。
- 建立名為del的procedure。BEGIN起始,END結束。
- select date_format(DATE_SUB(now(),INTERVAL 1 YEAR),'%Y_%m_%d') into @tf;根據今天的日期,生成一年前的日期串,格式形如2013_04_15,存放在變數tf中。
- set @sql = concat('drop table if exists ',@tf);構造刪除表的sql語句。
- PREPARE stml FROM @sql;EXECUTE stml;執行sql語句。
5、建立定時器
mysql> drop event if exists del_event;mysql> create event del_event
-> on schedule every 3 minute(定時器執行的時間間隔,測試中,我使用的3分鐘)
-> on completion preserve disable
-> do call del();
6、上述定時器開啟與關閉
定時器的開啟 mysql> alter event del_event on completion preserve enable;關閉定時器 mysql> alter event del_event on completion preserve disable;
相關推薦
mysql中定時刪除N天前以時間命名的資料表
最近在做一個log管理。具體情形是這樣的,在mysql中每天產生一個log資料表,要求自動刪除N天前的資料表。之前對這方面沒什麼瞭解,查了很多資料,都是很抽象的從一個高度上講了講。在此,記錄一下實現過程,供有需要的童鞋參考。寫的可能有點笨拙,歡迎討論,共同提高~ 實現過程中
[Linux] CentOS下面定時刪除N天前的檔案
伺服器上每天會定時備份資料庫和專案檔案包,時間久了備份檔案佔空間太大。寫一個shell指令碼每天定時刪除15天前的備份vi clear.py#!/bin/bashfind /mnt/sdb/backups -mtime +15 -name "*gz*" -exec rm -r
mysql定時備份資料庫和刪除N天前資料庫備份
前提,這裡使用 Ubuntu 16.04.4。 mysql定時備份數資料庫: 1.建立備份資料夾和指令碼檔案: mkdir -p /home/mysql_backup/ touch /home/mysql_backup/mysql_backup.sh 2.編輯指令碼檔案(m
【Windows】【MySQL】Windows下MySQL資料庫利用mysqldump定時備份並刪除N天前的備份資料
1.新建.bat檔案 內容如下: rem ******MySQL backup start******** @echo off set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%" if not exist "D:\backup\%Ymd%" m
linux系列之-—04 自動刪除n天前日誌
color nbsp 文件命令 ech 服務器硬盤 pat bin mtime 查找 linux是一個很能自動產生文件的系統,日誌、郵件、備份等。雖然現在硬盤廉價,我們可以有很多硬盤空間供這些文件浪費,讓系統定時清理一些不需要的文件很有一種爽快的事情。不用你去每天惦記著是否
Linux:自動刪除n天前日誌
1.刪除檔案命令: find 對應目錄 -mtime +天數 -name "檔名" -exec rm -rf {} \; 例項命令: find /opt/soft/log/&nb
python指令碼刪除n天前檔案可用於windows,linux並且支援跨平臺
指令碼如下: #!/usr/local/python/bin/python # -*-coding=utf8 -*- import time import os, sys # 設定刪除多少天前的檔案 N = 3 #要刪除路徑 path = r'/tmp/wry/abc' def deletefile(p
python刪除N天前檔案
python刪除N天前檔案 注: 檔案最近修改時間 :os.path.getmtime(file) 檔案建立時間:os.path.getctime(file) 檔案最近訪問時間:os.path.getatime(file) import os import sys imp
Linux shell 自動刪除n天前日誌
linux是一個很能自動產生檔案的系統,日誌、郵件、備份等。雖然現在硬碟廉價,我們可以有很多硬碟空間供這些檔案浪費,讓系統定時清理一些不需要的檔案很有一種爽快的事情。不用你去每天惦記著是否需要清理日誌,不用每天收到硬碟空間不足的報警簡訊,想好好休息的話,讓我們把這個事情交給機器定時去執行吧。
linux系統定期刪除N天前的日誌
轉自:http://www.cnblogs.com/peida/archive/2013/03/25/2980121.html linux是一個很能自動產生檔案的系統,日誌、郵件、備份等。雖然現在硬碟廉價,我們可以有很多硬碟空間供這些檔案浪費,讓系統定時清理一些不需要的檔案很有一種爽快的
windows定時刪除15天前的檔案BAT
如果windows系統上有很多工在執行,會產生大量的資料檔案或者日誌檔案,而這些檔案很佔用磁碟空間,需要定時對其刪除, 1、Windows 下bat指令碼檔案:deleteFile.bat @echo off set srcDir="F:\zyc\test" set daysAgo=
用批處理檔案自動備份檔案及資料夾,並自動刪除n天前的檔案_DOS/BAT
下是備份的批處理,新增到”計劃任務”中,設定時間自動執行 程式碼如下: @echo off rem 格式化日期 rem date出來的日期是"2006-02-22 星期三",不能直接拿來使用,所以應該先格式化一下 rem 變成我們想要的。date
shell指令碼刪除N天前的資料夾-----附linux和mac上date命令的不同
背景: 每日構建的東西,按日期放到不同的資料夾裡。如今天的構建放到2015-06-01裡,明天的就放到2015-06-02裡,依次類推。時間久了,需要一個指令碼刪除N天前的資料夾。(本例中N=7,即刪除一週前的構建)。 下面直
PowerShell匹配檔案刪除N天前或指定日期(前後)建立(或修改)的檔案
查詢 Get-ChildItem -Path D:\logstash-1.4.2\bin\*.mdmp -Recurse -ErrorAction:SilentlyContinue | ` Where-Object -FilterScript {(((get-date)
Linux應用總結:自動刪除n天前日誌
linux是一個很能自動產生檔案的系統,日誌、郵件、備份等。雖然現在硬碟廉價,我們可以有很多硬碟空間供這些檔案浪費,讓系統定時清理一些不需要的檔案很有一種爽快的事情。不用你去每天惦記著是否需要清理日誌,不用每天收到硬碟空間不足的報警簡訊,想好好休息的話,讓我們把這個事情交
Powershell: powershell刪除N天前的文件
write filename join pre admin -a 目錄 min -name 在C:\Users\Administrator\Desktop\temp1目錄下隨機建5個2019年前的文件並把他們刪除。:) $path="C:\Users\Administrat
linux定時備份MySQL數據庫並刪除七天前的備份文件
/dev/ rdquo .sh 文件的 文件名 del l數據庫 blog 出錯 1、創建備份文件夾 #cd /bak#mkdir mysqldata 2、編寫運行腳本 #nano -w /usr/sbin/bakmysql.sh 註:如使用nano編輯此代碼需在每
Linux中find命令配合rm刪除某天前的檔案
語句寫法:find 對應目錄 -mtime +天數 -name "檔名" -exec rm -rf {} \; 例:將/var/log/目錄下所有180天前的檔案刪除 find /var/log/ -mtime +180 -exec rm -rf {} \; 例:將/var/lo
Mysql中使用sql語句查詢前一個天、前一週、前一月時間的方法
查詢一天:select * from 表名 where to_days(時間欄位名) = to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 時間欄位名) <= 17天SELECT *
MYSQL Linux下自動備份並刪除7天前的舊備份 sh指令碼
# 資料庫使用者名稱 username=root # 資料庫密碼 password=******** # 需要備份的資料庫名 database=wbwy # 備份檔案到哪個路徑 path="/data"