文章目录
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Nacos 是构建以“服务”为中心的现代应用架构的服务基础设施。
官网地址:https://nacos.io
1. 问题描述
nacos 版本:1.1.4
mysql 版本:8.0.20
单机模式时nacos默认使用嵌入式数据库实现数据的存储,若想使用外部mysql存储nacos数据,要求MySQL版本 5.6.5+,且mysql 8 以下
当使用MySQL 8.0+ 版本是无法成功启动的
2. 解决方案
-
克隆nacos源码
git clone https://github.com/alibaba/nacos.git # 切换到 nacos 1.1.3 tag git checkout 1.1.3
-
修改nacos项目根目录下的pom.xml,手动指定mysql驱动版本
PS:这里要注意mysql驱动在nacos-naming和nacos-config两个模块引入过,如果不想修改主项目的pom文件这两个地方都要进行修改
<!-- JDBC libs --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 这里使用8.0.19,可根据实际情况调整 --> <version>8.0.19</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
3. 打包运行
执行构建命令
mvn -Prelease-nacos -DskipTests clean install -U
打包后的文件在distribution模块下的target目录,拷贝至定义好的目录
修改配置文件conf/application.properties
// 找到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=yourpassword
运行脚本bin/startup.cmd
(linux系统运行.sh脚本)
启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos
用户名和密码默认都为nacos