當前位置:股票大全官網 - 股票投資 - mysql數據庫如何實現定期刪除數據庫壹些東西

mysql數據庫如何實現定期刪除數據庫壹些東西

MySQL 5.1以後版本中有 Event ,這是類似Oracle中的job 可以通過創建Event,然後在裏面調用刪除過期記錄的存儲過程即可實現 定時每天備份mysql並定時刪除上月記錄(腳本) ouwsh | September 3, 2009 10:41 | Linux/Unix相關 | 閱讀(1536) | 評論(0) shell腳本:

備份的腳本比較簡單:

#!/bin/bash

# 定義年 月 日

year=`date +%Y`

month=`date +%m`

day=`date +%d`

# 定義備份的目錄

BACKDIR=/bak_1/mysql/$year/$month/$day

# MySQL的root密碼

ROOTPASS=123456

# 建立目錄

mkdir -p $BACKDIR

# 獲取數據庫列表

DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`

# 備份

for dbname in $DBLIST

do

mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy

done

復制代碼上面的腳本將數據庫按"年/月/日"目錄結構備份,將腳本存為back.sh添加到cron裏每天淩晨3點執行

crontab -e

00 03 * * * root /root/back.sh

下面的是每月3號刪除上個月的備份,存為del_bak.sh,每月3號3點3分執行

03 03 03 * * root /root/del_bak.sh

註意腳本上傳後,要chmod壹下權限,比如

chmod 755 /root/back.sh

#!/bin/bash

# 定義年 月 日

year=`date +%Y`

month=`date +%m`

#day=`date +%d`

# 取上壹個月

month=`expr $month - 1`

# 如果是1月,則上壹月為12,並且年也減1

if [ $month -eq 0 ]; then

month=12

day=31

year=`expr $year - 1`

fi

# 因為備份時小於10月的月份有前導零,所以這裏判斷如果小於10月,則加前導零

if [ $month -lt 10 ]; then

pre=0

fi

#獲取要刪除的目錄名

BACKDIR=/bak1/mysql/$year/$pre$month

#刪除了

rm -rf $BACKDIR

重新啟動crond

/etc/rc.d/init.d/crond restart