nacos 2.x 版本无法连接MySQL数据库的问题
nacos 2.x 版本无法连接MySQL数据库的问题
前提铺垫
- MySQL:mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
- Nacos:nacos-server-2.4.0.1.tar.gz
- Linux: CentOS 7
- java:jdk-8u421-linux-x64.tar.gz
- nacos服务器地址:10.17.1.4,10.17.1.5,10.17.1.6
- 数据库服务器地址:10.17.1.3
tips:服务器之间互相ping过,都能ping通,不存在网络不通的问题
集群的application.properties配置好后,启动startup.sh,一直报错MySQL连接不上
Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:111)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:98)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:90)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:64)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:74)
at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:895)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:820)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at com.alibaba.nacos.persistence.utils.ConnectionCheckUtil.checkDataSourceConnection(ConnectionCheckUtil.java:40)
... 124 common frames omitted
第一步:验证MySQL是不是在各个nacos服务器上都可以访问到,如果可以,那么证明是配置问题
第二步:查看application.properties配置
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://10.17.1.3:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=thxjt@123
可以看到连接配置中connectTimeout=1000
和socketTimeout=3000
可能是超时时间设置得太短了,所以失败,改为如下配置
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://10.17.1.3:3306/nacos?characterEncoding=utf8&connectTimeout=5000&socketTimeout=6000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=thxjt@123
再次启动nacos集群,成功启动。另外说个题外话:在处理这个问题的时候,我发现网上很多帖子都是说将application.properties
文件名改为bootstrap.properties
,或者把db.user.0
配置改为db.user
,都解决不了问题,最后通过网络抓包还是找到问题了,就是服务器返回耗时长。最后说一句:配置文件中的配置名尽量用官方的,不要瞎改配置名!
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/articles/18356062
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现