MySQL迁移至OpenGauss:从环境部署到前后端上线全流程
介绍如何将业务数据库从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数据库迁移的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









