mysqldump配合Shell脚本是最常用可靠的MySQL批量备份方式,核心是获取数据库列表、循环导出并按时间/库名组织文件。

用 mysqldump 配合 Shell 脚本,是最常用、最可靠的 MySQL 批量备份方式。核心思路是:获取数据库列表 → 循环执行导出 → 按时间/库名组织文件。
一、列出所有需备份的数据库
先确认要备份哪些库。可手动指定,也可动态获取(排除系统库):
- 手动指定:
DBS="db1 db2 db3" - 自动获取(推荐):
DBS=$(mysql -N -s -e "SHOW DATABASES" | grep -Ev "^(information_schema|performance_schema|mysql|sys)$")
二、编写批量备份脚本
保存为 backup_mysql.sh,赋予执行权限(chmod +x backup_mysql.sh):
#!/bin/bash
BACKUP_DIR="/data/backup/mysql/$(date +%Y%m%d)"
USER="root"
PASS="your_password"
HOST="localhost"
<p>mkdir -p "$BACKUP_DIR"</p><p>for DB in $DBS; do
echo "正在备份 $DB..."
mysqldump -h"$HOST" -u"$USER" -p"$PASS" --single-transaction --routines --triggers "$DB" > "$BACKUP<em>DIR/${DB}</em>$(date +%Y%m%d_%H%M%S).sql"
done</p><p>echo "备份完成,目录:$BACKUP_DIR"
</p>
说明:
--single-transaction 保证 InnoDB 数据一致性;
--routines 和 --triggers 分别导出存储过程和触发器;
文件名含时间戳,避免覆盖。
三、添加自动压缩与清理(可选但实用)
备份后压缩节省空间,定期清理旧备份防磁盘占满:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 压缩:在循环结束后加一行
gzip "$BACKUP_DIR"/*.sql - 清理7天前备份:
find /data/backup/mysql/ -type d -mtime +7 -exec rm -rf {} \;
四、加入定时任务(每天凌晨2点执行)
运行 crontab -e,添加:
0 2 * * * /path/to/backup_mysql.sh >> /var/log/mysql_backup.log 2>&1
日志记录便于排查问题,注意路径写绝对路径。
不复杂但容易忽略:确保 MySQL 用户有对应库的 SELECT 权限;密码若含特殊字符,建议改用配置文件方式(~/.my.cnf)避免命令行泄露。










