广告
返回顶部
首页 > 资讯 > 数据库 >Nacos版本升级
  • 550
分享到

Nacos版本升级

数据库javamysql运维centos 2023-08-16 18:08:03 550人浏览 独家记忆
摘要

Nacos 默认使用内嵌数据库 Derby,做持久化,我们也可以使用 外部Mysql 作为持久化服务! 在使用 mysql 作数据库时,需要提前创建数据库和表; 官网简绍 ☑ 部署部分,适用于直接部署Nacos2.0.0以上版本的用户。

Nacos 默认使用内嵌数据库 Derby,做持久化,我们也可以使用 外部Mysql 作为持久化服务! 在使用 mysql数据库时,需要提前创建数据库和表;
官网简绍
在这里插入图片描述
☑ 部署部分,适用于直接部署Nacos2.0.0以上版本的用户。
☑ 升级部分,适用于从Nacos1.X版本平滑升级到Nacos2.0.0版本(以及2.0.0-BETA版本)的用户。Nacos2.0.0-ALPHA版本无法进行平滑升级,请勿参照本文档进行升级。
由于Nacos1.X和Nacos2.0的数据结构发生了变化,为了能够完成平滑升降级,需要将数据进行双写,分别生成Nacos1和Nacos2的数据结构进行存储。因此会对性能有一定影响。当集群升级并稳定运行后,可以关闭双写,关闭双写后将会失去平滑降级的功能。

在Nacos2.1.0版本后,默认关闭了双写能力,因此无法支持从Nacos1.X版本平滑升级到2.1.0的能力,若需要使用平滑升级能力,从Nacos1.X直接升级到Nacos2.1.0版本,需要在application.properties文件中设置配置nacos.core.support.upgrade.from.1x=true.

升级

为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。
前提条件
• 版本:
老版本暂时不兼容,目前只基于2.x版本进行了改造,推荐版本 > 2.0.4。
• 内嵌数据库启动:
数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。
如果之前使用过内嵌数据库的单机模式启动,则需要删除 nacos/data 文件夹,在重新启动会重新创建表。
• MySQL启动:
数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。
对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:

ALTER TABLE table_name ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥'

实例

最新版Nacos的初始化SQL文件
一、Nacos 1.4.1升级到v2.1.0后启动报如下错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacacos-config-2.1.0.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested erk.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpServicpringframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ver did not start because dumpservice bean construction failure :PreparedStatementCallback; bad SQL grammar [SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type,encrypted_data_key FROM config_info WHEIT ?,?]; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'encrypted_data_key' in 'field list'

二、解决方案:
看提示是数据表缺少encrypted_data_key字段,那就手动为据表添加该字段
为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。
数据库表 config_info、config_info_beta、his_config_info 中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。

对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:

ALTER TABLE config_info ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥';alter table config_info_beta add column `config_info_beta` text NOT NULL COMMENT '秘钥';alter table his_config_info add column `config_info_beta` text NOT NULL COMMENT '秘钥';

三、主配置文件
/home/nacos/conf/application.properties

 1# spring 2server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos} 3server.contextPath=/nacos 4server.port=${NACOS_APPLICATION_PORT:8848} 5spring.datasource.platfORM=${SPRING_DATASOURCE_PLATFORM:""} 6nacos.cmdb.dumpTaskInterval=3600 7nacos.cmdb.eventTaskInterval=10 8nacos.cmdb.labelTaskInterval=300 9nacos.cmdb.loadDataAtStart=false10db.num=${MYSQL_DATABASE_NUM:1}11db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&SocketTimeout=3000&autoReconnect=true&useSSL=false}12db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}13Db.user=${MYSQL_SERVICE_USER}14db.passWord=${MYSQL_SERVICE_PASSWORD}15### The auth system to use, currently only 'nacos' is supported:16nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}171819### The token expiration in seconds:20nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}2122### The default token:23nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecreTKEy012345678901234567890123456789012345678901234567890123456789}2425### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.26nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}27nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}28nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}29nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}30server.Tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}31server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D32# default current work dir33server.tomcat.basedir=34## spring security config35### turn off security36nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,*.CSS,*.js,*.html,*.map,*.svg,*.png,*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}37# metrics for elastic search38management.metrics.export.elastic.enabled=false39management.metrics.export.influx.enabled=false4041nacos.naming.distro.taskDispatchThreadCount=1042nacos.naming.distro.taskDispatchPeriod=20043nacos.naming.distro.batchSyncKeyCount=100044nacos.naming.distro.initDataRatio=0.945nacos.naming.distro.syncRetryDelay=500046nacos.naming.data.warmup=true

