## 1. 工具总览

本文汇总了 2025-2026 年主流的 MySQL 到 PostgreSQL 迁移工具，分为两大阵营：云厂商商业工具（阿里云/腾讯云/华为云）和开源工具（pgloader / MySQL2PG 等）。

### 阿里云 DTS

阿里巴巴
云服务可视化付费

企业级数据传输服务，支持结构迁移 + 全量 + 增量三阶段不停机迁移。

### 腾讯云 DTS

腾讯
云服务可视化付费

支持无锁迁移、跨账号跨云迁移，对标 TDSQL PostgreSQL 版深度优化。

### 华为云 DRS

华为
云服务可视化付费

分钟级搭建迁移任务，预检查机制降低风险，政企客户首选。

### pgloader

开源社区 · dimitri
开源CLI免费

最流行的开源迁移工具，COPY 协议高效传输，自动类型映射，⭐ 4.3k+。

### MySQL2PG

开源社区 · xfg0218
开源CLI免费

专业级 MySQL→PG 工具，v3.4.0 支持完整评估报告、兼容性校验、并发同步。

### rds_dbsync

阿里巴巴 · 阿里云开源
开源CLI免费

阿里内部使用的 MySQL→Greenplum/PostgreSQL 同步工具，不落地的实时迁移。

## 2. 云厂商商业工具对比

维度 | 阿里云 DTS | 腾讯云 DTS | 华为云 DRS
--- | --- | --- | ---
迁移模式 | 结构+全量+增量 | 全量+增量 | 结构+全量+增量
不停机迁移 | ✅ 支持 | ✅ 无锁迁移 | ✅ 零停机
源库影响 | 低影响 | 无锁，最低影响 | 低影响
预检查 | ✅ | ✅ | ✅ 详细预检查表
数据校验 | ✅ 一致性校验 | ✅ | ✅
跨云迁移 | ✅ 支持 | ✅ 支持 | 有限支持
可视化控制台 | ✅ | ✅ | ✅
异构数据库 | ✅ 20+ 种 | ✅ 多种 | ✅ 多种
计费模式 | 按量付费 / 包年包月 | 按量付费 | 按量付费
文档地址 | help.aliyun.com/zh/dts | cloud.tencent.com/dts | huaweicloud.com/drs

## 3. 阿里云 DTS 详解

阿里云 DTS（Data Transmission Service）是最成熟的企业级迁移方案之一，支持 RDS MySQL → RDS PostgreSQL 一键迁移，也支持自建库之间的迁移。

### 迁移管线

预检查→ 结构迁移→ 全量数据迁移→ 增量数据迁移→ 数据校验→ 割接切换

### 快速开始

- 登录阿里云控制台 → DTS → 创建迁移任务
- 填写源库（MySQL）和目标库（PostgreSQL）连接信息
- 选择迁移类型：结构迁移 + 全量 + 增量（推荐三者全选实现不停机）
- 通过预检查后启动任务，观察同步延迟归零后割接

#### 优势

- 全托管服务，零运维成本
- 不停机迁移，业务无感知
- 自动处理类型映射和约束转换
- 支持跨云/混合云场景
- 可视化控制台 + 告警监控

#### 局限性

- 需要阿里云账号，按量付费有成本
- 源库/目标库需对 DTS 服务器开放网络
- 部分 MySQL 特性（如存储过程）可能需手动调整

## 4. 腾讯云 DTS 详解

腾讯云 DTS 的核心特色是无锁迁移——不需要在源 MySQL 上获取全局锁，最大程度降低对业务的影响。

### 核心特色

- 无锁迁移：基于 binlog 位置点的增量同步，无需 LOCK TABLES
- 跨账号迁移：支持不同腾讯云账号之间的数据库迁移
- 跨云迁移：支持从其他云厂商或自建库迁移到腾讯 PostgreSQL
- 数据一致性校验：迁移完成后自动比对源库和目标库的数据一致性

#### 优势

- 无锁迁移，对源库影响最小
- 跨账号/跨云能力强
- 对标 TDSQL PG 版深度优化
- 全托管，可视化操作

#### 局限性

- 付费服务，按量计费
- 深度绑定腾讯云生态
- 自建 PostgreSQL 场景支持有限

## 5. 华为云 DRS 详解

华为云 DRS（Data Replication Service）主打分钟级搭建和预检查，适合政企客户和对合规性要求较高的场景。

### 核心特色

- 分钟级搭建：迁移任务配置和启动只需数分钟
- 详细预检查：提供预检查项一览表，逐项检查兼容性风险
- 在线迁移：零停机窗口，业务持续运行
- 支持 FlexusRDS for PostgreSQL：华为新一代云原生数据库

#### 优势

