# mysql-to-opengauss **Repository Path**: decentant/mysql-to-opengauss ## Basic Information - **Project Name**: mysql-to-opengauss - **Description**: MySQL全量迁移数据到OpenGauss的工具,相较于官方工具来说更加简单明了。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2025-07-02 - **Last Updated**: 2025-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySQL全量传输OpenGauss工具 ![封面](asset/banner.jpg) 本项目的功能为将MySQL中的全部数据传输到OpenGauss中。OpenGauss的库需要用户提前建好,本工具只提供建表和传输数据的功能。 ## 前言 项目建立初衷为OpenGauss官方的MySQL迁移OpenGauss的工具无法正常使用,各种报错,就是下面写的issue。后面官方人员耐心给我解决了,为官方点赞!但是datakit需要使用到大量root命令,且需要配置普通用户免密操作,可能会引发安全问题,且可能触发服务器告警。 ### 官方issue: https://gitcode.com/opengauss/openGauss-migration-portal/issues/96 https://gitcode.com/opengauss/openGauss-migration-portal/issues/113 ## 功能 ### 表转换 将MySQL中的数据库表转换为OpenGauss数据库的表结构,支持OpenGauss A、B两种模式 ### 数据传输 将MySQL中成功转换的表中的数据全量传输到OpenGauss中,支持OpenGauss A、B两种模式 ### 生成报表 执行完成后会自动生成数据迁移的报表,可在result目录内查看。如果存在报错信息,则每个表都会输出对应的报错信息 ### 附加功能 MySQL数据库间互相迁移,由于支持OpenGauss B模式(MySQL),也就导致了这个项目是支持MySQL间互相迁移的,只需要修改配置文件即可 ## 运行环境 ### 系统要求 目前仅在Linux系统完成测试,运行脚本只适合于Linux系统,Windows系统请下载源代码后直接运行 ### 源数据库 目前我仅在MySQL 8.0.40中完成测试开发,建议使用MySQL8.x ### 目标数据库 目前我仅在OpenGauss 6.0.10中完成测试开发,建议使用OpenGauss6.x 磐维数据库测试版本为PanWeiDB_V2.0-S3.2.0_B01 ### java环境 由于本项目全部使用java开发,因此需要java运行环境,建议jdk版本大于等于17 ## 运行方式 * 如果auto-run为true,则启动项目自动就开始全量数据迁移工作 * 如果auto-run为false,则启动项目后,可通过接口调用全量数据迁移 ## 项目优势 * 支持OpenGauss A模式(PostgreSQL)和B模式(MySQL),还支持磐维数据库,官方迁移工具只支持B模式(MySQL) * 采用java编写,代码简单明了,功能清晰 * 安装包非常小 * 配置文件修改简洁明了 * 无需其他中间件,不需要使用zookeeper和kafka * 没有乱七八糟花里胡哨的东西,我从来不会为了用而用,这里全部使用线程池干就完了 * 可选择自动运行还是选择接口调用再运行 * 支持配置需要迁移的表和过滤不需要迁移的表 * 执行完成后有报表输出,能够清晰查看数据迁移结果 * 全程自主可控 * 支持MySQL间数据迁移 * 磐维数据库可使用OpenGauss驱动 ## 使用方法 1. 下载发行版中的tar.gz包,并上传到Linux服务器中 2. 使用以下命令解压安装包 tar -zxvf mysql-to-opengauss-*.tar.gz 3. 进入解压后的目录,并进入config目录 4. 修改application-demo.yaml,修改其中的MySQL和OpenGauss的连接地址 5. 返回上一级,进入bin目录 6. 执行命令: ./start.sh 启动迁移项目 7. 如果application-demo.yaml中的auto-run为true,则项目会自动开始全量迁移 8. 如果application-demo.yaml中的auto-run为false,则项目启动后,可以通过接口调用全量数据迁移 ## 接口信息 ### 全量迁移,与auto-run执行的内容一致 curl --location --request POST '{IP地址}:8845/mto/fullConvert' ### 仅转换表 curl --location --request POST '{IP地址}:8845/mto/covertTables' ### 仅迁移数据 curl --location --request POST '{IP地址}:8845/mto/transferData'