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