开发者社区 > 云原生 > 正文

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

环境 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容器就能正常启动了。

原提问者GitHub用户piaohailin

展开
收起
学习娃 2023-05-22 16:15:10 268 0
1 条回答
写回答
取消 提交回答
  • 我这个问题解决了,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

    原回答者GitHub用户itwoods

    2023-05-23 09:38:03
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载