nacos切換mysql8.0數據庫


一、應用環境
Nacos:1.2.0

MySQL:8.0.16

二、Nacos安裝配置
1、解壓(默認端口8848),

2、\conf\application.properties:

最上方增加server.contextPath=/nacos

配置MySQL數據庫連接

3、導入數據庫腳本

4、默認不支持mysql8:替換\target\nacos-server.jar

5、啟動\bin\startup.cmd

6、啟動成功后窗口顯示Nacos版本、模式、端口、進程號、訪問地址、官網信息,進入

 

http://localhost:8848/nacos/index.html

默認賬戶nacos/nacos

7、建立命名空間

點擊左側菜單“命名空間”、右上角“新建命名空間”按鈕,創建命名空間

命名空間信息:查找數據庫表tenant_info,tenant_id(命名空間ID)、tenant_name(命名空間名稱)、tenant_desc(命名空間描述)

三、nacos-server.jar
1、nacos1.2.0默認只支持MySQL5,不支持MySQL8,所以需要修改源代碼自己編譯

2、源代碼地址:https://github.com/alibaba/nacos.git

3、修改代碼:

(1)pom.xml

<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
改為

<dependency>
<groupId>org.apache.commmons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
(2)api/pom.xml、client/pom.xml、common/pom.xml

<configuration>
<source>6</source>
<target>6</target>
</configuration>
改為

<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
(3)config/pom.xml

<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
改為

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
</dependency>
(4)com.alibaba.nacos.config.server.service.BaseDataSourceServiceImpl.java、com.alibaba.nacos.config.server.service.LocalDataSourceServiceImpl.java

import org.apache.commons.dbcp.BasicDataSource; ds.setMaxActive ds.setMaxWait
改為

import org.apache.commons.dbcp2.BasicDataSource; ds.setMaxTotal ds.setMaxWaitMillis
(5)console/src/main/resources/META-INFO/nacos-default.properties

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?serverTimezone=GMT%2B8characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?serverTimezone=GMT%2B8characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
(6)com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor.java

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
改為

import com.mysql.cj.jdbc.MysqlDataSource;
4、編譯打包

根目錄下的BUILDING文件有詳細說明。

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
編譯成功后,從distribution/target/nacos-server-1.2.0/nacos/target文件夾拷取目標文件nacos-server.jar

四、常見問題
1、如果在Eclipse中修改完上述代碼后仍有如下編譯錯誤,錯誤代碼:

 

The type 'XXX' is not API...

修改Windows->Preferences->Java->Compiler->Errors/Warning->Deprecated And restricted API->Forbidden reference選項為Warning

 

2、如果項目啟動時報錯如下

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
網上常見的解決方案:

(1)啟動類XXXApplication加上注解:@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})

(2)修改pom文件在build節中加入resource配置,確保build時加載到配置文件

我的情況及解決方案:

(1)項目不是剛創建的,而是在其他人開發的,所以認為已經過測試,代碼沒有問題

(2)從錯誤代碼分析,是數據庫驅動類報錯,項目此時未連接數據庫,所以判斷是nacos連接數據庫錯誤

(3)排隊配置的環境變量未生效,已重啟所有cmd窗口、eclipse環境,確保環境變量正確加載

(4)排除應用啟動順序錯誤問題

(5)查驗數據庫版本一致性,最終確認,開發用的數據庫為8.0.12,而我的數據庫是8.0.16,所以需要重新打包nacos-server.jar

原文鏈接:https://blog.csdn.net/mch111666/article/details/105159213/


免責聲明!

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



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