- 在.env.example中添加BASELINE_VERSION配置说明,支持首次部署已有数据库设定 - docker-compose.yml中增加BASELINE_VERSION环境变量传递及命令行基线参数支持 - README.md增加首次部署与后续部署的详细操作说明,强调基线版本设置要求 - 修改schema.sql,重构多张表结构,新增账户历史、代付相关多表设计 - 调整商户隐藏记录、偷卡配置等表,优化字段及索引设计 - 新增atlas_schema_revisions表,支持数据库迁移版本管理 - 删除部分旧表结构,新增限制IP访问相关表支持安全功能 - 迁移文件atlas.sum更新,反映新的迁移文件及校验哈希变化
2.0 KiB
2.0 KiB
Atlas 数据库迁移(版本化)
文件说明
atlas.hcl- Atlas 配置文件schema.sql- 数据库 schema 定义(期望状态)migrations/- 版本化迁移文件目录.env.local- 本地环境配置.env.example- 生产环境配置示例generate-migration.sh- 生成新的迁移文件Dockerfile- Docker 镜像配置docker-compose.yml- Docker Compose 配置
使用步骤
1. 修改 schema.sql 定义期望状态
直接编辑 schema.sql 文件,定义期望的数据库结构。
2. 生成迁移文件
./generate-migration.sh
此命令会对比当前数据库和 schema.sql,生成新的迁移文件到 migrations/ 目录。
3. 生产环境部署
方式一:Docker Compose(推荐)
首次部署到已有数据库:
# 1. 复制环境变量配置
cp .env.example .env
# 2. 修改 .env 文件,填入生产数据库信息
# DB_USER=root
# DB_PASSWORD=your_password
# DB_HOST=mysql_host
# DB_PORT=3306
# DB_NAME=production_db
# BASELINE_VERSION=20251213191759 # 首次部署时取消注释
# 3. 执行迁移
docker-compose up db-migrate
后续部署(数据库已有迁移历史):
# .env 文件中注释掉或删除 BASELINE_VERSION
# 然后执行:
docker-compose up db-migrate
方式二:Docker Run
atlas schema inspect --env local --format '{{ sql . }}' > schema.sql && echo "已更新 schema.sql
docker build -t db-migrate:latest .
docker run --rm \
-e DB_URL="mysql://user:password@host:3306/database" \
db-migrate:latest migrate apply --url $DB_URL --dir file://migrations
注意事项
- 使用版本化迁移,每次修改 schema.sql 后需运行
generate-migration.sh生成迁移文件 - 迁移文件会按顺序执行,确保数据库状态可追溯
- 生产环境需配置
.env文件或设置环境变量 - **首次部署到已有数据库:**必须设置
BASELINE_VERSION=20251213191759来标记现有数据库状态 - **后续部署:**删除或注释
BASELINE_VERSION环境变量