首頁 > 軟體

MySQL資料庫遷移OpenGauss資料庫解析

2022-09-30 14:02:38

環境

華為雲伺服器 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直接執行即可。另外執行完這個命令後資料庫就已經啟動了,可以嘗試用第三方工具來連線資料庫(例如DataGrip),注意要放行埠確保安全組和防火牆都是放行的。

2.DataGrip連線資料庫

其實高斯資料庫就是基於Postgres資料庫實現的,使用datagrip連線資料庫時資料來源可以直接選擇postgres即可,後續程式碼中使用的jdbc也可以直接使用postgres

host:ip地址

port:預設5432

建立並匯入資料

3.新建資料庫

我們在postgres下新建一個名為it_service的資料庫

這裡新建可以使用sql語句也可以使用視覺化工具

4.在it_service資料庫下建立並匯入所有專案必要資料

直接將sql檔案匯入datagrip中,並執行即可

這裡需要特別注意,高斯資料庫中的資料型別和語法和mysql中的語法有很多區別。

下面羅列幾種常見的需要修改的語法:

  • 高斯資料庫中對欄位不需要使用``來包裹
  • 高斯資料庫中沒有datetime資料型別 取而代之的是date資料型別
  • 高斯資料庫中沒有tinyint資料型別,這裡可以直接使用integer代替
  • 高斯資料庫中沒有sysdate() 函數,可以用 now()代替
  • 高斯資料庫中建立約束索引、自增的語法不同,我是通過datagrip的視覺化設定來建立索引的

修改後端專案

由於將資料庫從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.存取測試

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com