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

发布于:2025-08-06 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、🔍 什么是 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_beta Beta 环境配置(灰度)
config_info_tag 标签配置
his_config_info 配置历史版本
tenant_info 命名空间(Namespace)信息
users / roles / permissions 控制台用户、角色和权限
group_capacity Group 容量管理
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 内置数据库对比总结

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

九、📌 推荐使用场景一览

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

🔚 总结一句话:

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


网站公告

今日签到

点亮在社区的每一天
去签到