文章目录

  • 1. 问题描述
  • 2. 解决方案
  • 3. 打包运行

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. 解决方案

  1. 克隆nacos源码
git clone https://github.com/alibaba/nacos.git
# 切换到 nacos 1.1.3 tag
git checkout 1.1.3
  1. 修改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创建mysql用户_Code

  1. 修改nacos-naming相关类
// 修改	com.alibaba.nacos.naming.hanlthcheck.MysqlHealthCheckProcessor

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

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

nacos创建mysql用户_bc_02

  1. 修改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

nacos创建mysql用户_java_03

3. 打包运行

执行构建命令

mvn -Prelease-nacos -DskipTests clean install -U

nacos创建mysql用户_mysql_04

打包后的文件在distribution模块下的target目录,拷贝至定义好的目录

nacos创建mysql用户_bc_05


修改配置文件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脚本)

nacos创建mysql用户_mysql_06


nacos创建mysql用户_Code_07

启动成功,可通过浏览器访问 http://127.0.0.1:8848/nacos

用户名和密码默认都为nacos

nacos创建mysql用户_mysql_08