mysqldailybackup.sh
#!/bin/sh # Name:mysqlDailyBackup.sh # 定義數據庫目錄和數據目錄 mysqldir=/usr/local/mysql datadir=$mysqldir/data # 定義用於備份數據庫的用戶名和密碼 user=root userpwd=123456 # 定義備份目錄,每日備份文件備份到$dataBackupDir/daily databackupdir=/opt/mysqlbackup dailybackupdir=$databackupdir/daily [ ! -d $dailybackupdir ] && mkdir -p $databackupdir/daily # 定義郵件正文文件 emailfile=$databackupdir/email.txt # 定義郵件地址 [email protected] # 定義日誌文件 logfile=$databackupdir/mysqlbackup.log echo "" > $emailfile echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile # # 刷新日誌,使數據庫使用新的二進制日誌文件 $mysqldir/bin/mysqladmin -u$user -p$userpwd flush-logs cd $datadir # 得到二進制日誌列表 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 [ $nextnum -eq $icounter ]; then echo "Skip lastest!" > /dev/null else dest=$dailybackupdir/$binlogname # 跳過已經備份的二進制日誌文件 if [ -e $dest ]; then echo "Skip exist $binlogname!" > /dev/null else # 備份日誌文件到備份目錄 cp $binlogname $dailybackupdir if [ $? -eq 0 ]; then ifile=`expr $ifile + 1` echo "$binlogname backup success!" >> $emailfile fi fi fi done if [ $ifile -eq 0 ];then echo "No Binlog Backup!" >> $emailfile else echo "Backup $ifile File(s)." >> $emailfile echo "Backup MySQL Binlog OK!" >> $emailfile fi # 發送郵件通知 cat $emailfile | mail -s "MySQL Backup" $email # 寫日誌文件 echo "--------------------------------------------------------" >> $logfile cat $emailfile >> $logfile
mysql完整備份腳本:
#!/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 # 定義郵件地址 [email protected] # 定義備份日誌文件 logfile=$databackupdir/mysqlbackup.log DATE=`date -I` echo "" > $emailfile echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile cd $databackupdir # 定義備份文件名 dumpfile=mysql_$DATE.sql gzdumpfile=mysql_$DATE.sql.tar.gz # 使用mysqldump備份數據庫,請根據具體情況設置參數 $mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile # 壓縮備份文件 if [ $? -eq 0 ]; then tar czf $gzdumpfile $dumpfile >> $emailfile 2>&1 echo "BackupFileName:$gzdumpfile" >> $emailfile echo "DataBase Backup Success!" >> $emailfile rm -f $dumpfile else echo "DataBase Backup Fail!" >> $emailfile fi # 寫日誌文件 echo "--------------------------------------------------------" >> $logfile cat $emailfile >> $logfile # 發送郵件通知 cat $emailfile | mail -s "MySQL Backup" $email