生產環境中Mysql數據庫的備份是週期性重複的操作,所以通常是要編寫腳本實現,通過crond計劃任務週期性執行備份腳本
mysqldump備份方案:
週日凌晨1點全庫備份
週一到週六凌晨每隔4個小時增量備份一次
設置crontab任務,每天執行備份腳本
crontab–e
每個星期日凌晨1:00執行完全備份腳本
0 1 * * 0 /root/mysqlfullbackup.sh >/dev/null 2>&1
週一到週六每隔4個小時增量備份一次
0 /4 * 1-6 /root/mysqldailybackup.sh >/dev/null 2>&1
mysqlfullbackup.sh腳本內容:
[root@localhost ~]# cat mysqlfullbackup.sh
!/bin/sh
Name:mysqlFullBackup.sh
定義數據庫目錄
mysqlDir=/usr/local/mysql
定義用於備份數據庫的用戶名和密碼
user=root
userpwd=123456
dbname=test_db
定義備份目錄
databackupdir=/opt/mysqlbackup
[ ! -d databackupdir ]&& mkdir databackupdir
定義郵件正文文件
emailfile=$databackupdir/email.txt
定義郵件地址
定義備份日誌文件
logfile=$databackupdir/mysqlbackup.log
DATE=date -I
echo “” >
定義備份文件名
dumpfile=mysql_DATE.sql
gzdumpfile=mysql_ DATE.sql.tar.gz
使用mysqldump備份數據庫,請根據具體情況設置參數
壓縮備份文件
if [
echo “BackupFileName:
echo “DataBase Backup Success!” >>
else
echo “DataBase Backup Fail!” >> $emailfile
fi
寫日誌文件
echo “——————————————————–” >>
發送郵件通知
cat
mysqldailybackup.sh腳本內容:
[root@localhost ~]# cat mysqldailybackup.sh
!/bin/sh
Name:mysqlDailyBackup.sh
定義數據庫目錄和數據目錄
mysqldir=/usr/local/mysql
datadir=$mysqldir/data
定義用於備份數據庫的用戶名和密碼
user=root
userpwd=123456
定義備份目錄,每日備份文件備份到$dataBackupDir/daily
databackupdir=/opt/mysqlbackup
dailybackupdir=
定義郵件正文文件
emailfile=$databackupdir/email.txt
定義郵件地址
定義日誌文件
logfile=
echo
#
刷新日誌,使數據庫使用新的二進制日誌文件
得到二進制日誌列表
filelist=cat mysql-bin.index
icounter=0
for file in $filelist
do
icounter=expr $icounter + 1
done
nextnum=0
ifile=0
for file in $filelist
do
binlogname=basename $file
nextnum=expr $nextnum + 1
跳過最後一個二進制日誌(數據庫當前使用的二進制日誌文件)
if [
echo “Skip lastest!” > /dev/null
else
dest=
跳過已經備份的二進制日誌文件
if [ -e
else
備份日誌文件到備份目錄
cp
if [ $? -eq 0 ]; then
ifile=expr $ifile + 1
echo “
fi
fi
fi
done
if [
else
echo “Backup
echo “Backup MySQL Binlog OK!” >> $emailfile
fi
發送郵件通知
cat
寫日誌文件
echo “——————————————————–” >>
chmod +x