- 预检查机制完善，降低迁移风险
- 搭建速度快，操作简单
- 政企客户适配，合规性强

#### 局限性

- 跨云支持不如阿里云/腾讯云灵活
- 生态相对较小
- 付费服务

## 6. 开源工具对比

维度 | pgloader | MySQL2PG | rds_dbsync | gomysql2pg
--- | --- | --- | --- | ---
GitHub ⭐ | 4.3k+ | 活跃维护 | 阿里开源 | 200+
语言 | Common Lisp | Java | Go | Go
许可证 | PostgreSQL License | 开源 | Apache 2.0 | MIT
安装方式 | Docker / apt / brew / 源码 | 下载 JAR / 源码编译 | 源码编译 Go | Go 直接编译
结构迁移 | ✅ 自动转换 DDL | ✅ 评估+转换 | 主要数据迁移 | 主要数据迁移
全量迁移 | ✅ COPY 协议 | ✅ 并发同步 | ✅ | ✅
增量迁移 | ❌ 仅一次性 | ✅ 增量同步 | ✅ 实时同步 | ❌
数据校验 | 基础 | ✅ 双重校验 | ✅ | ✅ 对比
评估报告 | ❌ | ✅ 可视化兼容性报告 | ❌ | ❌
GUI / 可视化 | ❌ CLI only | ✅ 自带 Web UI | ❌ CLI only | ❌ CLI only
配置方式 | .load 配置文件 | 配置文件 + UI 引导 | JSON/YAML 配置 | JSON 配置

## 7. pgloader 详解

pgloader 是最广泛推荐的开源 MySQL→PostgreSQL 迁移工具，由 Dimitri Fontaine 开发维护。核心优势是使用 PostgreSQL 的 COPY 协议高效传输数据。

### 安装（3 种方式）

Docker（推荐） apt install pgloader brew install pgloader

### 快速开始（Docker 方式）

- 创建配置文件 `mysql.load`，定义源库和目标库连接串
- 运行 `docker run --rm dimitri/pgloader pgloader mysql.load`
- pgloader 自动完成表结构转换 + 数据迁移 + 索引创建

### 配置文件示例

LOAD DATABASE FROM mysql://user:pass@localhost/mydb INTO pgsql://user:pass@localhost/mydb WITH include drop, create tables, create indexes, reset sequences SET PostgreSQL PARAMETERS maintenance_work_mem to '128MB', work_mem to '12MB' ;

#### 适用场景

自建数据库迁移、跨云迁移、不需要增量同步的一次性迁移场景。pgloader 是最轻量、最即开即用的开源方案，适合中小型数据库（GB 级别）。如果是 TB 级数据库或有不停机需求，建议使用云厂商 DTS/DRS 或 MySQL2PG。

#### 优势

- 安装极简，Docker 一行命令即可
- COPY 协议传输效率高
- 自动类型映射（TINYINT→SMALLINT 等）
- 社区成熟，文档丰富
- 支持 SQLite/MSSQL/CSV → PG 等多种源

#### 局限性

- 仅支持一次性全量迁移，不支持增量同步
- 大型数据库迁移耗时较长
- 存储过程/触发器需手动转换
- Common Lisp 编译依赖，自行编译较复杂

## 8. MySQL2PG 详解

MySQL2PG（xfg0218/mysql2pg）是专业级的 MySQL→PostgreSQL 迁移工具，最新版本 v3.4.0 已发布，是开源方案中功能最全面的。

### 核心能力

- 评估模式：迁移前扫描源库，生成兼容性评估报告，标注不兼容的语法和功能
- 全量 + 增量：支持一次性全量迁移和基于 binlog 的持续增量同步
- 并发同步：多线程并行迁移，大幅提升迁移速度
- 双重数据校验：迁移完成后自动校验源库和目标库的数据一致性
- 可视化 Web UI：自带管理界面，非 DBA 也能操作
- 视图/函数转换：42 个视图 + 113 个函数 100% 转换（实测数据）

### 迁移管线

兼容性评估→ 结构转换→ 全量迁移→ 增量同步→ 数据校验→ 生成报告

#### 适用场景

如果你需要开源 + 增量同步 + 评估报告三合一，MySQL2PG 是最佳选择。它适合自建数据库的不停机迁移场景，自带 Web UI 降低了操作门槛。特别是生成兼容性评估报告这一功能，能帮助你在迁移前识别风险点。

#### 优势

- 唯一自带兼容性评估报告的开源工具
- 支持增量同步，可不停机迁移
- 自带 Web UI，操作门槛低
- 双重数据校验，迁移结果可信赖
- 视图和函数转换率高

#### 局限性

- 社区规模不如 pgloader
- Java 依赖，需要 JRE 运行环境
- 文档以中文为主，国际化程度有限

