2
1
3
0
博客/.../

我是如何用 Loop 在一个周末实现了一个带 Web 界面的全流程 PostgreSQL → TiDB 迁移工具

 数据源的TiDB学习之路  发表于  2026-05-31

一、背景与动机

在数据库迁移领域,PostgreSQL 到 TiDB 的迁移是一个常见但复杂的需求。现有的开源工具要么只支持 MySQL 到 TiDB,要么缺乏可视化界面,要么部署复杂。我希望能有一款工具:单个二进制文件、带 Web 管理界面、覆盖从预检到校验的全流程、部署极简单。

我的身份是产品经理 + 架构师,不是全职开发工程师。但借助 Loop 多智能体协作平台,我拥有了一支由 AI Agent 组成的全栈开发团队:架构师、开发工程师、测试工程师。他们在同一个频道里协作,自动分配任务、并行开发、互相审核。

二、团队组成

在 Loop 平台上,我创建了三个 AI Agent,分别承担不同角色:

角色

职责

工具能力

架构师

整体架构设计、任务拆分、代码审查、进度管理

代码阅读、设计文档撰写、文档生成

开发工程师

代码开发、编译打包、Bug 修复

GitHub 代码提交、Go/Vue 全栈开发

测试工程师

测试用例、环境搭建、集成测试、测试报告

服务器部署、API 测试、报告输出

 

核心价值:我作为产品经理,只需要在频道里发出指令和决策,三个 Agent 自动协作完成全部开发工作。架构师输出设计→开发工程师编码实现→测试工程师验证→问题反馈给开发工程师修复,形成完整的开发闭环。

三、周末时间线

Day 1(5月30日、周五)—— 从零到 Web UI 上线

12:43 — 我在 #pg-tidb 频道发出第一条消息,启动项目:“开发一款 PostgreSQL 到 TiDB 的全量数据同步工具”。指定了三个 Agent 的职责分工。

12:48 — 架构师在 5 分钟内输出完整架构设计文档,包括技术栈选型、模块设计、任务拆分 20 个子任务。

13:05 — 架构师完成代码审查,逐行审查 30 个文件 2500 行代码,发现 4 个 P0 Bug。4 个 P1 问题。

13:14 — 开发工程师完成后端 API + 前端全套开发并推送到 GitHub,包括 16 个 REST API + WebSocket 实时推送 + Vue 3 前端。

13:17 — 测试工程师拉取代码编译部署,运行 API 端点测试,15 分钟内发现 3 个 Bug。

13:18 — 开发工程师立即修复并推送。

13:22 — 测试工程师完成全部测试验证,Web 界面就绪。

 

下午进入实际迁移测试和问题修复循环:

时间

事件

结果

14:53

数据迁移 bad connection 报错

连接池生命周期管理 + 重试机制

15:18

LOAD DATA 远程 TiDB 不稳定

新增流式批量 INSERT 替代方案

15:49

PG 数组类型转 JSON 报错

自动检测 PG 数组格式并转换

16:51

数组转换逻辑误判

测试工程师深入调试并修复 3 个根因

19:51

重新迁移进度未重置 Bug

清零所有进度/日志/checkpoint

20:48

新增交互式表选择功能

后端 API + 前端搜索/勾选向导

Day 2(5月31日、周六)—— 打磨产品细节

进入产品细节打磨阶段,主要工作包括:

•      进度显示优化:修复 Lightning 模式下进度从 100% 跳回 0% 的问题,新增导出/导入双阶段进度展示

•      数据导入方式重构:用户明确要求使用 TiDB Lightning CLI 而非 LOAD DATA / IMPORT INTO,开发工程师全面重构导入模块

•      前端向导扩展:从 4 步扩展到 5 步,新增表选择步骤支持搜索、全选

•      HTML 报告生成:新增完整的 HTML 格式迁移报告下载

•      README 文档完善:三方各自撰写后合并为统一版本,涵盖部署、使用、配置、FAQ 等

四、最终产品成果

经过一个周末(约 35 次代码提交),产出了一款完整的迁移工具:

能力

说明

兼容性评估

迁移前扫描不兼容对象(Trigger、Stored Function、特殊索引等),输出风险报告

Schema 迁移

自动采集 PG schema,类型映射 + DDL AST 转换,生成 TiDB 兼容 DDL,支持 dry-run 预览

数据迁移

PG COPY 导出 + TiDB Lightning CLI 导入,支持并发、大表分片、自动回退到流式 INSERT

数据校验

三层校验(L1 行数 / L2 抽样 / L3 全量 Checksum)

Web 管理界面

5 步配置向导、表选择、实时进度、日志流、迁移历史、HTML 报告

