当前位置: 首页 > 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.lryc.cn/news/611259.html

相关文章:

  • Python-机器学习初识
  • 机器学习——集成学习(Ensemble Learning):随机森林(Random Forest),AdaBoost、Gradient Boosting,Stacking
  • 论文阅读笔记:《Curriculum Coarse-to-Fine Selection for High-IPC Dataset Distillation》
  • 2.4 组件通信
  • 高阶 RAG :技术体系串联与实际落地指南​
  • 计算机网络 第2章通信基础(竟成)
  • PYQT的QMessageBox使用示例
  • 深入理解 Ext 系列文件系统:从磁盘物理到文件系统原理
  • 注意点:如何使用conda创建虚拟环境并使用虚拟环境以及当安装相关库时,如何指定安装到那个环境里面 ---待看
  • LINUX-进程管理及基础管理
  • Java开发时出现的问题---并发与资源管理深层问题
  • OpenSpeedy绿色免费版下载,提升下载速度,网盘下载速度等游戏变速工具
  • day25 进程
  • FastAPI快速入门P2:与SpringBoot比较
  • 【数据结构初阶】--排序(三):冒泡排序,快速排序
  • add_key系统调用及示例
  • 《C++》继承完全指南:从入门到精通
  • 【Day 16】Linux-性能查看
  • 计算机基础:操作系统学习的基石
  • 分布式微服务--Nacos 集群部署
  • RabbitMQ延时队列的两种实现方式
  • 磁悬浮转子的“静音术”:深度解析无接触抑制旋转幽灵的奥秘
  • 基于华为开发者空间的Open WebUI数据分析与可视化实战
  • 【Linux系统编程】线程概念与控制
  • MATLAB实现菲涅尔法全息成像仿真
  • Spring Boot 整合 Web 开发全攻略
  • Java面试宝典:深入解析JVM运行时数据区
  • Linux 内存管理之 Rmap 反向映射(二)
  • EP01:【DL 第二弹】张量(Tensor)的创建和常用方法
  • BloodHound 8.0 首次亮相,在攻击路径管理方面进行了重大升级