# 数据库迁移计划:postgres → taiji **创建时间**: 2025-12-31 **目标**: 将 postgres 库的表结构和数据完全覆盖到 taiji 库 --- ## 📋 任务概述 将 Azure PostgreSQL 服务器上的 `postgres` 数据库(新结构)完全复制到 `taiji` 数据库(旧结构),包括: - 表结构 - 索引 - 约束 - 数据 - 序列 --- ## 🔄 迁移流程图 ```mermaid 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 库正常工作 --- ## 📝 技术细节 ### 数据库连接信息 ```python 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. **运行迁移脚本**: ```bash cd /home/taiji/tools/taiji-AI-PAD python scripts/sync_postgres_to_taiji.py ``` 2. **验证迁移结果**: ```bash # 连接 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 模式创建迁移脚本