feat: 完成数据库迁移系统开发

- 创建完整的迁移框架 (pkg/migration/)
- 版本管理系统,时间戳版本号 (YYYYMMDD_HHMMSS)
- 事务安全的上下迁移机制 (Up/Down)
- 迁移状态跟踪和记录 (migration_records 表)
- 命令行迁移工具 (cmd/migrate/main.go)
- 生产环境迁移脚本 (scripts/production-migrate.sh)
- 生产环境初始化脚本 (scripts/init-production-db.sh)
- 迁移测试脚本 (scripts/test-migration.sh)
- Makefile 集成 (migrate-up, migrate-down, migrate-status)
- 5个预定义迁移 (基础表、默认数据、元数据、收藏、用户资料)
- 自动备份机制、预览模式、详细日志
- 完整文档 (docs/DATABASE_MIGRATION.md)

任务13完成,项目完成率达到42.5%
This commit is contained in:
xujiang
2025-07-11 13:41:52 +08:00
parent 543c59bdca
commit 84e778e033
12 changed files with 3290 additions and 9 deletions

View File

@ -181,4 +181,65 @@ go run cmd/job/main.go -f etc/photographyjob.yaml
- **生产模式**: 使用 PostgreSQL + Redis完整的生产环境配置
- **测试模式**: 使用内存数据库,用于单元测试和集成测试
## 🗄️ 数据库迁移系统
### 迁移系统架构
项目采用自定义的数据库迁移系统,提供完整的版本控制和回滚机制:
```
pkg/migration/
├── migration.go # 迁移管理器核心逻辑
├── migrations.go # 所有迁移定义
└── README.md # 迁移开发指南
cmd/migrate/
└── main.go # 命令行迁移工具
scripts/
├── production-migrate.sh # 生产环境迁移脚本
└── init-production-db.sh # 生产环境初始化脚本
docs/
└── DATABASE_MIGRATION.md # 完整迁移文档
```
### 快速迁移命令
```bash
# 开发环境
make migrate-status # 查看迁移状态
make migrate-up # 运行所有迁移
make migrate-down STEPS=1 # 回滚1步迁移
make migrate-create NAME=xxx # 创建新迁移
make db-backup # 创建备份
make db-restore BACKUP=file # 恢复备份
# 生产环境
./scripts/production-migrate.sh status # 查看状态
./scripts/production-migrate.sh migrate # 执行迁移
./scripts/production-migrate.sh -d migrate # 预览模式
./scripts/init-production-db.sh # 全新初始化
```
### 迁移开发流程
1. **创建迁移**: `make migrate-create NAME="add_user_field"`
2. **编辑迁移**: 在 `pkg/migration/migrations.go` 中添加迁移定义
3. **测试迁移**: `make migrate-up``make migrate-down STEPS=1`
4. **部署生产**: `./scripts/production-migrate.sh migrate`
### 特性
-**版本控制**: 时间戳版本号,确保迁移顺序
-**回滚支持**: 每个迁移都支持安全回滚
-**自动备份**: 生产环境迁移前自动备份
-**SQLite 优化**: 针对 SQLite 限制的特殊处理
-**事务安全**: 每个迁移在事务中执行
-**状态跟踪**: 完整的迁移状态记录
-**预览模式**: 支持预览迁移而不实际执行
-**日志记录**: 详细的迁移日志和错误追踪
详细使用方法请参考: [数据库迁移文档](docs/DATABASE_MIGRATION.md)
本 CLAUDE.md 文件为后端开发提供了全面的指导,遵循 go-zero 框架的最佳实践。