本文介紹了一種用 Shell 腳本自動(dòng)備份 MySQL 數(shù)據(jù)庫(kù)的方法。文章詳細(xì)解釋了為什么要備份數(shù)據(jù)庫(kù)、備份思路、準(zhǔn)備備份文件、編寫(xiě)腳本文件和執(zhí)行腳本等步驟,并提供了一步全注釋的 Shell 腳本示例。
本文帶你一步步動(dòng)手用 Shell 腳本自動(dòng)備份 MySQL 數(shù)據(jù)庫(kù),即使你是剛?cè)腴T(mén)的小白也能學(xué)會(huì)。從環(huán)境準(zhǔn)備到腳本編寫(xiě)到定時(shí)執(zhí)行,保姆級(jí)講解!
一、為什么需要數(shù)據(jù)庫(kù)備份?
數(shù)據(jù)庫(kù)是 Web 應(yīng)用的核心資產(chǎn),一旦丟失,后果不堪設(shè)想。比如:
博客數(shù)據(jù)沒(méi)了?
訂單信息丟了?
用戶賬號(hào)密碼沒(méi)了?
所以我們要定期備份,哪怕出了問(wèn)題也能快速恢復(fù)。
二、備份思路與目標(biāo)
我們希望:
每天自動(dòng)執(zhí)行一次備份
備份文件保存到 /home/backup/
文件名包含日期,如:mydb_2025-05-15.sql
自動(dòng)壓縮為 .tar.gz 節(jié)省空間
保留最近 7 天的備份,自動(dòng)清理舊文件
三、準(zhǔn)備工作(一步不落)
檢查是否已安裝 mysqldump
bash
which mysqldump
如果輸出路徑如 /usr/bin/mysqldump,說(shuō)明已安裝。
如果沒(méi)有,使用以下命令安裝(centos):
bash
sudo yum update
sudo yum install mysql-client
四、Shell 腳本編寫(xiě)(全注釋?zhuān)?/strong>
創(chuàng)建腳本文件:
bash
nano /home/backup/mysql_backup.sh
粘貼以下內(nèi)容
bash
#!/bin/bash
# 數(shù)據(jù)庫(kù)信息配置
DB_USER="root" # 數(shù)據(jù)庫(kù)用戶名
DB_PASSWORD="123456" # 數(shù)據(jù)庫(kù)密碼
DB_NAME="mydb" # 數(shù)據(jù)庫(kù)名稱(chēng)
# 備份保存路徑
BACKUP_DIR="/home/backup"
DATE=$(date +%F)
FILENAME="${DB_NAME}_${DATE}.sql"
TARFILE="${FILENAME}.tar.gz"
# 創(chuàng)建備份目錄(如果不存在)
mkdir -p "$BACKUP_DIR"
# 開(kāi)始備份
echo "[$(date)] 開(kāi)始備份數(shù)據(jù)庫(kù) $DB_NAME ..."
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > "$BACKUP_DIR/$FILENAME"
# 壓縮備份
tar -czf "$BACKUP_DIR/$TARFILE" -C "$BACKUP_DIR" "$FILENAME"
rm "$BACKUP_DIR/$FILENAME"
echo "[$(date)] 備份完成:$TARFILE"
# 自動(dòng)刪除7天前的舊備份
find "$BACKUP_DIR" -name "${DB_NAME}_*.tar.gz" -mtime +7 -exec rm {} \;
echo "[$(date)] 清理7天前備份完成"
保存并退出(Ctrl + O → 回車(chē) → Ctrl + X)
五、添加執(zhí)行權(quán)限
bash
chmod +x /home/backup/mysql_backup.sh
六、設(shè)置定時(shí)任務(wù)(Crontab)
讓腳本每天凌晨 2 點(diǎn)自動(dòng)執(zhí)行:
bash
crontab -e
添加以下一行:
bash
0 2 * * * /home/backup/mysql_backup.sh >> /home/backup/backup.log 2>&1
這表示每天 2 點(diǎn)執(zhí)行腳本,并把日志寫(xiě)入 backup.log。
七、執(zhí)行效果示例
進(jìn)入備份目錄:
bash
cd /home/backup
ls -la
你將看到類(lèi)似這些文件:
pgsql
mydb_2025-05-13.sql.tar.gz
mydb_2025-05-14.sql.tar.gz
mydb_2025-05-15.sql.tar.gz
backup.log
八、小知識(shí)點(diǎn)補(bǔ)充
命令
作用說(shuō)明
mysqldumpMySQL 官方提供的數(shù)據(jù)庫(kù)備份工具
tar -czf壓縮文件為 .tar.gz 格式
find -mtime +7查找7天前的文件
crontabLinux 的定時(shí)任務(wù)工具
九、常見(jiàn)問(wèn)題解答
Q1:密碼會(huì)不會(huì)泄露?
是明文寫(xiě)入腳本,但文件權(quán)限設(shè)置好就不會(huì)有問(wèn)題(chmod 700)。如需更安全方式,建議用 .my.cnf 配置隱藏密碼。
Q2:能備份所有數(shù)據(jù)庫(kù)嗎?
可以,將 mysqldump 替換成:
bash
mysqldump -u$DB_USER -p$DB_PASSWORD --all-databases > all_$(date +%F).sql
總結(jié)
恭喜你!現(xiàn)在你已經(jīng)完成了一個(gè)自動(dòng)化數(shù)據(jù)庫(kù)備份系統(tǒng),再也不用擔(dān)心數(shù)據(jù)突然丟失啦!
今 日 收 獲
熟悉了 mysqldump 用法
學(xué)會(huì)用 Shell 腳本打包壓縮
搞懂了 Linux 的定時(shí)任務(wù) cron
實(shí)現(xiàn)了自動(dòng)清理舊文件
原諒來(lái)源:https://mp.weixin.qq.com/s/YmbN5q_snqZKd4zGd1_6FQ
來(lái)源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來(lái)源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁(yè)對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)