mysql 定時備份及恢復腳本

jopen 13年前發布 | 57K 次閱讀 MySQL 數據庫服務器
備份
1.數據庫定時備份工作腳本:(日期時間作為名稱的壓縮文件,解壓開是sql腳本)
/root/backup/script/backup_mysql.sh
 

2.備份輸出路徑:
/root/backup/mysql
 
3.執行計劃任務的命令:
#crontab -e 打開計劃任務編輯器
#增加如下內容(指定于周日和周四00:00開始執行backup_mysql.sh備份腳本)
0 0 * * 0,4 /root/backup/script/backup_mysql.sh
 
4.如果對庫新增了數據,也可以手動執行一次備份
#登陸192.168.20.101,命令行下./root/backup/script/backup_mysql.sh  執行腳本

5.文件生產在 /root/backup/mysql/年份日期時間.tar.gz

backup_mysql.sh腳本內容:
#========================start shell 腳本============================
#!/bin/bash   

#定義有備份的數據庫名 
dbname=zhdatabase1   

#定義備份數據庫時使用的用戶名和密碼 
dbuser=root dbpasswd=root   
#數據庫備份的路徑 
backuppath=/root/backup/mysql/ 
 
#數據庫備份日志文件存儲的路徑 
logfile=/root/backup/log/mysql.log   


#以當前的時間作為備份的數據庫命名。 
dumpfile=$(date +%y%m%d%H%M)   


#這個函數用來備份數據庫 
back_db() {    
#將備份的時間、數據庫名存入日志    
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}     


#備份數據庫,如果有錯誤信息也記入日志。   默認utf8編碼
/usr/bin/mysqldump -u${dbuser} -p${dbpasswd} --default-character-set=utf8 ${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 8chf@163.com }   

#這個函數用來刪除90天前的數據,注意,這個腳本會刪除當前目錄下所有的早于七天前的文件 
rm_oldfile() {   
#查找出當前目錄下90天前生成的文件,并將之刪除   
find /root/backup/mysql -type f -mtime +90 -exec rm {} \; 
}   

#切換到數據庫備份的目錄。如果不做這個操作,壓縮文件時有可能會錯誤 
cd ${backuppath}   

#運行備份數據函數 
back_db   

#運行刪除文件函數 
rm_oldfile 

#添加自動運行計劃任務(每周日,每周四,00:00執行腳本)
#crontab -e
#00 00 * * 00,04 /root/backup/script/backup_mysql.sh

#====================end shell 腳本======================

恢復

1. 恢復備份的數據庫
注:數據庫備份為"年份日期時間.tar.gz"的壓縮文件,解壓后為sql文件。如:201206271633.tar.gz :代表2012年06月27日16點33分.tar.gz
#1 winscp 登陸mysql服務器 取出/root/backup/mysql/下的最后備份的.tar.gz
#2 解壓
#3 使用數據庫管理工具navicat 新建一個“數據庫”,然后打開,右鍵“表”,彈出菜單選
擇“運行批次任務文件”導入sql文件,選擇utf8編碼,執行即可還原表結構數據(默認utf8編碼)。
#test數據庫為測試數據庫,隨便導入測試
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!