Nacos升级问题

337 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

今天公司的nacos被检测出来有漏洞,要求立即升级最新版本2.1.1,加入鉴权,于是配合运维同事进行升级,遇到一些问题,进行如下记录:

1. 存储问题

为了做到升级过程中,不影响到现有服务的运行,于是计划先搭建一个新的nacos,与老的nacos共用一套数据库,搭建好后再进行nacos配置的切换.

结果发现运维小哥之前一直运行nacos使用的是嵌入式数据库derby,这可是个大问题,为了安全起见赶紧切换为mysql数据库

# 打开数据库类型配置
spring.datasource.platform=mysql

# 配置mysql连接串 
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.0=nacos
db.password.0=nacos

然后重启即可.

ps: 由于使用的嵌入式数据库,就没办法做到新老nacos连接同一个mysql达到数据共享的目的了,只能将老nacos的数据导出,在新的nacos搭建好后导入.

2. 升级后数据迁移问题

在新的nacos搭建好后,需要将备份的数据导入,再导入时出现了奇怪的问题,无论怎么导入都无法导入数据,查看nacos日志也不报错,并且在尝试手动创建配置文件时,提示 发布失败,请检查参数是否正确

在翻阅nacos github-issue后,猜测是由于刚才初始化mysql的脚本并非2.1.1版本的初始化脚本导致,于是删除mysql数据库,重新进行初始化,重启后发现正常了.

3. 用户及权限问题

升级完成后,进行客户端服务配置的调整,主要增加鉴权

spring:
	cloud:
  	nacos:
    	username: xxx
    	password: xxx

启动后发现服务出现报错,发现是配置的用户没有配置读写权限,需要配置对应的读写权限后方可正常拉取配置

总结:

遇到的问题都不是非常复杂的问题,只是记录下解决问题的过程,方便后期归纳思考.