共計(jì) 2484 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。
這篇文章主要介紹“mysql 數(shù)據(jù)備份及恢復(fù)”,在日常操作中,相信很多人在 mysql 數(shù)據(jù)備份及恢復(fù)問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”mysql 數(shù)據(jù)備份及恢復(fù)”的疑惑有所幫助!接下來,請(qǐng)跟著丸趣 TV 小編一起來學(xué)習(xí)吧!
備份
1. 定時(shí)備份工作腳本:(日期時(shí)間作為名稱的壓縮文件,解壓開是 sql 腳本)
/root/backup/script/backup_.sh
2. 備份輸出路徑:
/root/backup/mysql
3. 執(zhí)行計(jì)劃任務(wù)的命令:
#crontab -e 打開計(jì)劃任務(wù)編輯器
# 增加如下內(nèi)容(指定于周日和周四 00:00 開始執(zhí)行 backup_mysql.sh 備份腳本)
0 0 * * 0,4 /root/backup/script/backup_mysql.sh
www.2cto.com
4. 如果對(duì)庫新增了數(shù)據(jù),也可以手動(dòng)執(zhí)行一次備份
# 登陸 192.168.20.101,命令行下./root/backup/script/backup_mysql.sh 執(zhí)行腳本
5. 文件生產(chǎn)在 /root/backup/mysql/ 年份日期時(shí)間.tar.gz
backup_mysql.sh 腳本內(nèi)容:
#========================start shell 腳本 ============================
#!/bin/bash
# 定義有備份的數(shù)據(jù)庫名
dbname=zhdatabase1
# 定義備份數(shù)據(jù)庫時(shí)使用的用戶名和密碼
dbuser=root dbpasswd=root
# 數(shù)據(jù)庫備份的路徑
backuppath=/root/backup/mysql/
# 數(shù)據(jù)庫備份日志文件存儲(chǔ)的路徑
logfile=/root/backup/log/mysql.log
www.2cto.com
# 以當(dāng)前的時(shí)間作為備份的數(shù)據(jù)庫命名。
dumpfile=$(date +%y%m%d%H%M)
# 這個(gè)函數(shù)用來備份數(shù)據(jù)庫
back_db() {
# 將備份的時(shí)間、數(shù)據(jù)庫名存入日志
echo —— $(date +%Y-%m-%d%t%A%t%T) Beginning database ${dbname} backup——– ${logfile}
# 備份數(shù)據(jù)庫,如果有錯(cuò)誤信息也記入日志。 默認(rèn) utf8 編碼
#–skip-opt (mysql 服務(wù)運(yùn)行時(shí)備份,請(qǐng)加此參數(shù),防止表損壞)
#–quick –force –routines –add-drop-database –add-drop-table (存儲(chǔ)過程也會(huì)一起備份)
/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}
# 開始?jí)嚎s數(shù)據(jù)文件
echo $(date +%Y-%m-%d%t%A%t%T) Beginning zip ${backuppath}${dumpfile}.sql ${logfile}
# 將備份數(shù)據(jù)庫文件庫壓成 ZIP 文件,并刪除先前的 SQL 文件。如果有錯(cuò)誤信息也記入日志。
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 }
# 這個(gè)函數(shù)用來刪除 90 天前的數(shù)據(jù),注意,這個(gè)腳本會(huì)刪除當(dāng)前目錄下所有的早于七天前的文件
rm_oldfile() {
# 查找出當(dāng)前目錄下 90 天前生成的文件,并將之刪除
find /root/backup/mysql -type f -mtime +90 -exec rm {} \;
}
# 切換到數(shù)據(jù)庫備份的目錄。如果不做這個(gè)操作,壓縮文件時(shí)有可能會(huì)錯(cuò)誤
cd ${backuppath}
# 運(yùn)行備份數(shù)據(jù)函數(shù)
back_db
# 運(yùn)行刪除文件函數(shù)
rm_oldfile
# 添加自動(dòng)運(yùn)行計(jì)劃任務(wù)(每周日,每周四,00:00 執(zhí)行腳本)
#crontab -e
#00 00 * * 00,04 /root/backup/script/backup_mysql.sh
#====================end shell 腳本 ======================
www.2cto.com
恢復(fù)
1. 恢復(fù)備份的數(shù)據(jù)庫
注:數(shù)據(jù)庫備份為 年份日期時(shí)間.tar.gz 的壓縮文件,解壓后為 sql 文件。如:201206271633.tar.gz : 代表 2012 年 06 月 27 日 16 點(diǎn) 33 分.tar.gz
#1 winscp 登陸 mysql 服務(wù)器 取出 /root/backup/mysql/ 下的最后備份的.tar.gz
#2 解壓
#3 使用數(shù)據(jù)庫管理工具 navicat 新建一個(gè)“數(shù)據(jù)庫”,然后打開,右鍵“表”,彈出菜單選
擇“運(yùn)行批次任務(wù)文件”導(dǎo)入 sql 文件,選擇 utf8 編碼,執(zhí)行即可還原表結(jié)構(gòu)數(shù)據(jù)(默認(rèn) utf8 編碼)。
#test 數(shù)據(jù)庫為測(cè)試數(shù)據(jù)庫,隨便導(dǎo)入測(cè)試
到此,關(guān)于“mysql 數(shù)據(jù)備份及恢復(fù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!