项目背景与挑战
数据丢失是运维人员的噩梦。本文设计完整的备份策略:数据库定时备份、文件同步、异地存储,以及灾难恢复演练。 数据库备份脚本 bash !/bin/bash BACKUP DIR=/backup/mysql S3 BUCKET=s3://opsglobal backups DATE=$(date +%Y%m%d %H%M%S) DB NAME=opsglobal
解决方案
数据丢失是运维人员的噩梦。本文设计完整的备份策略:数据库定时备份、文件同步、异地存储,以及灾难恢复演练。 数据库备份脚本 bash !/bin/bash BACKUP DIR=/backup/mysql S3 BUCKET=s3://opsglobal backups DATE=$(date +%Y%m%d %H%M%S) DB NAME=opsglobal
交付结果
详细说明
数据丢失是运维人员的噩梦。本文设计完整的备份策略:数据库定时备份、文件同步、异地存储,以及灾难恢复演练。
数据库备份脚本
#!/bin/bash
BACKUP_DIR=/backup/mysql
S3_BUCKET=s3://opsglobal-backups
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME=opsglobal
RETENTION_DAYS=30
mysqldump -u root -p$DB_PASSWORD \
--single-transaction \
--routines \
--triggers \
$DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql
gzip $BACKUP_DIR/${DB_NAME}_${DATE}.sql
aws s3 cp $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz $S3_BUCKET/mysql/
find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -delete
echo "Backup completed: ${DB_NAME}_${DATE}.sql.gz"
文件系统备份(使用 rclone)
sudo apt install rclone
rclone config
rclone sync /app/data remote:opsglobal-backups/files \
--exclude .tmp \
--exclude node_modules \
--backup-dir remote:opsglobal-backups/archive/$(date +%Y%m%d)
定时任务配置
0 3 * * * /opt/opsglobal/scripts/backup.sh >> /var/log/backup.log 2>&1
0 4 * * 0 /usr/bin/rclone sync /app/data remote:opsglobal-backups/files
灾难恢复演练清单
-
模拟数据库损坏 - 停止服务:docker-compose stop app - 从备份恢复:gunzip < backup.sql.gz | mysql -u root -p opsglobal - 验证数据完整性
-
恢复时间目标(RTO):< 30 分钟
- 恢复点目标(RPO):< 24 小时
实用技巧
- 定期测试恢复流程,确保备份可用
- 使用增量备份减少存储和传输成本
- 考虑跨地域复制(如 S3 Cross-Region Replication)
- 加密备份文件,保护敏感数据
你的系统也遇到类似问题?
我们可以根据你的实际环境复用类似排查思路,提供远程诊断、修复、优化和交付报告。