MySQL迁移至OpenGauss:从环境部署到前后端上线全流程

小鹿同学
小鹿同学
发布时间:2026-10-16 | 2人浏览过
原创

介绍如何将业务数据库从MySQL平滑迁移至华为OpenGauss,详细说明Docker环境搭建、SQL语法兼容性处理、Java后端数据源重构以及Vue前端Nginx部署的关键操作。

准备环境与工具

本次迁移实验基于华为云服务器(4核 8G CentOS 8.0),主要涉及的技术栈与工具如下:

  • 操作系统:CentOS 8.0 64位
  • JDK版本:JDK 11
  • 数据库客户端:DataGrip(用于管理数据库及执行SQL)
  • 远程连接工具:Xshell(终端控制)、Xftp(文件传输)
  • 源数据库:MySQL 8
  • 目标数据库:OpenGauss(基于Docker运行)

部署OpenGauss数据库实例

第1步:使用Docker启动OpenGauss

OpenGauss可通过官方镜像快速启动。在服务器终端执行以下命令:

# 基于docker进行安装
docker run --name opengauss --privileged=true -p 5432:5432 -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:latest

参数说明:

  • -p 5432:5432:将宿主机的5432端口映射到容器的5432端口。
  • -e GS_PASSWORD=Enmo@123:设置数据库初始登录密码。注意:若发现其他密码无法连接,建议保持默认或严格按照文档要求设置。

执行命令后,Docker会自动拉取镜像并启动容器。此时数据库已处于运行状态,。

网络配置提醒:确保服务器安全组和防火墙放行了5432端口,以便外部工具访问。

第2步:通过DataGrip连接数据库

OpenGauss高度兼容PostgreSQL协议,因此在DataGrip中创建新连接时,数据源类型直接选择 PostgreSQL 即可,无需寻找特定的OpenGauss驱动。。

连接参数配置:

  • Host:服务器公网IP地址
  • Port:5432
  • User/Password:输入创建的账户及初始密码(如 Enmo@123)

数据导入与语法适配

第3步:创建数据库与导入Schema

在DataGrip中新建名为 it_service 的数据库:。随后,将原有的MySQL SQL脚本导入该库并执行。
在此阶段,必须对SQL语句进行必要的转换,因为OpenGauss(PG内核)与MySQL在部分语法上存在差异:

  • 字段标识符:OpenGauss中字段名通常不需要使用反引号(``)包裹。
  • 日期类型:MySQL中的 datetime 在OG中推荐使用 date 或 timestamp。
  • 整数类型:OG中没有 tinyint,可直接替换为 integer。
  • 系统时间函数:OG中无 sysdate(),需替换为 now()。
  • 自增与索引:建议使用DataGrip可视化界面创建自增序列和索引,以避免手动编写语法错误:。

后端项目改造与部署

第1步:调整Maven依赖

由于底层兼容PostgreSQL,需在 pom.xml 中移除MySQL驱动,并引入PostgreSQL驱动依赖:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.3.4</version>
</dependency>

。

第2步:修改JDBC配置

更新 application.yml 中的数据源配置,将URL前缀改为 jdbc:postgresql,驱动类改为 org.postgresql.Driver:

spring:
  datasource:
    username: ${your_account}
    password: ${your_password}
    url: jdbc:postgresql://${server_ip}:5432/postgres
    driver-class-name: org.postgresql.Driver

请将占位符替换为实际信息。同时检查MyBatis Mapper XML文件中是否有MySQL特有语法,必要时做相应调整。

第3步:打包与上传

在本地IDEA或命令行中使用 Maven package 命令编译打包:。
将生成的 .jar 文件通过Xftp等工具上传至服务器指定目录:。

第4步:启动测试与后台运行

首先进行前台启动测试,观察控制台日志确认无报错:。

$ java -jar itservice-server-0.0.1-SNAPSHOT.jar

确认服务正常响应后,按下 CTRL+C 终止进程,改为后台持久化运行:

$ nohup java -jar itservice-server-0.0.1-SNAPSHOT.jar &

最后使用Postman或浏览器调用API接口,验证后端功能是否正常。

前端项目Docker化部署

前端Vue项目构建完成后,使用Nginx作为静态资源服务器,并通过Docker部署。

第1步:准备基础镜像

$ docker pull nginx:latest

第2步:编写Nginx配置文件

新建 default.conf 文件,重点配置 try_files 以解决Vue路由刷新404问题:

worker_processes auto;
events {
    worker_connections 1024;
}
http {
    include             mime.types;
    default_type        application/octet-stream;
    sendfile            on;
    keepalive_timeout 65;
    client_max_body_size 20m;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root /usr/share/nginx/html/it-service;
            index index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

第3步:编写Dockerfile

新建 Dockerfile,将构建好的静态文件(dist目录)和配置文件拷入容器:

FROM nginx
# 将dist目录拷贝到容器内对应路径
COPY dist/.  /usr/share/nginx/html/it-service/
# 替换默认nginx配置
COPY default.conf  /etc/nginx/nginx.conf

第4步:构建镜像与启动容器

# 构建镜像
$ docker build -t itservice-nginx .

# 启动容器,映射宿主机80端口
$ docker run -d -p 80:80 itservice-nginx

启动后,直接在浏览器访问服务器IP即可看到前端页面,至此数据库迁移及项目部署完成。

以上就是MySQL迁移至OpenGauss数据库并进行前后端部署的详细内容,更多关于MySQL数据库迁移的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表