Files
taiji-AI-PAD/plans/database-migration-plan.md
T
2025-12-31 10:56:00 +00:00

4.3 KiB
Raw Blame History

数据库迁移计划:postgres → taiji

创建时间: 2025-12-31
目标: 将 postgres 库的表结构和数据完全覆盖到 taiji 库


📋 任务概述

将 Azure PostgreSQL 服务器上的 postgres 数据库(新结构)完全复制到 taiji 数据库(旧结构),包括:

  • 表结构
  • 索引
  • 约束
  • 数据
  • 序列

🔄 迁移流程图

flowchart TD
    A[开始迁移] --> B[连接 postgres 源数据库]
    B --> C[连接 taiji 目标数据库]
    C --> D[备份 taiji 数据库 - 可选]
    D --> E[删除 taiji 中的所有表]
    E --> F[从 postgres 获取表结构]
    F --> G[在 taiji 中创建表]
    G --> H[创建索引和约束]
    H --> I[复制数据]
    I --> J[同步序列值]
    J --> K[验证迁移结果]
    K --> L[完成]

✅ 任务清单

1. 准备工作

  • 确认数据库连接信息正确
  • 确认 postgres 库中有最新的表结构
  • 备份 taiji 库现有数据(可选但推荐)

2. 创建迁移脚本

  • 修改现有 copy_database.py 脚本,交换源和目标数据库
  • 或创建新脚本 sync_postgres_to_taiji.py

3. 脚本功能实现

  • 连接源数据库(postgres)
  • 连接目标数据库(taiji)
  • 获取 postgres 库所有表列表
  • 删除 taiji 库中的所有现有表(CASCADE)
  • 复制表结构(DDL)
  • 复制索引定义
  • 复制数据
  • 同步序列值

4. 验证和测试

  • 验证表数量一致
  • 验证数据行数一致
  • 验证索引创建成功
  • 测试应用连接 taiji 库正常工作

📝 技术细节

数据库连接信息

DB_HOST = "taijipda.postgres.database.azure.com"
DB_USER = "taiji"
DB_PASSWORD = "By@123456."
DB_PORT = 5432

# 源数据库(新结构)
SOURCE_DB = "postgres"

# 目标数据库(需要更新)
TARGET_DB = "taiji"

主要表列表(基于 models.py)

表名 说明
users 用户表(租户使用者)
agents Agent表(平台Agent和自定义Agent)
tools 工具表
sessions 会话表
executions 执行记录表
api_keys API密钥表
billing 计费详情表
balances 用户余额表
billing_records 计费记录表
channels 渠道合作伙伴表
model_providers 模型供应商表
resource_allocations 资源分配表
applications 申请审批表
workflows 工作流表
audit_logs 审计日志表
channel_agent_quotas 渠道Agent配额表
provider_models 模型提供商表
token_blacklist Token黑名单表
resource_usage 资源使用记录表
quota_alerts 配额预警记录表
model_pricing 模型定价配置表
provider_health_checks 供应商健康检查记录表
agent_traces Agent执行轨迹表
billing_events 计费事件表
channel_provider_access 渠道供应商授权表
provider_applications 供应商使用申请表
gateway_apis 网关API定义表
data_templates 数据模板表
recharge_records 充值记录表

⚠️ 注意事项

  1. 数据丢失风险: 此操作会删除 taiji 库中的所有现有数据,请确保已备份
  2. 外键约束: 删除表时使用 CASCADE 处理外键依赖
  3. 序列同步: 确保序列值正确同步,避免主键冲突
  4. 连接中断: 迁移过程中确保网络稳定
  5. 应用停机: 建议在迁移期间停止连接 taiji 库的应用服务

🚀 执行步骤

  1. 运行迁移脚本:

    cd /home/taiji/tools/taiji-AI-PAD
    python scripts/sync_postgres_to_taiji.py
    
  2. 验证迁移结果:

    # 连接 taiji 库检查表
    psql "host=taijipda.postgres.database.azure.com port=5432 dbname=taiji user=taiji password=By@123456. sslmode=require"
    
    # 查看所有表
    \dt
    
    # 检查数据行数
    SELECT COUNT(*) FROM users;
    SELECT COUNT(*) FROM agents;
    
  3. 更新应用配置(如需要): 确保应用的 DATABASE_URL 指向 taiji 库


📊 预期结果

迁移完成后:

  • taiji 库将拥有与 postgres 库完全相同的表结构
  • 所有数据将从 postgres 库复制到 taiji 库
  • 索引和约束将正确创建
  • 序列值将同步

下一步: 切换到 Code 模式创建迁移脚本