4.9 KiB
4.9 KiB
Redis部署 - 数据安全保障
📋 本次更新说明
✅ 数据库安全性
- 本次更新不修改数据库schema
- 所有现有数据完全安全
- 仅添加Redis服务用于上传会话管理
- 数据库表结构保持不变
🔍 Schema变更检查
本次更新涉及的变更:
- ✅ 无数据库schema变更 - 数据库结构完全不变
- ✅ 仅添加Redis服务 - 独立的Redis容器,不影响数据库
- ✅ 代码层面切换 - 通过环境变量
USE_REDIS=true启用Redis - ✅ 向后兼容 - 如果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
# 检查应用日志确认降级
✅ 总结
数据安全保证
- ✅ 无数据库schema变更 - 数据库结构完全不变
- ✅ 自动备份 - 部署前自动备份数据库和文件
- ✅ 向后兼容 - Redis失败时自动降级
- ✅ 快速回滚 - 支持快速回滚到旧版本
风险评估
- 数据丢失风险: ⭐ 极低(无schema变更)
- 功能破坏风险: ⭐ 极低(向后兼容)
- 性能影响: ⭐ 正面(性能提升)
- 部署复杂度: ⭐ 低(自动化脚本)
建议
- ✅ 可以安全部署 - 数据安全有保障
- ✅ 建议测试环境验证 - 在测试环境先验证
- ✅ 保留备份 - 部署前备份数据库
- ✅ 监控运行 - 部署后监控服务状态
结论:本次更新完全安全,可以放心部署! 🎉