## 9. 类型映射与兼容性注意事项

MySQL 和 PostgreSQL 在数据类型和 SQL 语法上存在差异，迁移时需要重点关注以下映射关系。

### 数据类型映射

MySQL | PostgreSQL | 说明
--- | --- | ---
`TINYINT` | `SMALLINT` | PG 无 1 字节整型
`INT UNSIGNED` | `BIGINT` | 无符号需升级类型
`DATETIME` | `TIMESTAMP` | 注意时区处理
`TINYTEXT` | `TEXT` | PG 统一使用 TEXT
`VARCHAR(N)` | `VARCHAR(N)` | PG 中 TEXT 更常用
`BLOB` | `BYTEA` | 二进制数据
`BOOLEAN / TINYINT(1)` | `BOOLEAN` | PG 原生布尔类型
`DOUBLE` | `DOUBLE PRECISION` | 关键字差异
`AUTO_INCREMENT` | `SERIAL / GENERATED ALWAYS AS IDENTITY` | 自增机制不同
`ENUM` | `CREATE TYPE ... AS ENUM` | PG 需显式创建枚举类型

### SQL 语法差异

特性 | MySQL | PostgreSQL
--- | --- | ---
标识符引号 | 反引号 ``table`` | 双引号 `"table"`
字符串引号 | 单/双引号均可 | 仅单引号
分页 | `LIMIT offset, count` | `LIMIT count OFFSET offset`
GROUP BY | 宽松模式 | 严格模式（SELECT 列必须在 GROUP BY 中）
连接字符串 | `CONCAT()` 忽略 NULL | `||` 操作符，NULL 传播
日期函数 | `NOW(), CURDATE()` | `NOW(), CURRENT_DATE`
存储过程 | 语法差异大 | PL/pgSQL，需重写

## 10. 选型建议

#### 场景一：阿里云用户

推荐阿里云 DTS — 全托管、不停机迁移、自动类型映射。如果源库和目标库都在阿里云上，这是最省心的选择。

#### 场景二：腾讯云用户

推荐腾讯云 DTS — 无锁迁移对源库影响最小，适合业务不能中断的场景。

#### 场景三：华为云 / 政企用户

推荐华为云 DRS — 预检查机制完善，分钟级搭建，合规性强。

#### 场景四：自建数据库 / 跨云 / 一次性迁移

推荐 pgloader — 安装极简（Docker 一行命令），COPY 协议高效传输，社区最成熟。适合中小型数据库的一次性迁移。

#### 场景五：自建数据库 / 需要不停机 + 评估报告

推荐 MySQL2PG — 唯一自带兼容性评估报告的开源工具，支持增量同步和 Web UI，适合不停机迁移场景。

#### 场景六：阿里技术栈 + 实时同步

推荐 rds_dbsync — 阿里内部使用的 Go 语言同步工具，Apache 2.0 许可，适合 MySQL→Greenplum/PostgreSQL 的不落地实时迁移。

## 11. 迁移步骤参考

无论选择哪个工具，一个完整的 MySQL→PostgreSQL 迁移流程通常包含以下步骤：

1. 评估兼容→ 2. 备份源库→ 3. 结构迁移→ 4. 全量数据→ 5. 增量追平→ 6. 数据校验→ 7. 应用适配→ 8. 割接上线

### 各步骤要点

- 评估兼容：使用 MySQL2PG 评估模式或手动检查存储过程、触发器、特殊函数
- 备份源库：迁移前完整备份 MySQL，确保可回滚
- 结构迁移：转换 DDL，注意类型映射、索引、约束、自增序列
- 全量数据：使用工具的批量迁移能力，建议关闭 PG 的 autovacuum 提升速度
- 增量追平：基于 binlog 持续同步，观察延迟归零
- 数据校验：比对记录数、关键字段聚合值，确保数据一致性
- 应用适配：修改 ORM 配置、SQL 语法（反引号→双引号、LIMIT 语法等）
- 割接上线：停写 MySQL → 等待增量同步完成 → 切换应用连接 → 验证

## 数据来源

- 腾讯云开发者 - MySQL2PG 迁移神器
- MySQL2PG v3.4.0 正式发布
- MySQL2PG v2.0.0 发布
- 阿里云 DTS - RDS MySQL 迁移至 RDS PostgreSQL
- 百度文心 - MySQL 迁移至 PostgreSQL 工具与步骤
- 华为云 DRS - 迁移方案概览
- 腾讯云 DTS 产品文档
- dimitri/pgloader - GitHub
- aliyun/rds_dbsync - GitHub
- CSDN - 从 MySQL 迁移到 PostgreSQL 完整指南
- 人大金仓 - 2026年 MySQL 迁移工具实测