关闭双写

注意,关闭双写后无法在进行平滑降级,请先确认关闭前集群正确运行。

为了节省性能开销,当集群部署完成后,可以先观察一段时间运行情况,当确认无误后,可以关闭双写,从而释放性能,具体的关闭方式是通过api进行:

curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false'

关闭后可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样。说明关闭双写。

插件化实现

通过 SPI 的机制抽象出加密和解密的操作,Nacos 默认提供 AES 的实现。用户也可以自定义加解密的实现方式。具体的实现在 nacos-plugin 仓库。
在 Nacos 服务端启动的时候就会加载所有依赖的加解密算法,然后通过发布配置的 dataId 的前缀来进行匹配是否需要加解密和使用的加解密算法。
客户端发布的配置会在<客户端>通过filter完成加解密,也就是配置在传输过程中都是密文的。而控制台发布的配置会在服务端进行处理。

如何使用

Nacos 加解密插件是可插拔的,有没有都不影响 Nacos 的核心功能的运行。如果想要使用 Naocs 的配置加解密功能需要单独引用加密算法的实现。客户端和服务端都通过添加以下依赖来使用 AES 加解密算法,服务端推荐添加到 config 模块下。

    com.alibaba.nacos    nacos-aes-encryption-plugin    ${nacos-aes-encryption-plugin.version}

${nacos-aes-encryption-plugin.version} 可以获取插件的最新版本。目前插件需要自己编译,并未上传至Maven中央仓库

如何编译

编译插件之前需要先编译nacos并安装至本地仓库.

git clone git@GitHub.com:alibaba/nacos.gitcd nacos && mvn -B clean package install -Dmaven.test.skip=true         # 若出现revision变量无法解析,请更新maven至最新版本git clone git@github.com:nacos-group/nacos-plugin.gitmvn install# 建议上传到公司的maven仓库

Only to burn the back of the road, in order to look back!

来源地址:https://blog.csdn.net/qq_50573146/article/details/126966631

您可能感兴趣的文档:

--结束END--

本文标题: Nacos版本升级

