nacos详细安装部署与异常排解
- 官网
官网链接:https://nacos.io/zh-cn/docs/quick-start.html - 异常排查解决
- Invalid default value for
- java.lang.IllegalArgumentException: db.num is null
- CannotGetJdbcConnectionException
一、预备环境准备
- OS
windows 10 - java
1.8.0_144 - maven
Apache Maven 3.5.3 - nacos版本
Nacos 1.4.2-SNAPSHOT - mysql
mysql 版本 | Nacos 自带sql支持性 |
---|---|
5.5.* | 不支持 |
5.7.* | 支持 |
- 规模及部署模式
单机;standalone
二、安装
- 安装方式分两种
- 从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
- 官网下载zip 解压安装
从 最新稳定版本 下载 nacos-server-$version.zip 包。
解压即可,使用连接下载,3次都不成功,最后报了个服务器拒绝下载;启用迅雷也是下载不成功;
具体的git + idea +maven
idea拉取源码
maven打包
解压缩
- 在打包目录下找到macos-server-{version}.zip,目录如下:
- zip解压
- 将解压的文件放在自己常用的启动目录,比如我的D:\Program Files
建立数据库,执行sql脚本
- 新建数据库nacos_config,将nacos的conf下的nacos-mysql.sql执行
-- 版本要求5.7.+及以上
-- 建库
CREATE DATABASE `nacos_config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
/*
*授权
*格式:grant 权限 on 数据库.表 to 用户名@登录主机 identified by "密码";
*解释:授予用户/主机 通过 密码访问 库/表的 某种权限
*
* 权限:all 表示所有权限
* 数据库:* 表示所有库
* 表:* 表示所有表
* 登录主机:% 表示所有主机
*/
grant all privileges on nacos_config.* to username@"%" identified by 'password';
-- 刷新系统权限表(授权后需要更新)
flush privileges;
navicat 执行sql
修改配置文件
修改conf/application.properties文件
spring.datasource.platform=mysql
db.num=1
db.url=jdbc:mysql://ip:port/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=your username
db.password=your password
三、启动nacos
- 在{nacos_home}/bin目录下输入cmd,在弹出的控制台上输入如下命令
startup.cmd -m standalone
如图
- 访问服务 http://localhost:8848/nacos/
初始账号 nacos ,初始密码 nacos
四、安装异常
执行脚本报错
报错内容
执行建表语句报错:Invalid default value for 'gmt_create’
错误日志
[SQL] Query nacos-mysql start
[ERR] 1067 - Invalid default value for 'gmt_create'
[ERR] /*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
略略略略
报错原因
使用了不支持的mysql数据库版本
解决方案
方案一
升级至5.7+数据库,
方案二
或者修改建表语句(这个较麻烦)
properties 文件mysql配置错误
报错内容
报错一
java.lang.IllegalArgumentException: db.num is null
报错二
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
错误日志
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
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.datasource.ExternalDataSourceServiceImpl$SelectMasterTask.run(ExternalDataSourceServiceImpl.java:208)
略略略略
报错原因
properties中,nacos的元数据仓库地址配置错误
解决方案
仔细检查application.properties
中关于mysql的配置项,如下
spring.datasource.platform=mysql
db.num=1
db.url=jdbc:mysql://ip:port/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=your username
db.password=your password