备份与恢复
Glean 的数据存储在以下位置:
| 数据类型 | 存储位置 | 重要性 |
|---|---|---|
| 数据库 | PostgreSQL (postgres_data volume) | 关键 |
| 缓存 | Redis (redis_data volume) | 可选 |
| 日志 | glean_logs volume | 可选 |
| 向量数据 | Milvus volumes(完整版) | 重要 |
# 备份 PostgreSQL 数据库docker exec glean-postgres pg_dump -U glean glean | gzip > glean_db_$(date +%Y%m%d_%H%M%S).sql.gz自动备份脚本
Section titled “自动备份脚本”创建备份脚本 backup-glean.sh:
#!/bin/bash
BACKUP_DIR="$HOME/glean-backups"DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# 备份 PostgreSQLdocker exec glean-postgres pg_dump -U glean glean | gzip > "$BACKUP_DIR/glean_db_$DATE.sql.gz"
# 备份 PostgreSQL 数据卷docker run --rm \ -v glean_postgres_data:/data \ -v "$BACKUP_DIR":/backup \ alpine tar czf /backup/postgres_data_$DATE.tar.gz -C /data .
# 备份 Redis 数据卷docker run --rm \ -v glean_redis_data:/data \ -v "$BACKUP_DIR":/backup \ alpine tar czf /backup/redis_data_$DATE.tar.gz -C /data .
# 清理 7 天前的备份find "$BACKUP_DIR" -name "*.gz" -mtime +7 -delete
echo "Backup completed: $BACKUP_DIR"设置执行权限并运行:
chmod +x backup-glean.sh./backup-glean.sh使用 cron 设置每日备份:
# 编辑 crontabcrontab -e
# 添加每日凌晨 2 点备份0 2 * * * /path/to/backup-glean.sh从 SQL 备份恢复
Section titled “从 SQL 备份恢复”# 停止服务docker compose down
# 启动数据库docker compose up -d postgres
# 等待数据库就绪sleep 10
# 恢复数据gunzip -c glean_db_20250101_020000.sql.gz | docker exec -i glean-postgres psql -U glean -d glean
# 启动所有服务docker compose up -d从卷备份恢复
Section titled “从卷备份恢复”# 停止服务docker compose down
# 删除旧卷docker volume rm glean_postgres_data
# 创建新卷docker volume create glean_postgres_data
# 恢复数据docker run --rm \ -v glean_postgres_data:/data \ -v "$HOME/glean-backups":/backup \ alpine tar xzf /backup/postgres_data_20250101_020000.tar.gz -C /data
# 启动服务docker compose up -d完整备份(含 Milvus)
Section titled “完整备份(含 Milvus)”完整版本还需要备份 Milvus 数据:
#!/bin/bash
BACKUP_DIR="$HOME/glean-backups"DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# 备份 PostgreSQLdocker exec glean-postgres pg_dump -U glean glean | gzip > "$BACKUP_DIR/glean_db_$DATE.sql.gz"
# 备份所有数据卷for volume in postgres_data redis_data milvus_etcd_data milvus_minio_data milvus_data; do docker run --rm \ -v glean_${volume}:/data \ -v "$BACKUP_DIR":/backup \ alpine tar czf /backup/${volume}_$DATE.tar.gz -C /data .done
echo "Full backup completed: $BACKUP_DIR"迁移到新服务器
Section titled “迁移到新服务器”在旧服务器上:
# 备份数据库docker exec glean-postgres pg_dump -U glean glean | gzip > glean_backup.sql.gz
# 导出 OPML(可选,用户级别)# 通过 Web 界面导出在新服务器上:
# 部署 Gleancurl -fsSL https://raw.githubusercontent.com/LeslieLeung/glean/main/docker-compose.yml -o docker-compose.ymldocker compose up -d
# 等待数据库就绪sleep 30
# 恢复数据gunzip -c glean_backup.sql.gz | docker exec -i glean-postgres psql -U glean -d glean
# 重启服务docker compose restart备份策略建议
Section titled “备份策略建议”| 策略 | 频率 | 保留时间 | 说明 |
|---|---|---|---|
| 每日备份 | 每天 | 7 天 | SQL 备份 |
| 每周备份 | 每周 | 4 周 | 完整卷备份 |
| 每月备份 | 每月 | 12 个月 | 归档备份 |
定期验证备份的完整性:
# 检查备份文件gunzip -t glean_db_*.sql.gz
# 在测试环境恢复验证docker compose -f docker-compose.test.yml up -d# 恢复并验证数据