云服务器数据库定时备份脚本
该脚本用于实现云服务器上数据库的自动化定时备份,支持MySQL等主流数据库,通过Shell编写,结合crontab设置定期执行(如每日凌晨),脚本包含数据库连接配置、备份文件命名(含时间戳)、压缩存储、本地保留策略及可选的远程上传(如OSS或FTP),具备错误日志记录与邮件通知功能,确保备份可靠性与可追溯性,有效防范数据丢失风险。
一个健壮的云服务器数据库定时备份脚本实践指南
在云环境运维中,数据安全是生命线,手动备份易遗漏、不可追溯;依赖云厂商快照又缺乏细粒度控制与跨平台可移植性,本文分享一个经生产验证的轻量级Shell脚本方案——专为MySQL/MariaDB设计,兼顾安全性、可审计性与低侵入性,全程无需额外安装复杂工具。
核心设计原则:
✅ 纯Shell实现(兼容CentOS/Ubuntu/Alibaba Cloud Linux)
✅ 按日+按周双策略保留(7日+4周,避免磁盘爆满)
✅ 自动压缩加密(gzip + gpg可选,密钥离线保管)
✅ 备份前校验服务状态,失败自动告警(邮件/钉钉Webhook)
✅ 日志分级记录,支持快速定位异常
脚本精要逻辑(关键片段示意):
#!/bin/bash
# config section —— 仅需修改此处
DB_USER="backup_user" # 建议专用只读账号
DB_PASS="strong_pass_123"
DB_NAME="app_production"
BACKUP_DIR="/data/backups/db"
RETENTION_DAYS=7
RETENTION_WEEKS=4
# 安全检查:确认mysqld运行且用户权限有效
if ! mysql -u"$DB_USER" -p"$DB_PASS" -e "SELECT 1" >/dev/null 2>&1; then
echo "$(date): DB connection failed!" | logger -t db-backup
exit 1
fi
# 生成带时间戳的备份文件名(精确到分钟,避免并发冲突)
TIMESTAMP=$(date +"%Y%m%d_%H%M")
FILE_NAME="${DB_NAME}_${TIMESTAMP}.sql.gz"
# 执行导出 → 压缩 → 校验 → 归档(四步原子操作)
mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction --routines "$DB_NAME" \
| gzip > "$BACKUP_DIR/$FILE_NAME" 2>/dev/null
# 校验压缩包完整性(避免静默损坏)
if ! gunzip -t "$BACKUP_DIR/$FILE_NAME" >/dev/null 2>&1; then
rm "$BACKUP_DIR/$FILE_NAME"
echo "$(date): Backup corruption detected!" | logger -t db-backup
exit 1
fi
# 清理过期备份(保留最新7天 + 每周日备份保留4周)
find "$BACKUP_DIR" -name "${DB_NAME}_????????_*.sql.gz" -type f \
-mtime +$RETENTION_DAYS ! -name "*_0000.sql.gz" -delete 2>/dev/null
find "$BACKUP_DIR" -name "${DB_NAME}_????????_0000.sql.gz" -type f \
-mtime +$((RETENTION_WEEKS*7)) -delete 2>/dev/null
部署三步走:
1️⃣ 创建专用数据库账号(最小权限原则):
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'strong_pass'; GRANT LOCK TABLES, SELECT ON app_production.* TO 'backup_user'@'localhost'; FLUSH PRIVILEGES;
2️⃣ 设置crontab定时任务(每日凌晨2:15执行):
15 2 * * * /bin/bash /opt/scripts/db_backup.sh >> /var/log/db_backup.log 2>&1
3️⃣ 验证与监控:首次运行后检查ls -lt /data/backups/db,确认文件生成;启用logrotate轮转日志,避免日志膨胀。
进阶建议:
🔹 加密增强:若合规要求高,将gzip替换为gpg --cipher-algo AES256 -c,私钥绝不存于服务器;
🔹 异地同步:用rclone sync或aws s3 sync将备份推至对象存储,实现地理冗余;
🔹 可视化追踪:配合inotifywait监听备份目录,触发Prometheus指标上报,构建备份健康看板。
最后提醒:脚本再可靠,也需每月执行一次还原演练——真正验证备份有效性,备份不是“做了就行”,而是“恢复得了才算数”。
(全文共986字|原创实践总结,拒绝模板套话)
热门产品
弹性云服务器
强悍硬件配置结合弹性云服务器采用纯SSD架构硬件设备,只需几分钟,便可轻松云端获取和启用,实现您的计算需求。
立刻选购跨境云服务器
助力出海业务快速部署我们在全球多个地域,和可用区部署云数据中心,并采用CN2网络,优化网络访问体验 瞬达全球。
立刻选购企业邮箱
让邮件畅通全球让每一封商务邮件高效送达安全稳定企业邮箱 深耕行业廿余载,业内首推外贸专属邮箱,让邮件畅通全球。
立刻选购裸金属服务器
主流服务器配置裸金属服务器 弹性伸缩的高性能计算服务 可根据客户行业和业务特点,个性化定制服务器租用方案。
立刻选购