Linux LAMP数据备份策略与落地实现
一 备份范围与策略设计
二 工具与命令选型
三 落地方案与示例脚本
[client]
host=localhost
user=backup
password=YourStrongPass
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP_DIR="/backup/db"
MYSQL_OPTS="--single-transaction --routines --triggers --hex-blob --set-gtid-purged=OFF"
RETENTION_DAYS=7
DATE=$(date +%F_%H%M%S)
mkdir -p "$BACKUP_DIR"
mysqldump $MYSQL_OPTS --databases your_db1 your_db2 2>/dev/null \
| gzip > "$BACKUP_DIR/db_${DATE}.sql.gz"
# 清理旧备份
find "$BACKUP_DIR" -name "db_*.sql.gz" -mtime +$RETENTION_DAYS -delete
#!/usr/bin/env bash
set -Eeuo pipefail
WEB_ROOT="/var/www/html"
BACKUP_DIR="/backup/web"
RETENTION_DAYS=7
DATE=$(date +%F_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/web_${DATE}.tar.gz" -C "$WEB_ROOT" .
find "$BACKUP_DIR" -name "web_*.tar.gz" -mtime +$RETENTION_DAYS -delete
rsync -avz --delete -e ssh /backup/ backup@backup.example.com:/backup/
# 每天 02:00 数据库全备
0 2 * * * /usr/local/bin/db_backup.sh
# 每天 03:00 网站文件备份
0 3 * * * /usr/local/bin/web_backup.sh
四 恢复流程与演练
gunzip < /backup/db/db_2025-08-01_020000.sql.gz | mysql -u backup -p your_db
tar -xzf /backup/web/web_2025-08-01_030000.tar.gz -C /var/www/html
rsync -avz backup@backup.example.com:/backup/db/ /backup/db/
rsync -avz backup@backup.example.com:/backup/web/ /backup/web/
五 监控 安全与优化建议