1、MySQL自動備份腳本
# vi /opt/scritps/db_backup.sh
#!/bin/bash
USER=root
PASSWORD=123456
DATABASE1=test-db1
#DATABASE2=test-db2
BACKUP_DIR="/opt/data_bankup/"
LOGFILE=/opt/data_bankup/data_backup.log
DATE=`date +%Y%m%d-%H%M`
DUMPFILE1=appnest-$DATE.sql
DUMPFILE2=imserver-$DATE.sql
ARCHIVE1=$DUMPFILE1-tar.gz
ARCHIVE2=$DUMPFILE2-tar.gz
#
### Backup test-db1 Database ###
if [ ! -d $BACKUP_DIR ];then
mkdir -p "$BACKUP_DIR"
fi
echo -e "\n" >> $LOGFILE
echo "------------------------------------" >> $LOGFILE
echo " BACKUP DATE:$DATE" >> $LOGFILE
echo "------------------------------------" >> $LOGFILE
cd $BACKUP_DIR
/opt/thirdsoft-installed/mysql/mysql/bin/mysqldump -u$USER -p$PASSWORD $DATABASE1 > $DUMPFILE1
if [[ $? == 0 ]];then
tar -zcf $ARCHIVE1 $DUMPFILE1 >> $LOGFILE 2>&1
echo "$DATABASE1 DATABASE BACKUP SUCCESSFUL!" >> $LOGFILE
rm -f $DUMPFILE1
else
echo “$DATABASE1 Backup Fail!” >> $LOGFILE
fi
#
### Backup test-db2 Database ###
/opt/thirdsoft-installed/mysql/mysql/bin/mysqldump -u$USER -p$PASSWORD $DATABASE2 > $DUMPFILE2
if [[ $? == 0 ]];then
tar -czf $ARCHIVE2 $DUMPFILE2 >> $LOGFILE 2>&1
echo "$DATABASE2 DATABASE BACKUP SUCCESSFUL!" >> $LOGFILE
rm -f $DUMPFILE2
else
echo "$ARCHIVE2 Backup Fail!" >> $LOGFILE
fi
2、批量刪除N天前的舊備份
# vi /opt/scritps/del_oldDB_backup.sh
#!/bin/bash
BACKUPDIR="/opt/data_bankup/"
KEEPTIME=15 //需要刪除的文件距離當前的天數
DELFILE=`find $BACKUPDIR -type f -mtime +$KEEPTIME -exec ls {} \;`
for delfile in ${DELFILE}
rm -f $delfile
done
3、設定計劃任務
# crontab -e
0 2 * * * root /opt/scritps/db_backup.sh /dev/null 2>&1
#定義每天凌晨2點執行備份數據庫腳本
0 3 * * 0 root /opt/scritps/del_oldDB_backup.sh /dev/null 2>&1
#定義每週日凌晨3點執行刪除數據庫備份文件
crontab 時間表示
項目 | 含義 | 範圍 |
---|---|---|
第一個"*" | 一小時當中的第幾分鐘(minute) | 0~59 |
第二個"*" | 一天當中的第幾小時(hour) | 0~23 |
第三個"*" | 一個月當中的第幾天(day) | 1~31 |
第四個"*" | 一年當中的第幾個月(month) | 1~12 |
第五個"*" | 一週當中的星期幾(week) | 0~7(0和7都代表星期日) |