這篇文章主要介紹“MySQL數(shù)據(jù)備份及恢復”,在日常操作中,相信很多人在mysql數(shù)據(jù)備份及恢復問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mysql數(shù)據(jù)備份及恢復”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
公司專注于為企業(yè)提供網(wǎng)站制作、成都網(wǎng)站設計、微信公眾號開發(fā)、商城網(wǎng)站制作,成都小程序開發(fā),軟件定制網(wǎng)站設計等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。
備份
1.定時備份工作腳本:(日期時間作為名稱的壓縮文件,解壓開是sql腳本)
/root/backup/script/backup_.sh
2.備份輸出路徑:
/root/backup/mysql
3.執(zhí)行計劃任務的命令:
#crontab -e 打開計劃任務編輯器
#增加如下內(nèi)容(指定于周日和周四00:00開始執(zhí)行backup_mysql.sh備份腳本)
0 0 * * 0,4 /root/backup/script/backup_mysql.sh
www.2cto.com
4.如果對庫新增了數(shù)據(jù),也可以手動執(zhí)行一次備份
#登陸192.168.20.101,命令行下./root/backup/script/backup_mysql.sh 執(zhí)行腳本
5.文件生產(chǎn)在 /root/backup/mysql/年份日期時間.tar.gz
backup_mysql.sh腳本內(nèi)容:
#========================start shell 腳本============================
#!/bin/bash
#定義有備份的數(shù)據(jù)庫名
dbname=zhdatabase1
#定義備份數(shù)據(jù)庫時使用的用戶名和密碼
dbuser=root dbpasswd=root
#數(shù)據(jù)庫備份的路徑
backuppath=/root/backup/mysql/
#數(shù)據(jù)庫備份日志文件存儲的路徑
logfile=/root/backup/log/mysql.log
www.2cto.com
#以當前的時間作為備份的數(shù)據(jù)庫命名。
dumpfile=$(date +%y%m%d%H%M)
#這個函數(shù)用來備份數(shù)據(jù)庫
back_db() {
#將備份的時間、數(shù)據(jù)庫名存入日志
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
#備份數(shù)據(jù)庫,如果有錯誤信息也記入日志。 默認utf8編碼
#--skip-opt (mysql服務運行時備份,請加此參數(shù),防止表損壞)
#--quick --force --routines --add-drop-database --add-drop-table (存儲過程也會一起備份)
/usr/bin/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}
#開始壓縮數(shù)據(jù)文件
echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}
#將備份數(shù)據(jù)庫文件庫壓成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}
}
www.2cto.com
#發(fā)送郵件
#cat ${logfile} | mutt -s "Blog數(shù)據(jù)庫備份" -a ${dumpfile}.tar.gz 8chf@163.com }
#這個函數(shù)用來刪除90天前的數(shù)據(jù),注意,這個腳本會刪除當前目錄下所有的早于七天前的文件
rm_oldfile() {
#查找出當前目錄下90天前生成的文件,并將之刪除
find /root/backup/mysql -type f -mtime +90 -exec rm {} \;
}
#切換到數(shù)據(jù)庫備份的目錄。如果不做這個操作,壓縮文件時有可能會錯誤
cd ${backuppath}
#運行備份數(shù)據(jù)函數(shù)
back_db
#運行刪除文件函數(shù)
rm_oldfile
#添加自動運行計劃任務(每周日,每周四,00:00執(zhí)行腳本)
#crontab -e
#00 00 * * 00,04 /root/backup/script/backup_mysql.sh
#====================end shell 腳本======================
www.2cto.com
恢復
1. 恢復備份的數(shù)據(jù)庫
注:數(shù)據(jù)庫備份為"年份日期時間.tar.gz"的壓縮文件,解壓后為sql文件。如:201206271633.tar.gz :代表2012年06月27日16點33分.tar.gz
#1 winscp 登陸mysql服務器 取出/root/backup/mysql/下的最后備份的.tar.gz
#2 解壓
#3 使用數(shù)據(jù)庫管理工具navicat 新建一個“數(shù)據(jù)庫”,然后打開,右鍵“表”,彈出菜單選
擇“運行批次任務文件”導入sql文件,選擇utf8編碼,執(zhí)行即可還原表結(jié)構(gòu)數(shù)據(jù)(默認utf8編碼)。
#test數(shù)據(jù)庫為測試數(shù)據(jù)庫,隨便導入測試
到此,關于“mysql數(shù)據(jù)備份及恢復”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
新聞標題:mysql數(shù)據(jù)備份及恢復
轉(zhuǎn)載注明:http://weahome.cn/article/gejpji.html