GreatSQL:DataX 全流程实操指南

📅 2026/6/29 18:32:38
GreatSQL:DataX 全流程实操指南
方案概述DataX 是阿里巴巴开源的异构数据源离线同步工具。它将数据同步过程抽象为 Reader、Framework 和 Writer 三部分Reader 从源端读取数据Framework 负责调度和传输Writer 将数据写入目标端。本次迁移链路如下openGauss - DataX Reader - DataX Framework - mysqlwriter - GreatSQLGreatSQL 完全兼容 MySQL 协议和 MySQL 语法因此目标端使用 DataX 的mysqlwriter插件写入。源端 openGauss 与 PostgreSQL 生态有较高兼容性但在 JDBC 驱动、数据类型和 SQL 语法上仍需要注意差异。DataX 概述什么是DataXDataX 是阿里巴巴开源的一个异构数据源离线同步工具致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。DataX的设计为了解决异构数据源同步问题DataX 将复杂的网状的同步链路变成了星型数据链路DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候只需要将此数据源对接到 DataX便能跟已有的数据源做到无缝数据同步。框架设计DataX安装DataX下载下载地址 https://github.com/alibaba/DataX 本次下载的datax_v202309版本前置要求本文示例环境使用 Linux 服务器运行 DataX 前需要准备JDK建议使用 JDK 1.8。PythonDataX 启动脚本依赖 PythonPython 2 或 Python 3 均可本文环境中 Python 2.7.5 和 Python 3.6.8 均已安装。网络连通性DataX 所在服务器需要能够访问 openGauss 和 GreatSQL 的数据库端口。数据库权限源端账号需要具备查询权限目标端账号需要具备写入权限如果使用preSql、postSql还需要相应的 DDL/DML 权限。检查 Java 和 Python 版本[rootlocalhost ~]# java -versionjava version 1.8.0_411Java(TM) SE Runtime Environment (build 1.8.0_411-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.411-b09, mixed mode)[rootapsl ~]# python --versionPython 2.7.5[rootlocalhost ~]# python3 --versionPython 3.6.8下载并解压 DataX本次下载的datax_v202309版本将datax.tar.gz上传到服务器后解压到/opt目录tar -zxvf datax.tar.gz -C /opt解压后DataX 主目录为/opt/datax。准备 openGauss JDBC 驱动下载官方 openGauss JDBC 驱动 并将 openGauss 驱动放入 postgresqlreader 目录wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-JDBC.tar.gztar -zxvf openGauss-3.0.0-JDBC.tar.gzcp openGauss-3.0.0-JDBC.jar plugin/reader/postgresqlreader/libs/运行 DataX 自检DataX 安装包自带job.json示例可以先用它验证 DataX 能否正常启动python /opt/datax/bin/datax.py /opt/datax/job/job.json2026-05-21 14:35:49.173 [job-0] INFO JobContainer -任务启动时刻 : 2026-05-21 14:35:39任务结束时刻 : 2026-05-21 14:35:49任务总计耗时 : 10s任务平均流量 : 253.91KB/s记录写入速度 : 10000rec/s读出记录总数 : 100000读写失败总数 : 0自检任务能正常运行说明 DataX基 础运行环境没有问题。后续还需要通过真实任务验证数据库连接、驱动加载和表结构映射是否正确。迁移前准备创建目标库、用户和表迁移前需要先在 GreatSQL 中创建数据库、用户和目标表。openGauss 的建表语句不能直接在 GreatSQL 中执行需要根据两端的数据类型、字符集、默认值、约束和索引进行转换。本文示例表为g_test_recordopenGauss 建表语句如下CREATE TABLE g_test_record (pk_operate_record character(32) NOT NULL,operate_type nvarchar2(100) NOT NULL,host_media_count integer,pk_deploy_media character(32),pk_operator character(32),operate_time timestamp with time zone)WITH (orientationrow, compressionno);GreatSQL 的建表语句CREATE TABLE g_test_record (pk_operate_record char(32) NOT NULL,operate_type varchar(100) NOT NULL,host_media_count int DEFAULT NULL,pk_deploy_media char(32) DEFAULT NULL,pk_operator char(32) DEFAULT NULL,operate_time datetime DEFAULT NULL) ENGINEInnoDB;