重新编译Nacos,让它支持Mysql8

1,127 阅读1分钟

Mysql&Nacos版本

我的数据库版本是Mysql8.0.17 Nacos版本为:nacos-server-1.2.0 将Nacos需要的sql文件导入到对应的mysql仓库中去

修改Nacos配置信息

启动nacos

./startup.sh -m standalone

使用cat命令查看错误日志 cat /opt/software/nacos/logs/start.out

错误日志如下

nacos默认支持mysql5,需要修改pom.xml文件及类代码重新编译nacos使其支持mysql8

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:523)
	at com.alibaba.nacos.config.server.service.BasicDataSourceServiceImpl$SelectMasterTask.run(BasicDataSourceServiceImpl.java:317)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)

修改Nacos

下载nacos代码

git clone github.com/alibaba/nac…

修改pom.xml文件

默认的mysql-connector版本是5.1.34

将其替换为8的版本,这里我使用的是8.0.18

<dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.18</version>
</dependency>

修改MysqlHealthCheckProcessor.java文件

修改naming这个项目 com.alibaba.nacos.naming.healthcheck 包下的

注释掉第24行,添加

import com.mysql.cj.jdbc.MysqlDataSource;

编译

进入到nacos的家目录下执行如下命令

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

打包好的文件放在distribution\target\下

启动nacos

单机模式

startup.sh -m standalone

访问地址

127.0.0.1:8848/nacos