Nacos2.4.1升级3.1测试与操作文档
前置验证
官方支持矩阵
| Nacos版本 | 是否支持升级到3.0版本 | 备注 |
|---|---|---|
| 0.X ~ 1.X | 不支持 | 0.X~ 1.X 版本需要先升级到2.0以上的版本,请参考Nacos2.0升级文档先升级到2.0或2.1版本后再进行升级 |
| 2.0.X | 支持 | 3.0.X版本支持从 2.0.X 升级到 3.0.X, 但数据库表结构有发生变化,请升级前对比mysql-schema.sql文件,并应用新的表结构后进行升级 |
| 2.1.X~ 2.4.X | 支持 | 3.0.X版本支持从 2.1.X~ 2.4.X 升级到 3.0.X,但数据库表结构有发生变化,请升级前对比mysql-schema.sql文件,并应用新的表结构后进行升级 |
| 2.5.X | 支持 | 3.0.X版本支持从 2.5.X 升级到 3.0.X |
自行测试项
**重要:**确保使用与生产环境权限一致的用户
| 测试项 | 结论 |
|---|---|
| 2.4.1版本集群是否加入3.1版本的节点 | 可以 |
| 双版本混合集群是否影响服务注册 | 不影响 |
| 服务是否可以从双混合集群中任意版本节点注册 | 可以 |
| SQL升级是否影响旧版本库 | 不影响 |
| 一个服务器上是否可以启动两个版本的nacos | 不行,多端口冲突 |
| JDK版本变更 | 3.1依赖 JDK17+ |
更新步骤
升级物料
nacos-server-3.1.0.zip
OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz
数据库更新语句
-- 1. 新增 config_info_gray 表
CREATE TABLE IF NOT EXISTS `config_info_gray` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`src_user` text COMMENT 'src_user',
`src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
`gray_rule` text NOT NULL COMMENT 'gray_rule',
`encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`),
KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`),
KEY `idx_gmt_modified` (`gmt_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_info_gray';
-- 2. 为 his_config_info 表新增字段
ALTER TABLE `his_config_info`
ADD COLUMN `publish_type` varchar(50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
ADD COLUMN `gray_name` varchar(50) DEFAULT NULL COMMENT 'gray name',
ADD COLUMN `ext_info` longtext DEFAULT NULL COMMENT 'ext info';
Nacos配置修改项
### nacos.plugin.datasource.log.enabled=true
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=
#*************** Nacos Console Related Configurations ***************#
### Nacos Console Main port
nacos.console.port=8080
### Nacos Server Web context path:
nacos.console.contextPath=
### Nacos Server context path, which link to nacos server `nacos.server.contextPath`, works when deployment type is `console`
nacos.console.remote.server.context-path=/nacos
#*************** Auth Plugin Related Configurations ***************#
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=
### worked when nacos.core.auth.system.type=nacos or nacos.core.auth.console.enabled=true
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token (Base64 string):
#nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
nacos.core.auth.plugin.nacos.token.secret.key=
更新流程
物料分发
# 物料上传
scp nacos-server-3.1.0.zip IP:PATH
scp OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz IP:PATH
JDK安装
# 解压
tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz -C /opt/
# 添加临时环境变量或添加到nacos的启动脚本里
export JAVA_HOME=/opt/jdk-17.0.17+10/
export PATH=$JAVA_HOME/bin:$PATH
Nacos升级
采用逐节点升级替换方式
# 杀死nacos进程
./shutdown.sh
# 启动nacos
./starup.sh
# 日志检查
# 集群界面查看集群管理是否注册上