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文件这两个地方都要进行修改



    mysql
    mysql-connector-java
    
    8.0.9-rc
  • 修改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=这是一个密码

测试

添加一条配置
Nacos 配置MySQL8.0持久化_第1张图片

查询数据库
Nacos 配置MySQL8.0持久化_第2张图片

你可能感兴趣的:(Nacos 配置MySQL8.0持久化)