MySQL數(shù)據(jù)庫遷移OpenGauss數(shù)據(jù)庫解析
環(huán)境
華為云服務(wù)器 4核 8G CentOS 8.0 64位
- JDK11
- Data Grip
- xshell
- xftp
- mysql 8
安裝OpenGauss
1.此次安裝基于Docker進(jìn)行安裝
docker安裝步驟自行解決
# 基于docker進(jìn)行安裝 $ 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 表示使用數(shù)據(jù)庫連接密碼為Enmo@123 # 這里我試過修改成其他密碼但是都連接不上,具體為什么還不知道
注意:docker run時會自動下載對應(yīng)的鏡像,所以安裝完docker直接執(zhí)行即可。另外執(zhí)行完這個命令后數(shù)據(jù)庫就已經(jīng)啟動了,可以嘗試用第三方工具來連接數(shù)據(jù)庫(例如DataGrip),注意要放行端口確保安全組和防火墻都是放行的。
2.DataGrip連接數(shù)據(jù)庫
其實高斯數(shù)據(jù)庫就是基于Postgres數(shù)據(jù)庫實現(xiàn)的,使用datagrip連接數(shù)據(jù)庫時數(shù)據(jù)源可以直接選擇postgres即可,后續(xù)代碼中使用的jdbc也可以直接使用postgres
host:ip地址
port:默認(rèn)5432
創(chuàng)建并導(dǎo)入數(shù)據(jù)
3.新建數(shù)據(jù)庫
我們在postgres下新建一個名為it_service的數(shù)據(jù)庫
這里新建可以使用sql語句也可以使用可視化工具
4.在it_service數(shù)據(jù)庫下創(chuàng)建并導(dǎo)入所有項目必要數(shù)據(jù)
直接將sql文件導(dǎo)入datagrip中,并執(zhí)行即可
這里需要特別注意,高斯數(shù)據(jù)庫中的數(shù)據(jù)類型和語法和mysql中的語法有很多區(qū)別。
下面羅列幾種常見的需要修改的語法:
- 高斯數(shù)據(jù)庫中對字段不需要使用``來包裹
- 高斯數(shù)據(jù)庫中沒有datetime數(shù)據(jù)類型 取而代之的是date數(shù)據(jù)類型
- 高斯數(shù)據(jù)庫中沒有tinyint數(shù)據(jù)類型,這里可以直接使用integer代替
- 高斯數(shù)據(jù)庫中沒有sysdate() 函數(shù),可以用 now()代替
- 高斯數(shù)據(jù)庫中創(chuàng)建約束索引、自增的語法不同,我是通過datagrip的可視化配置來創(chuàng)建索引的
修改后端項目
由于將數(shù)據(jù)庫從mysql切換到高斯數(shù)據(jù)庫,我們項目中配置的datasource參數(shù)就需要進(jìn)行相應(yīng)的改變
1.在maven中加入postgres依賴(前面提到過,高斯數(shù)據(jù)庫是基于postgres實現(xiàn)的,所以直接導(dǎo)入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 # ${} 中的內(nèi)容需要自己填寫
3.修改xxxMapper.xml中高斯數(shù)據(jù)庫不兼容的語法
部署后端項目
1.本地使用maven package打包
2.打包后將target目錄下生成.jar文件上傳到云服務(wù)器上(可以使用xftp等工具)
3.運行并測試啟動是否正常
$ java -jar itservice-server-0.0.1-SNAPSHOT.jar
4.使用postman等工具訪問并測試
5.確認(rèn)無誤后 CTRL+C關(guān)閉當(dāng)前程序,并使用后臺啟動
$ nohup java -jar itservice-server-0.0.1-SNAPSHOT.jar &
部署前端項目
基于docker進(jìn)行部署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; ?#開啟文件傳輸服務(wù)?? ? ?sendfile ? ? ? ? ? ?on; ?#設(shè)置保持鏈接時間 ?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.訪問測試
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql 如何插入隨機(jī)字符串?dāng)?shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了mysql 如何插入隨機(jī)字符串?dāng)?shù)據(jù)的實現(xiàn)方法,需要的朋友可以參考下2016-09-09Mysql limit 優(yōu)化,百萬至千萬級快速分頁 復(fù)合索引的引用并應(yīng)用于輕量級框架
MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考這個問題還是從前天開始。有過痛苦有過絕望,到現(xiàn)在充滿信心!2011-06-06MySQL命令行中給表添加一個字段(字段名、是否為空、默認(rèn)值)
本文介紹MySQL數(shù)據(jù)庫使用SQL語句來在現(xiàn)有的表中,添加一個新的字段,包括設(shè)置字段的是否為空、默認(rèn)值等2016-04-04關(guān)于MySQL數(shù)據(jù)庫死鎖的案例和解決方案
MySQL Update語句防止死鎖是指在修改MySQL數(shù)據(jù)庫的數(shù)據(jù)時,為避免多個進(jìn)程同時修改同一數(shù)據(jù)行而造成死鎖的情況,引入了一些機(jī)制來防止死鎖的產(chǎn)生,本文介紹了一個 MySQL 數(shù)據(jù)庫死鎖的案例和解決方案,需要的朋友可以參考下2023-09-09MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解
很多日常業(yè)務(wù)場景都會用到j(luò)son文件作為數(shù)據(jù)存儲起來,而mysql5.7以上就提供了存儲json的支撐。這篇文章就為大家整理了MySQL中JSON函數(shù)的各類操作,感興趣的可以了解一下2023-02-02