nacos-2.0.3启动报错出现no datasource set的坑
在日常启动nacos-2.0.3的时候,经常会启动不成功,检查start.out可以看到no datasource set的异常,导致了nacos启动失败。
1.start.out文件中可以看到:
ERROR Startup errors :
No DataSource set
at org.springframework.beans.factory.support.ConstructorResolver.createArgum。。。。
ERROR Nacos failed to start, please see /opt/nacos-2.0.3/logs/nacos.log for more details.
2.根据start.out的提示去查看nacos.log,可以看到如下异常信息
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:110)
3.在该节点(192.168.88.130)上使用mysql命令远程连接mysql服务器(192.168.88.129),发现还真连接不上,说是mysql服务器接入的连接太多了
root@server-2:~# mysql -h 192.168.88.129 -u root -p
Enter password:
ERROR 1129 (HY000): Host '192.168.88.130' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
4.跑到mysql服务器(192.168.88.129)上去登录mysql,进行FLUSH HOSTS
mysql -h 192.168.88.129 -u root -p
mysql> FLUSH HOSTS;
5.在该节点(192.168.88.130)上重新使用mysql命令远程连接mysql服务器(192.168.88.129),发现还可以连接上了
root@server-2:~# mysql -h 192.168.88.129 -u root -p
mysql>
6.重新启动nacos,就可以启动成功了
INFO Nacos started successfully in cluster mode. use external storage
分析原因:
nacos在服务器重启,或者nacos被shutdown.sh之后,它作为客户端是把跟mysql数据库之间的连接断开了,但是这种断开是非正常流程的断开方式,它前面连接mysql服务器的连接状态还在myql服务器上登记着呢,mysql服务器还在等待它的下一步动作呢。
nacos重启多了,不释放mysql的连接资源,就耗尽了mysql服务器的连接资源,导致一直登录不上。
感觉nacos的shutdown.sh并不安全,同时mysql的连接管理也不咋地,不主动释放长期不交互的死连接。
参考:服务器端mysql连接时:报错 1129 (HY000): Host '' is blocked because of many connection errors;_落叶无痕的博客-CSDN博客