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
# 日志检查

# 集群界面查看集群管理是否注册上