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:
@ -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 框架的最佳实践。
|
||||
Reference in New Issue
Block a user