danial 6dbe9fe6b9 feat(database): 更新并重构数据库表结构与环境配置
- 添加本地环境配置,包含Schema和连接信息
- 在本地和生产环境配置中新增diff块支持
- 重新设计merchant_hidden_config表结构及命名调整
- 新增并重命名多个核心业务表,如order_profit_info改为merchant_hidden_record
- 调整camel_oil_account表与相关索引定义
- 重构account_history_info和card_apple_history_info相关表结构
- 统一并整理代付相关表payfor_info和merchant_load_info字段及索引
- 丰富并优化商户、代理、账户等多张业务表字段及索引配置
- 增加alembic_version表用于版本控制
- 对多张表字符集及排序规则进行了统一和优化调整
- 优化索引设置以提升查询性能和数据一致性保障
2025-12-14 20:00:27 +08:00

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

注意事项

  1. 使用版本化迁移,每次修改 schema.sql 后需运行 generate-migration.sh 生成迁移文件
  2. 迁移文件会按顺序执行,确保数据库状态可追溯
  3. 生产环境需配置 .env 文件或设置环境变量
  4. **首次部署到已有数据库:**必须设置 BASELINE_VERSION=20251213191759 来标记现有数据库状态
  5. **后续部署:**删除或注释 BASELINE_VERSION 环境变量
Description
No description provided
Readme 59 KiB
Languages
HCL 57.6%
Dockerfile 26.7%
Shell 15.7%