forked from xiaohei/taiji-AI-PAD
4.3 KiB
4.3 KiB
数据库迁移计划: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 | 充值记录表 |
⚠️ 注意事项
- 数据丢失风险: 此操作会删除 taiji 库中的所有现有数据,请确保已备份
- 外键约束: 删除表时使用 CASCADE 处理外键依赖
- 序列同步: 确保序列值正确同步,避免主键冲突
- 连接中断: 迁移过程中确保网络稳定
- 应用停机: 建议在迁移期间停止连接 taiji 库的应用服务
🚀 执行步骤
-
运行迁移脚本:
cd /home/taiji/tools/taiji-AI-PAD python scripts/sync_postgres_to_taiji.py -
验证迁移结果:
# 连接 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; -
更新应用配置(如需要): 确保应用的 DATABASE_URL 指向 taiji 库
📊 预期结果
迁移完成后:
- taiji 库将拥有与 postgres 库完全相同的表结构
- 所有数据将从 postgres 库复制到 taiji 库
- 索引和约束将正确创建
- 序列值将同步
下一步: 切换到 Code 模式创建迁移脚本