本文链接: https://www.lsjlt.com/news/371839.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nacos版本升级
    nacos 默认使用内嵌数据库 Derby,做持久化,我们也可以使用 外部MySQL 作为持久化服务! 在使用 MySQL 作数据库时,需要提前创建数据库和表; 官网简绍 ☑ 部署部分,适用于直接部署Nacos2.0.0以上版本的用户。 ...
    99+
    2023-08-16
    数据库 java mysql 运维 centos
  • 升级dubbo2.7.4.1版本平滑迁移到注册中心nacos
    目录前言    为什么升级到2.7.4.1?为什么迁移注册中心到nacos?两种升级方案方案一:魔改官方的starter组件注解兼容配置兼容方...
    99+
    2022-11-13
  • Jdk 版本升级
    Jdk 版本升级(多版本配置) 一、配置多版本 首先如果系统第一次安装JDK 登录oracle官网Java Downloads | Oracle下载,此教程以Jdk1.8为例,一键下一步即可安装成功。...
    99+
    2023-09-13
    java jdk
  • 如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos
    这篇文章主要介绍“如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos”文章...
    99+
    2023-06-29
  • zabbix2.4版本升级到3.2版本
    zabbix3.2版本源码安装完毕,目前将2.4版本升级到3.2版本操作,只需要将2.4的数据库备份导出,然后将其导入3.2版本的数据库即可。1、停止zabbix相关服务service zabbi...
    99+
    2022-10-18
  • CentOS7 升级openssl版本(升级至3.0.3)
    首先查看本地openssl版本 openssl version 创建一个放源码的目录(按自己习惯) #这里是我的习惯cd /usr/local/src #去官网获取你想要版本的tar压...
    99+
    2023-09-27
    linux 服务器 ubuntu
  • ubuntu升级Python版本
    一、已有Python版本 使用以下命令查找系统上所有安装的 Python 版本 ls /usr/bin/python* 使用以下命令更改 Python 3 的符号链接 sudo update-alternatives --install ...
    99+
    2023-09-03
    linux 运维 python
  • ORACLE跨版本升级
    跨版本升级(10.2.0.5升级到11.2.0.3)10.2.0.5版本:ORACLE_BASE: /oracle/u01/app/oracleORACLE_HOME: /oracle/u01/app/or...
    99+
    2022-10-18
  • PostgreSQL小版本升级
    我们知道pg_upgrade和pg_dump/pg_restore可以实现大版本升级数据库,那么小版本如何升级,比如从9.6.3到9.6.5?原理:用新版本的软件程序启动,指定老的的数据目录安装pgsql9...
    99+
    2022-10-18
  • zabbix3.0.0升级zabbix3.2.1版本
    背景:   近期公司的zabbix经常有已出的告警无法消除,必须重启后才能消除告警的Bug。后来了解到这是zabbix3.0.0版本的一个bug,所以考虑把在用的zbbix版本升级至最新...
    99+
    2022-10-18
  • pg_upgrade大版本升级
    pg_upgrade(1)PostgreSQL提供大版本升级的一个工具,比如说从9.1到9.2,也可以一次跨多个大版本,直接从9.1到9.5等,它的优点是不需要把数据导入导出,这在数据量比较大的时候,非常方...
    99+
    2022-10-18
  • Linux升级Python版本
    安装升级Pythonlinux自带的python是2.6版本的,用习惯了2.7.x,所以想升级python21.下载源码包,后面的下载链接直接在python官网找的,如果想安装更高的版本自行更换wget https://www.pytho...
    99+
    2023-01-31
    版本 Linux Python
  • nexus 2.X版本升级 3.X版本
    Nexus版本是2.X , 开发需要使用新特性,进行升级,通过查询官网发现,需要升级到2.X特定版本,才能升级到3.X的对应版本. https://help.sonatype.com/repomanager3/upgrade-com...
    99+
    2023-01-31
    版本 nexus
  • linux离线升级ssh,升级到openssh8.8版本
    linux离线升级ssh,升级到openssh8.8版本 liunx版本RedHat 7.6 和 Centos7.6升级问题升级过程1、备升级依赖2、编译安装检查是否有gcc安装环境3、上传文...
    99+
    2023-09-16
    ssh linux 服务器
  • 宝塔升级JDK版本
    宝塔面板 JDK8 → JDK17 一、下载 JDK17 打开服务器命令行,创建并进入/usr/lib/jvm/ 目录: mkdir -p /usr/lib/jvmcd /usr/lib/jvm wget https://downl...
    99+
    2023-08-18
    java jvm linux
  • 如何升级nodejs版本
    如何升级nodejs版本,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。升级方法:1、使用“npm cache clean -f”命令清除npm...
    99+
    2022-10-19
  • nodejs怎么升级版本
    小编给大家分享一下nodejs怎么升级版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法一: 用n升级nodejs# 全局安装n$ npm...
    99+
    2023-06-14
  • 怎么升级node版本
    今天小编给大家分享一下怎么升级node版本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Window 系统window系统升...
    99+
    2023-07-05
  • CentOS7 升级PHP版本至7.4.30
    一、环境准备: 1、服务器事先准备好本地yum源,或者可访问外网。 2、准备好PHP升级包及依赖包。 3、先停止当前的PHP 4、将当前PHP移动至其他目录下作为备份 二、升级步骤 1、将PHP压缩包...
    99+
    2023-10-04
    php 开发语言
  • 升级 Linux 中的 Python 版本
    升级 Linux 中的 Python 版本 在本篇文章中,我们将探讨如何在 Linux 系统中升级 Python 版本。Python 是一种广泛使用的编程语言,不断有新的版本发布,这些新版本通常包含了...
    99+
    2023-10-25
    linux python 运维 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作