Popular blog tags

MongoDB Backup Strategies on ubuntu part2

Published

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"