[alibaba/nacos]nacos 2.0.3 数据库连接失败,宿主机连接一次nacos_config 数据库,此时启动成功!

2024-07-18 776 views
0

环境 Vm Os debian11 虚拟机中容器,创建一个共享网络common-network bridge模式,mysql、nacos共享这个网络。mysq与nacos是用名字查找。 默认情况nacos启动成功。 nacos 2.0.3 mysql 8.0.26(比较新)

出错现象 当docker全部重启后,nacos无法连接mysql。

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.0.3.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failur

java.lang.IllegalStateException: No DataSource set

在nacos容器中始终可以ping mysql ping通的。

问题在于有时时候重新启动nacos容器居然连接成功了?大多数时候都失败。

问题复现 只要mysql容器重新启动,就出现这个现象

目前解决 Mysql容器重启后,在宿主机mysql工具navicat连接一次nacos_config(navicat目录打开一次),nacos容器就能正常启动了。

回答

2

怀疑是你们虽然ping通了mysql,但是由于没有建表,所以Nacos还是没有连接上数据库? 后来

这个过程是否后来完成了建表?

7

表过程已经创建。降级8.0.16 db 一样有着问题。用宿主ip访问一样有这个问题。 只要在宿主机mysql工具navicat连接一次nacos_config(navicat目录打开一次),就能连接成功。nacos_config有资源需要预先加载?道理说不通啊。 docker中的db,需要外部连接一次,链路路由才能联通?

5

我这个问题解决了,db为:mysql8.0.26,驱动我替换成8.0.26了(应该不用替换,可以试试),然后在jdbc url 后面添加了allowPublicKeyRetrieval=true和serverTimezone=GMT%2B8,如下: db.url.0=jdbc:mysql://192.168.5.91:3306/dbxxxx?rewriteBatchedStatements=true&characterEncoding=UTF8&serverTimezone=GMT%2B8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true

2

我加入allowPublicKeyRetrieval就可以,网上其他资料也有说放到第一个位置,我的实验是放到最后也没问题。 这个问题与mysql的密码策略有关。

感谢!
7

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.0.3.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure : No DataSource set

1

怎么换他这个mysql的驱动?巨坑真实多