5分钟搞定:Mysql到PostgreSQL数据库实时同步

55 阅读4分钟

在现代企业数据架构中,跨数据库平台的数据共享已成为刚需。无论是从开源生态向更强大分析能力演进,还是出于国产化替代、多云部署等战略考量,将 MySQL 中的数据同步到 PostgreSQL 已成为高频场景。

DataMover 数据迁移同步平台免费版支持 17 种主流异构数据源,可创建 30 张表并发调度任务,配置简单、无需编程基础,支持 全量、增量、实时 CDC 同步,轻松满足 95% 以上的日常业务需求。

本文将以 MySQL 作为源端PostgreSQL 作为目标端,手把手教你 5 分钟完成跨平台数据实时同步

DataMover实时同步支持Insert、Update、Delete、Truncate事件。

一、环境准备:部署DataMover

1.1 下载安装

访问 DataMover 官网下载最新免费版,支持 Windows、Linux、macOS 系统:

DataMover - 下载页面

1.png

1.2 部署 DataMover 平台

准备好 JDK 和 MySQL 环境后,按操作系统选择部署方式:

1.2.1 启动 manager 与 worker

分别配置 manager/confworker/conf 目录中的 application-druid.properties,依次启动两个服务。

1.3 登录平台

启动成功后,访问:

http://localhost:8000
账号:admin
密码:admin123

2.png

二、实战演练:MySQL 到PostgreSQL数据库实时同步

2.1 创建数据源连接

  1. 进入数据源管理:点击左侧「数据源」菜单。

  2. 添加PostgresSQL 源

    • 点击「新增」,选择「SQL Server」。
    • 填写连接信息:
      • 名称:postgresql(可自定义)
      • 主机:postgresql 服务器 IP
      • 端口:5432
      • 数据库名称:如 MyDB
      • 用户名/密码:对应账号密码
    • 点击「测试连接」,成功后保存。

3.png

  1. 添加MySQL目标库

    • 重复新增步骤,选择「MySQL数据库」。
    • 填写MySQL连接信息,测试连接并保存。

3_1.png

提示:DataMover 支持 35+ 种数据源作为目标端,如:
MySQL、Oracle、PostgreSQL、ClickHouse、Doris、Kafka、HDFS、Greenplum 、达梦、KingBase、GaussDB等。
只需在目标数据源中选择对应类型即可。

2.2 配置同步任务

  1. 创建任务:点击「任务管理」→「新建任务」。

  2. 基础设置

    • 任务名称:如 SQLServer到MySQL同步

    • 源端数据源:选择刚刚创建的 SQL Server

    • 目标端数据源:选择Mysql

    • 任务类型:选择「实时任务」或「普通任务」,我们这里以实时任务为例

      创建实时任务,需要源端mysql开启binlog,DataMover将订阅mysql binlog日志,在目的端PostgreSQL重放。

4.png

  1. 表与字段映射

    • 点击源端表的「加号」,勾选需要同步的表。

      实时任务创建后若需新增表有两种方案:

      若需要强一致性,需要停止任务并重置后新增表,重新启动,这样会将所有表历史数据重新同步,完成快照后开始执行增量CDC。

      若源库新增的表可以暂停数据操作,可以新建一个一次性全量任务,同步到目标库后,再实时任务新增表,重启后,在对源库新增表进行数据操作。

    • 目标表可自动创建或选择已有表。

    • 系统自动匹配同名字段,支持手动拖拽映射。

5.png

2.4 启动与监控

保存任务后,在任务列表中点击「全部启动」,对于CDC任务,所有的表调度时一起的,全部启动、全部停止、全部重置。
可在任务详情页实时查看同步进度、速度、数据量及日志。

6.png

对源表进行插入、更新、删除、重建表操作,查看目标表是否对应完成数据操作。

插入记录

例如system_mail_template插入一条记录

7.png

查看PostgreSQL数据正确同步

8.png

更新记录

例如system_notify_message更新一条记录,将template_code字段更新成更新测试

update system_notify_message set template_code = '更新测试';

update system_notify_message set template_code = '更新测试'
> Affected rows: 9
> 时间: 0.005s

查看目标库数据

9.png

删除记录

例如system_mail_template删除一条记录,删除表中id为14的记录。

delete from system_mail_template where id = 14;

delete from system_mail_template where id = 14
> Affected rows: 1
> 时间: 0.004s

查看目标库数据

10.png

源库重建表

例如对system_dept进行truncate操作。

目标库重建前:

11.png

源库执行sql:

truncate table system_dept;

truncate table system_dept
> OK
> 时间: 0.018s

验证目标库结果:

12.png

三、为什么选择 DataMover 进行 MySQL 数据迁移?

  • 源端友好:完美兼容 MySQL 5.6 ~ 8.0,支持主从、RDS、云数据库
  • 目标灵活:35+ 种目标数据源,覆盖 PostgreSQL、国产数据库、数据仓库、消息队列
  • 零编码配置:全程可视化操作,告别复杂 ETL 脚本
  • 免费可用:免费版支持 30 张表并发同步,中小项目开箱即用

结语

本文以 MySQL → PostgreSQL 为例,展示了 DataMover 在异构数据库同步中的高效与便捷。无论你的目标是 PostgreSQL、达梦、人大金仓、Doris 还是 Kafka,DataMover 都能提供 稳定、可视、低门槛 的迁移体验。

后续我们将推出《MySQL 到 Doris 实时同步》《MySQL 到 Kafka 流式入湖》等系列教程,欢迎持续关注!