当前位置: 首页 > news >正文

分布式微服务--Nacos持久化

一、🔍 什么是 Nacos 持久化?

Nacos 持久化,是指将 Nacos 的配置中心数据(如 DataID、Group、Namespace)、服务注册信息和权限管理等,保存到外部数据库(如 MySQL)中,实现配置的持久存储、版本控制、历史记录和集群同步。


二、📦 Nacos 内置存储(默认)

✅ 默认行为:

如果你没有配置数据库(MySQL),Nacos 默认使用内置的轻量数据库 Derby(纯 Java 实现)。

🗂 存储位置:

nacos/data/derby-data/
nacos/data/config-data/

✅ 适用场景:

场景是否推荐使用内置数据库
本地开发测试✅ 推荐(开箱即用)
单人学习演示✅ 推荐
线上生产❌ 禁用
多人协作❌ 禁用
Nacos 集群❌ 禁用


三、🔧 Nacos 持久化:为什么要使用 MySQL?

原因说明
❌ 内置 Derby 不支持集群集群间无法同步数据
❌ 数据重启易丢失Derby 是轻量级嵌入式
✅ 配置需长期保存外部数据库可持久保存
✅ 需要权限控制、版本管理权限和历史数据依赖数据库表
✅ 高可用部署(集群)必需所有节点共享同一数据库


四、🧠 Nacos 持久化会存储哪些数据?

以下是通过 nacos-mysql.sql 初始化的主要表:

表名用途
config_info配置中心核心配置(DataID、Group等)
config_info_betaBeta 环境配置(灰度)
config_info_tag标签配置
his_config_info配置历史版本
tenant_info命名空间(Namespace)信息
users / roles / permissions控制台用户、角色和权限
group_capacityGroup 容量管理
tenant_capacity租户容量管理


五、🚀 持久化配置步骤详解(使用 MySQL)

✅ 1. 创建数据库:

CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

✅ 2. 导入官方 SQL 脚本:

在 conf/nacos-mysql.sql 中找到并执行:

文件名称也可能为:mysql-schema.sql(是早期版本(Nacos 1.x)中常用的数据库初始化脚本名称)

mysql -u root -p nacos_config < nacos/conf/nacos-mysql.sql

✅ 3. 修改配置文件:

编辑 nacos/conf/application.properties

# 指定使用 MySQL 数据源
spring.datasource.platform=mysql# 多数据源配置,仅配置一个即可
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&useSSL=false
db.user=root
db.password=123456

✅ 所有集群节点需配置相同数据库信息!

✅ 4. 启动 Nacos:

  • 单机启动:

sh startup.sh -m standalone
  • 集群启动:

sh startup.sh -m cluster

六、🧩 集群部署是否必须持久化?

必须持久化到 MySQL,否则:

  • 各节点数据无法同步;

  • 服务注册信息、配置不一致,导致脑裂;

  • 高可用场景无法实现。


七、📝 如何判断当前是否使用内置数据库?

方法一:查看日志

Database product name is: Apache Derby

方法二:看文件夹是否有

nacos/data/derby-data/

方法三:配置文件未设置数据库信息

未设置 spring.datasource.platform,或设置为 derby,即为内置。


八、⚙️ 持久化 VS 内置数据库对比总结

对比项内置 DerbyMySQL 持久化(推荐)
是否默认开启✅ 是❌ 需配置
是否持久化存储❌ 有丢失风险✅ 持久保存
是否支持集群❌ 不支持✅ 支持
是否支持版本管理❌ 不支持✅ 支持
是否支持权限控制❌ 不支持✅ 支持
是否适合生产环境❌ 禁用✅ 推荐
部署复杂度✅ 简单❌ 需配置数据库

九、📌 推荐使用场景一览

场景推荐方式
本地快速调试 / 学习✅ 内置 Derby
多人协作 / 共享配置中心✅ 持久化 MySQL
服务注册高可用集群✅ 持久化 MySQL
正式生产环境✅ 持久化 MySQL

🔚 总结一句话:

Nacos 内置 Derby 数据库适用于开发环境;一旦部署到测试/生产或做集群部署,必须接入 MySQL 进行持久化配置。

http://www.xdnf.cn/news/1247779.html

相关文章:

  • linux定时器管理 timer_*系统调用及示例
  • 每日五个pyecharts可视化图表-bars(4)
  • 系统设计入门:成为更优秀的工程师
  • iptables 里INPUT、OUTPUT、FORWARD 三个链(Chain)详解
  • MATLAB实现的机载合成孔径雷达回波生成和处理
  • zyh贪心类题目补题报告
  • 灰色优选模型及算法MATLAB代码
  • GoLand 项目从 0 到 1:第五天 —— 角色权限中间件实现与事务控制
  • 三极管三种基本放大电路:共射、共集、共基放大电路
  • 使用公众号的消息模板给关注用户发消息
  • Pycaita二次开发基础代码解析:参数化模板创建与设计表驱动建模
  • RHCA03--硬件监控及内核模块调优
  • MCP与Function Calling
  • SAP FI模块凭证增强逻辑的策略
  • C++ string类
  • NLP自然语言处理 02 RNN及其变体
  • GPS信号捕获尝试(上)
  • 基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程
  • Modbus tcp 批量写线圈状态
  • 【STM32】HAL库中的实现(四):RTC (实时时钟)
  • ES 模块动态导入
  • BeanFactory 和 ApplicationContext 的区别?
  • centos通过DockerCompose搭建开源MediaCMS
  • 如何让 RAG 检索更高效?——大模型召回策略全解
  • 字符串匹配--KMP算法
  • Arxiv-Daily
  • 【机器学习】算法调参的两种方式:网格搜索(枚举)、随机搜索
  • Spring AI 系列之三十六 - Spring AI Alibaba-nl2sql
  • 【Git学习】入门与基础
  • 调试|谷歌浏览器调试长连接|调试SSE和websocket