gongxiangp2/docs/redis-deployment-safety.md

4.9 KiB
Raw Blame History

Redis部署 - 数据安全保障

📋 本次更新说明

✅ 数据库安全性

  • 本次更新不修改数据库schema
  • 所有现有数据完全安全
  • 仅添加Redis服务用于上传会话管理
  • 数据库表结构保持不变

🔍 Schema变更检查

本次更新涉及的变更:

  1. ✅ 无数据库schema变更 - 数据库结构完全不变
  2. ✅ 仅添加Redis服务 - 独立的Redis容器,不影响数据库
  3. ✅ 代码层面切换 - 通过环境变量USE_REDIS=true启用Redis
  4. ✅ 向后兼容 - 如果Redis不可用,自动降级到内存Map

🛡️ 数据安全保障措施

1. 部署前备份

部署脚本已自动包含数据库备份步骤:

  • 自动备份上传文件目录
  • 自动备份数据库(如果可能)
  • 保留最近5个备份文件

2. 安全的迁移流程

# 1. 备份数据库(自动)
./scripts/backup-database.sh

# 2. 检查schema差异(自动)
# 本次更新无schema变更,跳过

# 3. 部署代码(不影响数据库)
docker compose up -d --build

# 4. 验证数据库连接(自动)
# 确保数据库正常工作

3. 回滚方案

如果部署出现问题,可以快速回滚:

# 1. 停止新容器
docker compose down

# 2. 恢复备份
# 数据库备份在 backups/database-backup-*.sql.gz
# 上传文件备份在 backups/uploads-*/

# 3. 恢复旧代码
# 从git历史恢复或使用备份

# 4. 重启服务
docker compose up -d

📊 变更影响分析

数据库影响

  • ❌ 无影响 - 数据库schema无任何变更
  • ❌ 无数据丢失风险 - 不删除、不修改任何表结构
  • ❌ 无数据迁移 - 不需要迁移现有数据

功能影响

  • ✅ 新增功能 - Redis支持断点续传恢复
  • ✅ 向后兼容 - 如果Redis不可用,使用内存Map
  • ✅ 无破坏性变更 - 现有功能完全正常

性能影响

  • ✅ 性能提升 - Redis提供更快的会话查找
  • ✅ 可靠性提升 - 服务器重启后数据保留
  • ✅ 可扩展性 - 支持多实例部署

🔒 安全建议

1. 部署前检查

# 检查当前数据库数据
docker compose exec -T app npx prisma studio

# 检查数据库连接
docker compose exec -T app npx prisma db execute --stdin <<< "SELECT COUNT(*) FROM materials;"

2. 部署后验证

# 验证Redis连接
docker compose exec -T redis redis-cli ping

# 验证应用连接Redis
docker compose logs app | grep -i redis

# 验证数据库正常
docker compose exec -T app npx prisma db execute --stdin <<< "SELECT COUNT(*) FROM materials;"

3. 监控建议

  • 监控Redis内存使用
  • 监控数据库连接数
  • 监控上传功能是否正常
  • 检查错误日志

📝 部署清单

部署前

  • 确认数据库备份已创建
  • 确认上传文件已备份
  • 确认当前数据库数据正常
  • 确认Redis配置正确

部署中

  • 执行部署脚本
  • 监控部署日志
  • 检查容器状态
  • 验证服务连接

部署后

  • 验证数据库数据完整
  • 验证Redis服务正常
  • 测试上传功能
  • 测试断点续传功能
  • 检查错误日志

🚨 故障处理

如果Redis启动失败

# 检查Redis日志
docker compose logs redis

# 重启Redis
docker compose restart redis

# 如果Redis持续失败,应用会自动降级到内存Map
# 检查应用日志确认
docker compose logs app | grep -i "使用内存Map"

如果数据库连接失败

# 检查数据库连接
docker compose exec -T app npx prisma db execute --stdin <<< "SELECT 1;"

# 检查数据库配置
docker compose exec -T app env | grep DATABASE

# 恢复数据库备份(如果需要)
gunzip < backups/database-backup-*.sql.gz | docker compose exec -T app psql -h 192.168.58.20 -U gongxiangpan -d lobechat

如果上传功能异常

# 检查上传会话存储
docker compose logs app | grep -i "upload.*session"

# 检查Redis连接
docker compose exec -T redis redis-cli KEYS "upload:session:*"

# 如果Redis不可用,应用会自动使用内存Map
# 检查应用日志确认降级

✅ 总结

数据安全保证

  1. ✅ 无数据库schema变更 - 数据库结构完全不变
  2. ✅ 自动备份 - 部署前自动备份数据库和文件
  3. ✅ 向后兼容 - Redis失败时自动降级
  4. ✅ 快速回滚 - 支持快速回滚到旧版本

风险评估

  • 数据丢失风险: ⭐ 极低(无schema变更)
  • 功能破坏风险: ⭐ 极低(向后兼容)
  • 性能影响: ⭐ 正面(性能提升)
  • 部署复杂度: ⭐ 低(自动化脚本)

建议

  1. ✅ 可以安全部署 - 数据安全有保障
  2. ✅ 建议测试环境验证 - 在测试环境先验证
  3. ✅ 保留备份 - 部署前备份数据库
  4. ✅ 监控运行 - 部署后监控服务状态

结论:本次更新完全安全,可以放心部署! 🎉