MySQL數據庫遷移OpenGauss數據庫解析
環(huán)境
華為云服務器 4核 8G CentOS 8.0 64位
- JDK11
- Data Grip
- xshell
- xftp
- mysql 8
安裝OpenGauss
1.此次安裝基于Docker進行安裝
docker安裝步驟自行解決
# 基于docker進行安裝 $ docker run --name opengauss --privileged=true -p 5432:5432 -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:latest # 解釋:-p 5432:5432 表示外部5432端口映射到容器中的5432端口 # GS_PASSWORD=Enmo@123 表示使用數據庫連接密碼為Enmo@123 # 這里我試過修改成其他密碼但是都連接不上,具體為什么還不知道
注意:docker run時會自動下載對應的鏡像,所以安裝完docker直接執(zhí)行即可。另外執(zhí)行完這個命令后數據庫就已經啟動了,可以嘗試用第三方工具來連接數據庫(例如DataGrip),注意要放行端口確保安全組和防火墻都是放行的。

2.DataGrip連接數據庫
其實高斯數據庫就是基于Postgres數據庫實現的,使用datagrip連接數據庫時數據源可以直接選擇postgres即可,后續(xù)代碼中使用的jdbc也可以直接使用postgres

host:ip地址
port:默認5432
創(chuàng)建并導入數據
3.新建數據庫
我們在postgres下新建一個名為it_service的數據庫
這里新建可以使用sql語句也可以使用可視化工具

4.在it_service數據庫下創(chuàng)建并導入所有項目必要數據
直接將sql文件導入datagrip中,并執(zhí)行即可
這里需要特別注意,高斯數據庫中的數據類型和語法和mysql中的語法有很多區(qū)別。
下面羅列幾種常見的需要修改的語法:
- 高斯數據庫中對字段不需要使用``來包裹
- 高斯數據庫中沒有datetime數據類型 取而代之的是date數據類型
- 高斯數據庫中沒有tinyint數據類型,這里可以直接使用integer代替
- 高斯數據庫中沒有sysdate() 函數,可以用 now()代替
- 高斯數據庫中創(chuàng)建約束索引、自增的語法不同,我是通過datagrip的可視化配置來創(chuàng)建索引的

修改后端項目
由于將數據庫從mysql切換到高斯數據庫,我們項目中配置的datasource參數就需要進行相應的改變
1.在maven中加入postgres依賴(前面提到過,高斯數據庫是基于postgres實現的,所以直接導入postgres依賴即可)
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.3.4</version>
</dependency>
2.修改application.yml
spring:
datasource:
username: ${賬號}
password: ${密碼}
url: jdbc:postgresql://${ip地址}:${端口號}/postgres
driver-class-name: org.postgresql.Driver
# ${} 中的內容需要自己填寫3.修改xxxMapper.xml中高斯數據庫不兼容的語法
部署后端項目
1.本地使用maven package打包

2.打包后將target目錄下生成.jar文件上傳到云服務器上(可以使用xftp等工具)

3.運行并測試啟動是否正常
$ java -jar itservice-server-0.0.1-SNAPSHOT.jar

4.使用postman等工具訪問并測試
5.確認無誤后 CTRL+C關閉當前程序,并使用后臺啟動
$ nohup java -jar itservice-server-0.0.1-SNAPSHOT.jar &
部署前端項目
基于docker進行部署vue項目
1.下載nginx鏡像
$ docker pull nginx:latest
2.編寫nginx配置文件
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; #配置Vue項目根路徑,與
?? ??? ??? ?index index.html index.html; #配置首頁
?? ??? ??? ?try_files $uri $uri/ /index.html; #防止刷新報404
?? ??? ?}
? ? ? ? error_page 500 502 503 504 /50x.html;
? ? ? ? ? ? location = /50x.html {
?? ??? ??? ?root html;
? ? ? ? }
? ? }
}3.編寫Dockerfile文件
FROM nginx # 將dist目錄 拷貝到 容器中的 it-service目錄下(注意這個it-service目錄必須和上面nginx配置文件中的映射路徑相同) COPY dist/. /usr/share/nginx/html/it-service/ # 將nginx的配置文件 替換掉 容器中的配置文件(注意這里是直接替換的nginx.conf),也就是說我們寫的conf文件必須是完整的一個nginx配置文件 COPY default.conf /etc/nginx/nginx.conf
4.制作鏡像
$ docker build -t itservice-nginx .
5.啟動容器
$ docker run -d -p 80:80 itservice-nginx
6.訪問測試
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL使用innobackupex備份連接服務器失敗的解決方法
這篇文章主要為大家詳細介紹了MySQL使用innobackupex備份連接服務器失敗的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
MySQL5.7安裝過程并重置root密碼的方法(shell 腳本)
由于 MySQL 5.7 版本的 root 密碼是首次啟動時隨機生成的,并且還要求必須修改后才能使用。下面小編給大家分享使用shell 腳本完成安裝和設置新的 root 密碼的方法,一起看看吧2016-12-12
Mysql中Table ‘XXX’ is marked as crashed and last (automatic?)
這篇文章主要介紹了Mysql中Table ‘XXX’ is marked as crashed and last (automatic?)問題解決方法,需要的朋友可以參考下2014-05-05

