当前位置: 首页 > backend >正文

【运维】使用 DataX 实现 MySQL 到 PostgreSQL 的数据同步

🚀 使用 DataX 实现 MySQL 到 PostgreSQL 的数据同步

在日常的数据开发工作中,数据同步是一项极其常见的任务。而 DataX 作为阿里开源的一款通用数据同步工具,支持多种数据源之间的互通,使用简单,扩展性强,非常适合进行结构化数据的迁移和同步。

本文将详细介绍如何通过 DataX 从 MySQL 同步数据到 PostgreSQL,并提供一份完整的配置模板与使用技巧。


✨ 场景介绍

假设我们需要将 MySQL 中某张表的数据同步到 PostgreSQL 的目标表中,常见于数据迁移、数据备份或数据同步分析场景。以下是我们要解决的具体问题:

  • 源库:MySQL
  • 目标库:PostgreSQL
  • 工具选择:DataX

🛠 准备工作

1️⃣ 安装 DataX

DataX 无需编译,直接下载即可使用:

👉 下载地址:

wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz

解压后进入目录:

tar -zxvf datax.tar.gz
cd datax

执行测试(可选):

python3 bin/datax.py job/job.json

2️⃣ 数据库准备

确保你已经创建好如下数据库连接:

  • MySQL 源库

    • IP: ip
    • 数据库: db_name
    • 用户名/密码: root / 123456
  • PostgreSQL 目标库

    • IP: ip
    • 数据库: db_name
    • 用户名/密码: root / 123456

📄 DataX 配置文件详解

以下是完整的单表同步, DataX 作业 JSON 配置文件示例:

{"job": {"setting": {"speed": {"channel": 3}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","connection": [{"querySql": ["SELECT * FROM table_name"],"jdbcUrl": ["jdbc:mysql://ip:3306/db_name?useSSL=false"]}]}},"writer": {"name": "postgresqlwriter","parameter": {"username": "root","password": "123456","column": ["*"],"connection": [{"jdbcUrl": "jdbc:postgresql://ip:5432/db_name","table": ["table_name"]}]}}}]}
}

参数说明:

  • speed.channel: 控制并发通道数量,设置为 3 提升同步性能。
  • reader: 使用 mysqlreader 读取数据,支持指定 querySql
  • writer: 使用 postgresqlwriter 写入数据,column: ["*"] 表示全字段复制。

🧪 运行同步任务

  1. 将上述配置保存为 job_mysql2pg.json
  2. 执行同步命令:
python3 bin/datax.py job_mysql2pg.json

你将看到控制台日志输出数据同步过程,每条记录的读取写入状态、任务用时等。


🧩 常见问题排查

问题解决方案
No suitable driver found确保将 MySQL 和 PostgreSQL 的 JDBC 驱动包放入对应的 plugin/reader/mysqlreader/libsplugin/writer/postgresqlwriter/libs
column配置不匹配若指定了 column 字段,需确保字段名与目标表一致;推荐使用 ["*"] 全字段同步
目标表不存在需提前创建 PostgreSQL 的目标表,DataX 不会自动建表
中文乱码设置连接字符集,如 jdbc:mysql://ip:3306/db_name?characterEncoding=utf8&useSSL=false

🧠 实战建议

  • 小批量测试:正式运行前用少量数据验证结构和字段匹配。
  • 定时任务:结合 Linux crontab 可定期执行同步任务。
  • 增量同步:结合 WHERE 子句实现按时间字段增量导入。

示例增量 SQL:

SELECT * FROM table_name WHERE updated_at >= '2024-01-01'

📌 总结

DataX 是进行异构数据库之间数据同步的得力工具。通过配置简单的 JSON 文件,我们就可以实现从 MySQL 到 PostgreSQL 的高效数据迁移。

本例中我们使用了查询语句方式实现全表同步,但在实际场景中,也可以配合增量字段、定时调度等手段进行更复杂的数据同步任务。

http://www.xdnf.cn/news/2954.html

相关文章:

  • 苍穹外卖心得体会
  • [stm32] 4-1 USART(1)
  • 流量控制机制
  • 拆固态硬盘短接开卡+ as ssd benchmark查看硬盘读写速度
  • 基于STM32、HAL库的ADS8866IDGSR模数转换器ADC驱动程序设计
  • 华为云Astro大屏从iotda影子设备抽取数据做设备运行状态的大屏实施步骤
  • Android——Serializable和Parcelable
  • Spring、Spring MVC 与 Spring Boot 的关系与核心用途
  • 什么是全景相机?
  • jenkins slave节点打包报错Failed to create a temp file on
  • Android学习总结之Bitmap篇
  • 《数学物理方程》——第一章 引入与基本概念
  • 【AI工具】DeepWiki试用
  • 第十六届蓝桥杯 C/C++ B组 题解
  • 私有云与虚拟化攻防2(OpenStack渗透场景,大部分云平台都是基于此进行二次开发)
  • C++ 类和对象(3)初始化列表、友元函数、内部类
  • 创龙全志T536全国产(4核A55 ARM+RISC-V+NPU 17路UART)工业开发板硬件说明书
  • 免费IP证书申请
  • leetcode day37 474
  • 【论文阅读】PEEKABOO: Interactive Video Generation via Masked-Diffusion
  • 【神经网络与深度学习】改变随机种子可以提升模型性能?
  • DotNet 入门:(一) 环境安装
  • ElasticSearch入门
  • MYSQL三大日志、隔离级别(MVCC+锁机制实现)
  • 代码颜色模式python
  • 五种机器学习方法深度比较与案例实现(以手写数字识别为例)
  • 生活需要一些思考
  • 设计模式 | 详解常用设计模式(六大设计原则,单例模式,工厂模式,建造者模式,代理模式)
  • 力扣——206.反转链表倒序输出链表
  • Android开发——实现一个计算器