1. 程式人生 > >linux每天自動備份mysql資料庫,且只保留90天內的備份資料

linux每天自動備份mysql資料庫,且只保留90天內的備份資料

1、使用VI工具編寫test_database_backup.sh備份資料庫指令碼內容
#========================start shell 指令碼============================
#!/bin/bash
#定義有備份的資料庫名
dbname=test_db
#定義備份資料庫時使用的使用者名稱和密碼
dbuser=root
dbpasswd=root
#資料庫備份的路徑
backuppath=/home/test/backup/mysql/
#資料庫備份日誌檔案儲存的路徑
logfile=/home/test/backup/log/mysql.log
#以當前的時間作為備份的資料庫命名。
#獲取當前日期
Now=$(date +"%d-%m-%Y")  
#字串組合生成檔名
dumpfile=ais_sm-$Now  
#這個函式用來備份資料庫
back_db() {
#將備份的時間、資料庫名存入日誌
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
#備份資料庫,如果有錯誤資訊也記入日誌。預設utf8編碼
#--skip-opt (mysql服務執行時備份,請加此引數,防止表損壞,mysqldump可選引數)
#--quick --force --routines --add-drop-database --add-drop-table  (儲存過程也會一起備份,mysqldump可選引數)
mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
echo "mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}"
#開始壓縮資料檔案
echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}
#將備份資料庫檔案庫壓成ZIP檔案,並刪除先前的SQL檔案。如果有錯誤資訊也記入日誌。
tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
#將壓縮後的檔名存入日誌。
echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}
}
#傳送郵件
#cat ${logfile} | mutt -s "Blog資料庫備份" -a ${dumpfile}.tar.gz 
[email protected]
} #這個函式用來刪除90天前的資料,注意,這個指令碼會刪除當前目錄下所有的早於七天前的檔案 rm_oldfile() { #查找出當前目錄下90天前生成的檔案,並將之刪除 find /home/juwei001/backup/mysql -type f -mtime +30 -exec rm {} \; } #切換到資料庫備份的目錄。如果不做這個操作,壓縮檔案時有可能會錯誤 cd ${backuppath} #執行備份資料函式 back_db #執行刪除檔案函式 rm_oldfile #====================end shell 指令碼====================== 2、使用crontab建立定時任務 加入00 02 * * * /home/test/test_database_backup.sh >> /home/test/test_database_backup.log