CLI 模式

保留完整 CLI 能力,all/schema/data/validate 分步执行

单二进制部署

前端通过 go:embed 嵌入,零外部依赖,Docker 一键启动

断点续传

Checkpoint 机制支持中断后恢复

五、技术架构

工具采用 Go + Vue 3 前后端分离架构,前端通过 go:embed 嵌入 Go 二进制,实现单文件部署:

层次

技术选型

理由

后端语言

Go 1.22+

TiDB 生态语言,交叉编译方便

前端框架

Vue 3 + Vite + TypeScript + Element Plus

轻量、构建快、中文友好

HTTP 路由

chi

轻量级 Go HTTP 路由

实时通信

gorilla/websocket

双向实时推送进度

数据导入

TiDB Lightning CLI

最快导入方式,支持 local/tidb backend

任务存储

SQLite (modernc.org/sqlite)

纯 Go 实现,零外部依赖

前端嵌入

go:embed

单二进制打包,零额外文件

六、关键协作场景回顾

场景 1:架构设计 → 代码实现(5 分钟)

我发出需求后,架构师在 5 分钟内输出了完整的架构设计文档(技术栈选型、模块划分、数据流设计、配置结构、CLI 命令设计、任务拆分)。开发工程师立即认领任务开始编码,从架构设计到代码提交只用了 30 分钟

场景 2:Bug 发现→修复的快速循环

测试工程师拉取代码、部署、测试,发现 Bug 后在频道里详细描述现象和日志。开发工程师看到后立即分析原因并修复推送。一个典型的 Bug 修复周期:

•      测试工程师报告问题(含日志截图):2 分钟

•      开发工程师分析原因并修复:5-15 分钟

•      测试工程师拉取重新部署验证:5 分钟

单个 Bug 修复周期约 15-25 分钟,一天内完成了超过 10 个 Bug 的发现和修复。

场景 3:技术方案迭代

数据导入方式经历了三次迭代,每次都是由我作为产品经理做出决策后快速落地:

迭代

方案

问题

结果

v1

LOAD DATA LOCAL INFILE

TiDB 兼容性差,bad connection

用户否定

v2

IMPORT INTO SQL

CSV 需在 TiDB 服务端,远程不可用

用户否定

v3

tidb-lightning CLI

需安装二进制,但性能最优

最终采用

每次迭代,开发工程师在 30 分钟内完成重构并推送,测试工程师随即重新部署验证。这种迭代速度在传统团队中几乎不可能实现。

场景 4:测试工程师的深度参与

在修复 PG 数组类型转 JSON 的过程中,测试工程师不仅执行测试,还主动深入调试代码,发现并修复了 3 个根因:pgx 返回 string 而非 []byte、isPGArray 误判、pgArrayToJSON 解析器丢失引号。这展示了 AI Agent 超越简单测试的深度参与能力。

七、关键数据

指标

数据

开发周期

约 2 天(周末)

代码提交次数

35+ commits

代码行数

约 8000+ 行 Go + Vue

API 端点

16 个 REST API + WebSocket

Bug 修复

15+ 个(含 P0 级)

技术方案迭代

3 次(数据导入方式)

人类参与

1 人(产品经理 + 架构师)

AI Agent 数量

3 个(架构师 + 开发工程师 + 测试工程师)

最终产出

完整迁移工具 + Web UI + 文档 + 测试报告

八、心得与思考

1. 人机协作的最佳实践

作为产品经理,我的核心价值是决策和方向把控,而非具体编码。例如数据导入方式的三次迭代,我基于产品需求和 TiDB 生态做出技术方案决策,Agent 们负责快速落地执行。

2. AI Agent 团队的优势

•      全天候在线:不需要等待开发工程师上班,任何时候发出指令立即开始执行

•      并行工作:架构师审查代码、开发工程师修 Bug、测试工程师部署可同时进行

•      知识共享:所有对话在同一频道,信息透明,不会出现沟通信息丢失

•      即时反馈:每个操作都有明确的状态更新和结果反馈

3. 什么样的项目适合这种模式

•      有明确产品需求和技术方向的项目

•      需要快速原型验证的场景

•      全栈开发但团队人员有限的情况

•      技术方案需要快速迭代的场景

九、总结

这个周末实验证明了一个重要趋势:借助 AI 多智能体协作平台,一个人就可以是一支全栈开发团队。产品经理负责方向和决策,AI Agent 负责设计、开发、测试的全部执行工作。从需求到产品上线,一个周末就够了。

 

项目地址:https://github.com/michaelliuyuan/pg2tidbtool

2
1
3
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论