(nacos 启动问题排查总结)
一、问题现象
在部署 nacos 时,容器启动后查看日志:
docker logs -f nacos
日志中出现报错:
no datasource set
同时在日志中还会看到:
nacos dump service start
随后服务启动失败或无法正常加载配置。
二、问题分析
该错误显然说明 nacos 没有成功初始化数据库数据源。可能原因主要包括:
- 数据库连接配置错误
- 环境变量配置不完整
- nacos 数据库表未正确导入
通过逐步检查:
1 检查 nacos 环境变量(容器间通信)
服务器中的 custom.env 文件内容:
cat /root/nacos/custom.env
配置如下:
prefer_host_mode=hostname mode=standalone spring_datasource_platform=mysql mysql_service_host=mysql mysql_service_db_name=nacos mysql_service_port=3306 mysql_service_user=root mysql_service_password=改成你自己的 mysql_service_db_param=characterencoding=utf8&connecttimeout=1000&sockettimeout=3000&autoreconnect=true&usessl=false&allowpublickeyretrieval=true&servertimezone=asia/shanghai
这里笔者使用的阿里云服务器,数据库的容器命名就是mysql,所以这里“mysql_service_host=mysql”,利用同一网络下,容器之间能直接相互通信,配置检查后发现 数据库连接参数没有问题。
2 检查 mysql 数据库(是否存在nacos数据库)
进入 mysql 容器:
docker exec -it mysql mysql -uroot -p
然后查看数据库表:
use nacos; show tables;
此时我才发现:
empty set
说明 nacos 数据库表没有导入成功。
三、问题原因
最终确认问题原因是:
在之前导入 nacos.sql 初始化脚本时,导入过程被中断,导致数据库表未完整创建。
因此 nacos 启动时无法找到需要的配置表,从而出现:no datasource set
四、解决方法
重新导入 nacos 初始化数据库脚本。
执行:
mysql -uroot -p nacos < nacos.sql
或在 mysql 中执行:
source nacos.sql;
导入完成后再次检查:
show tables;
可以看到数据库中已生成多张表,例如:
config_info config_tags_relation group_capacity his_config_info permissions roles tenant_capacity users
说明数据库初始化成功。
五、重新启动 nacos
重新启动容器:
docker restart nacos
查看启动日志:
docker logs -f nacos
日志显示:
tomcat started on port(s): 8848 (http) with context path '/nacos'
以及关键成功提示:
nacos started successfully in stand alone mode. use external storage
六、验证结果
浏览器访问:http://服务器ip:8848/nacos
登录账号:
nacos
nacos
成功进入控制台,说明 nacos 服务已正常运行并成功连接 mysql 数据库。
七、总结
本次问题的根本原因是:
nacos 初始化数据库脚本导入不完整,导致数据库表缺失。
解决步骤:
- 检查 nacos 日志定位错误信息
no datasource set - 确认数据库连接配置正确
- 进入 mysql 检查数据库表
- 重新导入
nacos.sql初始化脚本 - 重启 nacos 容器
- 日志出现
nacos started successfully表示启动成功

到此这篇关于阿里云服务器mysql与nacos配置的文章就介绍到这了,更多相关阿里云mysql与nacos配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论