本文介绍了一种用 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技术支持:南京博盛蓝睿网络科技有限公司
南京思必达教育科技有限公司版权所有 百度统计