MongoDB备份策略
定时执行:每天凌晨业务低峰期执行。
增量与全量:每周一次全量备份,每天一次增量备份(或始终全量,根据数据量决定)。
保留策略:保留最近 N 天的备份,防止磁盘爆满。
远程存储:将备份文件同步到远程服务器或云存储(如 AWS S3, 阿里云 OSS, SFTP 服务器等)。
Backup script (rsync + cron)
项目文件结构
mongodb_backup/
├── config/
│ ├── backup_config.env # 主配置文件
│ └── platform_config.sh/ps1 # 平台特定配置
├── scripts/
│ ├── mongo_backup_linux.sh
│ ├── mongo_backup_windows.ps1
│ ├── cleanup_old_backups.sh
│ └── health_check.sh
├── logs/ # 自动创建
│ └── backup.log
└── remote_sync/ # 远程同步脚本
├── sync_to_s3.sh
└── sync_to_sftp.sh
#!/bin/bash
# /config/scripts/backup_db.sh
set -e
DB_SOURCE="/mnt/ramdisk/home-assistant-v2.db"
BACKUP_DIR="/config/backups"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/home-assistant-v2_$DATE.db"
echo "开始备份 Home Assistant 数据库..."
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# SQLite 在线安全备份
sqlite3 "$DB_SOURCE" ".backup '$BACKUP_FILE'"
# 压缩
gzip "$BACKUP_FILE"
# 清理旧备份(只保留最近 7 个)
cd "$BACKUP_DIR"
ls -t home-assistant-v2_*.db.gz 2>/dev/null | tail -n +8 | xargs -r rm --
echo "备份完成: $BACKUP_FILE.gz"
