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><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill10629" title="kashen-mysql DDLtoExcel"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20e352aa140.jpg" alt="kashen-mysql DDLtoExcel" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill10629" title="kashen-mysql DDLtoExcel">kashen-mysql DDLtoExcel</a>
<p>解析 MySQL 8.0 的 DDL 脚本,并将表结构导出为 Excel 格式。适用于用户需将 MySQL 的 `CREATE TABLE` 语句转换为结构化的 Excel 文件场景,导出内容包含字段名、数据类型、长度及精度等信息。支持多张表的批量处理,每张表对应 Excel 中的一个独立工作表。适用于数据库文档编写、数据字典生成及模式分析等任务。</p>
</div>
<a href="/xiazai/skill10629" title="kashen-mysql DDLtoExcel" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><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"
说明:
--single-transaction 保证 InnoDB 数据一致性;
--routines 和 --triggers 分别导出存储过程和触发器;
文件名含时间戳,避免覆盖。
三、添加自动压缩与清理(可选但实用)
备份后压缩节省空间,定期清理旧备份防磁盘占满:
- 压缩:在循环结束后加一行
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)避免命令行泄露。

















