linux shell脚本做数据库备份的核心是封装mysqldump等命令为定时任务,配合压缩、时间戳命名、错误检查、保留策略(如7天清理)和异地同步,确保自动化、可靠与可追溯。

Linux Shell 脚本做数据库备份,核心是把 mysqldump(或 pg_dump、mongodump 等)命令封装进定时任务,配合压缩、保留策略和错误检查,形成可靠、可追溯的自动化流程。
基础备份脚本结构
一个最小可用的 MySQL 备份脚本需包含:数据库连接参数、时间戳命名、压缩归档、简单错误判断。
- 用 date +%Y%m%d_%H%M%S 生成唯一文件名,避免覆盖
- 执行 mysqldump -u$user -p$pass -h$host $db_name | gzip > backup_$time.sql.gz
- 用 $? 检查上一条命令退出码,非 0 则写日志并退出
- 备份前加 mkdir -p $backup_dir 确保路径存在
保留最近 N 天的备份文件
避免磁盘被旧备份占满,脚本末尾可加清理逻辑:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- find $backup_dir -name "*.sql.gz" -mtime +7 -delete 删除 7 天前的文件
- 更稳妥写法:先用 find ... -print0 | xargs -0 ls -lt 预览将删哪些
- 建议保留至少 3 个完整备份(如每日全备),再叠加 binlog 增量,才具备时间点恢复能力
集成到系统定时任务(cron)
让脚本真正“自动”运行,关键在 cron 配置和权限控制:
- 用 crontab -e 添加: 0 2 * * * /path/to/backup.sh >> /var/log/db_backup.log 2>&1
- 脚本开头加 #!/bin/bash,保存为 chmod +x 可执行
- MySQL 密码不要硬编码在脚本里,改用 ~/.my.cnf 配置文件(权限设为 600)
- 日志重定向确保每次执行都有记录,便于排查失败原因
增强可靠性的小技巧
生产环境建议补充这些细节,减少意外中断风险:
- 备份前用 mysqladmin ping -u$user -p$pass -h$host &>/dev/null 检查数据库是否在线
- 用 du -sh $backup_file 校验压缩包大小,小于 1MB 很可能备份为空
- 备份完成后,用 scp 或 rsync 同步一份到另一台机器,实现异地容灾
- 对重要库,可在备份后执行 gunzip -t $file 测试压缩包完整性










