Nacos 配置MySQL8.0持久化


問題描述

官網下載的Nacos mysql由於驅動過低只支持5.X版本,使用8.X版本的mysql時無法正常啟動

解決辦法

  • 克隆nacos源碼(branch 1.0.0-RC3)

master等分支也是同樣修改方式

$ git clone https://github.com/alibaba/nacos.git

$ git checkout 1.0.0-RC3
  • 修改nacos項目根目錄下的pom.xml,手動指定mysql驅動版本

PS:這里要注意mysql驅動在nacos-naming和nacos-config兩個模塊引入過,如果不想修改主項目的pom文件這兩個地方都要進行修改

<!-- JDBC libs -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <!-- 這里使用8.0.9-rc,可根據實際情況調整 -->
    <version>8.0.9-rc</version>
</dependency>
  • 修改nacos-naming相關類
// 修改com.alibaba.nacos.naming.hanlthcheck.MysqlHealthCheckProcessor

// 修改前
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

// 修改后
import com.mysql.cj.jdbc.MysqlDataSource;

  • 修改mysql連接參數

mysql8.X版本需要指定時區等參數

// 找到nacos-console下的src/main/resources/META-INF/nacos-default.properties 並修改db.url的數據庫連接配置為
characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

// 修改前
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

// 修改后
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

打包運行

執行構建命令

$ mvn -Prelease-nacos -DskipTests clean install -U

打包后的文件在distribution模塊下的target目錄,拷貝至定義好的目錄並修改配置文件

// 找到nacos下的conf/application.properties 增加mysql數據源配置
# mysql datasource
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
db.user=root
db.password=這是一個密碼

測試

添加一條配置

查詢數據庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM