NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

遇到的问题

由于nacos自身携带的mysql驱动太低,导致连接高版本的mysql时失败

1:下载源码

https://github.com/alibaba/nacos

我这里是直接用idea打开nacos

2:找找最外层pom修改mysql版本

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

3:同一pom的子模块管理中注释掉module test,此时若弹出提示remove test module确定就ok

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

4:找到module nacos_naming里的com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor类

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
改为
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

5:cmd 编译打包

mvn -Prelease-nacos clean install -U

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题```

6:nacos_server.jar复制到本地nacos中

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
把jar包复制到本地nacos->target文件夹中
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

创建数据库nacos_config、配置application.properties文件

找到nacos->config文件夹
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
右键查看nacos-mysql
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
将其全部复制,在自己的数据库中新建名为nacos_config的数据库,粘贴sql语句,执行创建表。

打开编辑application.properties文件,在末尾下加

####################################################
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?serverTimezone=UTC&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

注意这里一定要加serverTimezone=UTC,MySQL jdbc 6.0 版本以上必须配置“serverTimezone”参数,UTC代表的是全球标准时间,博主也是一直卡在这个地方。
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

运行

NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

可以看到,已经启动成功了。此时打开localhost:8848/nacos随便增加个配置文件并分布,检查是否正常连接数据库
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题
NACOS连接mysql6.x以上版本数据无法保存至数据库(连接数据库失败: server is only_read)问题

至此,希望本文对你有所帮助