|
|
@@ -1,20 +1,14 @@
|
|
|
-# 数据库备份和恢复工具集成 - User Story
|
|
|
+# Story 001.005: 数据库备份和恢复工具集成
|
|
|
|
|
|
-## Story ID
|
|
|
-001.005
|
|
|
+## Status
|
|
|
+Draft
|
|
|
|
|
|
-## Epic
|
|
|
-Epic 001: 测试基础设施搭建 docs/prd/epic-001-test-infrastructure.md
|
|
|
-
|
|
|
-## User Story
|
|
|
-作为系统管理员,我需要可靠的数据库备份和恢复功能,以便在数据丢失或系统故障时能够快速恢复服务。
|
|
|
-
|
|
|
-## Description
|
|
|
-为D8D Starter项目实现完整的数据库备份和恢复解决方案,集成到现有的测试基础设施中。备份功能应该自动化、可靠,并且易于测试和验证。
|
|
|
+## Story
|
|
|
+**As a** 系统管理员
|
|
|
+**I want** 可靠的数据库备份和恢复功能
|
|
|
+**so that** 在数据丢失或系统故障时能够快速恢复服务
|
|
|
|
|
|
## Acceptance Criteria
|
|
|
-
|
|
|
-### 必须满足
|
|
|
- [ ] 实现每日自动数据库备份功能
|
|
|
- [ ] 备份文件存储在项目目录的 `backups/` 文件夹中
|
|
|
- [ ] 使用PostgreSQL的 `pg_dump` 工具进行备份
|
|
|
@@ -22,47 +16,51 @@ Epic 001: 测试基础设施搭建 docs/prd/epic-001-test-infrastructure.md
|
|
|
- [ ] 实现备份清理策略,自动删除7天前的旧备份
|
|
|
- [ ] 集成到Node.js应用中使用 `node-cron` 调度
|
|
|
- [ ] 提供手动触发备份的脚本或命令
|
|
|
-
|
|
|
-### 应该满足
|
|
|
- [ ] 备份过程记录详细的日志信息
|
|
|
- [ ] 实现备份状态监控和错误通知,集成到现有监控系统
|
|
|
- [ ] 提供备份验证工具,检查备份文件的完整性
|
|
|
- [ ] 集成到CI/CD流水线中进行备份恢复测试
|
|
|
-
|
|
|
-### 可以满足
|
|
|
- [ ] 支持增量备份功能(生产环境)
|
|
|
- [ ] 提供图形化界面查看备份状态
|
|
|
- [ ] 实现备份加密功能
|
|
|
- [ ] 设置备份文件权限为仅管理员可访问(chmod 600)
|
|
|
|
|
|
-## Technical Requirements
|
|
|
-
|
|
|
-### 技术栈
|
|
|
+## Tasks / Subtasks
|
|
|
+- [ ] 创建备份脚本 backup.ts (AC: 1,2,3,4,6,7)
|
|
|
+ - [ ] 实现pg_dump备份功能
|
|
|
+ - [ ] 添加自定义格式支持
|
|
|
+ - [ ] 集成node-cron调度
|
|
|
+ - [ ] 实现日志记录
|
|
|
+- [ ] 创建恢复脚本 restore.ts (AC: 4,7)
|
|
|
+ - [ ] 实现pg_restore功能
|
|
|
+ - [ ] 支持选择性恢复
|
|
|
+- [ ] 创建backups目录并配置权限 (AC: 2,14)
|
|
|
+ - [ ] 创建backups/目录结构
|
|
|
+ - [ ] 实现文件权限控制
|
|
|
+- [ ] 实现备份清理策略 (AC: 5)
|
|
|
+ - [ ] 自动删除7天前备份
|
|
|
+- [ ] 集成监控和告警 (AC: 9)
|
|
|
+ - [ ] 集成到现有监控系统
|
|
|
+- [ ] 创建测试套件 (AC: 11)
|
|
|
+ - [ ] 单元测试
|
|
|
+ - [ ] 集成测试
|
|
|
+ - [ ] E2E测试
|
|
|
+
|
|
|
+## Dev Notes
|
|
|
+### 技术栈 [Source: architecture/infrastructure-deployment.md#数据库备份策略]
|
|
|
- **调度工具**: node-cron
|
|
|
- **备份工具**: PostgreSQL pg_dump/pg_restore
|
|
|
-- **存储位置**: ./backups/ 目录(已加入.gitignore)
|
|
|
+- **存储位置**: ./backups/ 目录
|
|
|
- **日志记录**: 使用现有日志系统
|
|
|
|
|
|
-### 备份策略
|
|
|
+### 备份策略 [Source: architecture/infrastructure-deployment.md#数据库备份策略]
|
|
|
- **频率**: 每日凌晨2点执行完整备份
|
|
|
- **保留**: 最近7天的每日备份
|
|
|
- **格式**: 自定义格式(-Fc)用于快速恢复
|
|
|
- **存储**: 本地文件系统,避免外部依赖
|
|
|
- **安全**: 备份文件权限设置为仅管理员可访问(chmod 600)
|
|
|
|
|
|
-### 恢复测试
|
|
|
-- 每月执行一次恢复演练
|
|
|
-- 集成到测试套件中验证备份可用性
|
|
|
-- 确保恢复过程简单可靠
|
|
|
-- 恢复功能验收标准:
|
|
|
- - 恢复时间在5分钟内完成
|
|
|
- - 恢复后数据完整性验证通过
|
|
|
- - 恢复过程中断后可继续恢复
|
|
|
- - 支持选择性恢复(表级别或数据库级别)
|
|
|
-
|
|
|
-## Implementation Details
|
|
|
-
|
|
|
-### 主要文件结构
|
|
|
+### 文件结构
|
|
|
```
|
|
|
scripts/
|
|
|
backup.ts # 主备份脚本
|
|
|
@@ -71,115 +69,42 @@ tests/
|
|
|
backup.test.ts # 备份功能测试
|
|
|
backups/ # 备份文件存储目录
|
|
|
daily/ # 每日备份
|
|
|
- weekly/ # 每周备份(可选)
|
|
|
```
|
|
|
|
|
|
### 环境变量配置
|
|
|
-```bash
|
|
|
-# 数据库连接配置
|
|
|
-POSTGRES_HOST=localhost
|
|
|
-POSTGRES_PORT=5432
|
|
|
-POSTGRES_DB=your_database
|
|
|
-POSTGRES_USER=your_user
|
|
|
-POSTGRES_PASSWORD=your_password
|
|
|
-
|
|
|
-# 备份配置
|
|
|
-BACKUP_SCHEDULE="0 2 * * *" # 每日凌晨2点
|
|
|
-BACKUP_RETENTION_DAYS=7 # 保留7天
|
|
|
-```
|
|
|
+需要配置数据库连接和备份调度参数
|
|
|
|
|
|
### 测试要求
|
|
|
- 单元测试覆盖所有备份逻辑
|
|
|
- 集成测试验证备份文件生成和恢复
|
|
|
- E2E测试确保整个备份恢复流程正常工作
|
|
|
-- 异常场景测试:磁盘空间不足、网络中断、权限错误等
|
|
|
- 测试覆盖率 > 80%
|
|
|
|
|
|
-## Dependencies
|
|
|
-- 依赖于现有的数据库基础设施
|
|
|
-- 需要PostgreSQL客户端工具可用
|
|
|
-- 集成到现有的日志和监控系统
|
|
|
-
|
|
|
-## Risks
|
|
|
-- 备份过程可能影响数据库性能
|
|
|
-- 备份文件存储需要足够的磁盘空间
|
|
|
-- 恢复过程需要严格测试确保可靠性
|
|
|
-
|
|
|
-## Mitigation Strategies
|
|
|
-- 在低峰时段执行备份
|
|
|
-- 实施磁盘空间监控和告警
|
|
|
-- 集成备份状态监控到现有告警系统
|
|
|
-- 定期进行恢复测试演练
|
|
|
-- 提供详细的文档和操作指南
|
|
|
-
|
|
|
-## Definition of Done
|
|
|
-- [ ] 所有验收标准满足
|
|
|
-- [ ] 代码审查通过
|
|
|
-- [ ] 测试覆盖率达标
|
|
|
-- [ ] 文档更新完成
|
|
|
-- [ ] 集成到CI/CD流水线
|
|
|
-- [ ] 生产环境部署验证
|
|
|
-
|
|
|
-## QA Results
|
|
|
-
|
|
|
-### Quality Gate: FAIL
|
|
|
-**Review Date**: 2025-09-19
|
|
|
-**Reviewer**: Quinn - Test Architect
|
|
|
-
|
|
|
-#### Implementation Status Assessment
|
|
|
-- **当前状态**: 功能未实现 - 0% 完成度
|
|
|
-- **代码存在**: 未找到备份相关代码文件
|
|
|
-- **脚本结构**: scripts/ 目录缺少备份脚本
|
|
|
-- **依赖检查**: node-cron 未在 package.json 中
|
|
|
-- **目录结构**: backups/ 目录不存在
|
|
|
-
|
|
|
-#### Strengths ✅
|
|
|
-- 用户故事结构完整,角色和需求定义清晰
|
|
|
-- 验收标准分层合理,标准可衡量和测试
|
|
|
-- 技术方案选择恰当,符合项目技术栈
|
|
|
-- 风险识别全面,提供了有效的缓解策略
|
|
|
-- 测试覆盖要求合理,包含多层次测试
|
|
|
-- 数据库类型已明确为 PostgreSQL
|
|
|
-
|
|
|
-#### Critical Issues ❌
|
|
|
-1. **功能缺失**: 核心备份功能完全未实现
|
|
|
-2. **依赖缺失**: node-cron 调度库未安装
|
|
|
-3. **目录缺失**: backups/ 存储目录未创建
|
|
|
-4. **脚本缺失**: 备份和恢复脚本不存在
|
|
|
-5. **集成缺失**: 未集成到现有应用架构中
|
|
|
-
|
|
|
-#### Concerns ⚠️
|
|
|
-1. **安全性**: 备份文件权限控制需要实现
|
|
|
-2. **监控告警**: 需要集成到现有监控系统
|
|
|
-3. **异常处理**: 需要完善的错误处理和重试机制
|
|
|
-4. **性能影响**: 备份过程对数据库性能的影响需要评估
|
|
|
-5. **恢复验证**: 需要自动化恢复验证机制
|
|
|
-
|
|
|
-#### Risk Assessment
|
|
|
-- **Critical**: 3 (功能缺失、依赖缺失、目录缺失)
|
|
|
-- **High**: 2 (安全性、监控告警)
|
|
|
-- **Medium**: 2 (异常处理、性能影响)
|
|
|
-- **Low**: 1 (文档细节)
|
|
|
-
|
|
|
-#### Test Coverage Validation
|
|
|
-- 单元测试: ❌ 未实现
|
|
|
-- 集成测试: ❌ 未实现
|
|
|
-- E2E测试: ❌ 未实现
|
|
|
-- 覆盖率目标: ❌ 0%
|
|
|
-
|
|
|
-### Required Actions for PASS
|
|
|
-1. **核心功能实现**: 创建备份脚本 (backup.ts) 和恢复脚本 (restore.ts)
|
|
|
-2. **依赖安装**: 添加 node-cron 到 package.json
|
|
|
-3. **目录创建**: 创建 backups/ 目录并添加到 .gitignore
|
|
|
-4. **调度集成**: 实现每日凌晨2点的自动备份调度
|
|
|
-5. **权限控制**: 实现备份文件权限设置 (chmod 600)
|
|
|
-6. **日志记录**: 集成到现有日志系统
|
|
|
-7. **测试实现**: 创建完整的测试套件
|
|
|
-8. **监控集成**: 集成备份状态到监控系统
|
|
|
-
|
|
|
-### Next Steps
|
|
|
-1. 立即开始功能开发
|
|
|
-2. 优先实现核心备份功能
|
|
|
-3. 逐步完善测试覆盖
|
|
|
-4. 集成到CI/CD流水线
|
|
|
-5. 进行恢复演练测试
|
|
|
+## Testing
|
|
|
+### 测试标准 [Source: architecture/testing-strategy.md]
|
|
|
+- 使用Vitest进行单元和集成测试
|
|
|
+- 测试文件位于tests/目录
|
|
|
+- 遵循现有测试模式和结构
|
|
|
+
|
|
|
+### 测试场景
|
|
|
+- 正常备份流程测试
|
|
|
+- 恢复功能验证
|
|
|
+- 异常场景测试(磁盘空间不足、权限错误等)
|
|
|
+- 性能影响评估
|
|
|
+
|
|
|
+## Change Log
|
|
|
+| Date | Version | Description | Author |
|
|
|
+|------|---------|-------------|--------|
|
|
|
+| 2025-09-19 | v1.0 | 初始故事创建 | Bob |
|
|
|
+
|
|
|
+## Dev Agent Record
|
|
|
+### Agent Model Used
|
|
|
+{{agent_model_name_version}}
|
|
|
+
|
|
|
+### Debug Log References
|
|
|
+
|
|
|
+### Completion Notes List
|
|
|
+
|
|
|
+### File List
|
|
|
+
|
|
|
+## QA Results
|