Nacos 默认使用内置的嵌入式数据库(Apache Derby),但在生产环境中通常建议外接 MySQL 以实现高可用和持久化存储。以下是详细说明:


1. Nacos 的存储模式

Nacos 支持两种数据存储方式:

模式 说明 适用场景
内置 Derby 默认配置,数据存储在本地文件(${nacos.home}/data/derby-data 开发/测试环境(单机部署)
外接 MySQL 需手动初始化数据库,Nacos 服务端连接外部 MySQL 集群 生产环境(高可用需求)

2. 生产环境为何推荐 MySQL?

  • 数据持久化:Derby 是单机嵌入式数据库,宕机可能导致数据丢失;MySQL 支持集群化部署。
  • 多节点共享:Nacos 集群模式下,所有节点需访问同一数据库以保证数据一致性。
  • 性能与扩展性:MySQL 更适合高并发读写场景。

3. 如何配置 MySQL 存储?

步骤 1:初始化数据库
  1. 创建数据库(如 nacos_config),执行 Nacos 提供的 SQL 脚本:
    • 脚本路径:${nacos.home}/conf/nacos-mysql.sql
    • 脚本内容:创建 config_infousers 等核心表。
步骤 2:修改 Nacos 配置

编辑 ${nacos.home}/conf/application.properties,添加 MySQL 连接信息:

# 数据源类型(必须显式配置)
spring.datasource.platform=mysql

# MySQL 连接信息(示例)
db.url.0=jdbc:mysql://mysql-host:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user.0=root
db.password.0=yourpassword

# 若需多数据源(主从),可配置 db.url.1、db.user.1 等
步骤 3:重启 Nacos 服务
sh ${nacos.home}/bin/shutdown.sh
sh ${nacos.home}/bin/startup.sh

4. 注意事项

  • 版本兼容性:Nacos 2.x 推荐 MySQL 5.7+ 或 8.0+,需确保 JDBC 驱动匹配。
  • 权限要求:MySQL 用户需具备建表、读写权限。
  • 微服务 MySQL 隔离
    • Nacos 的 MySQL 是独立部署的,与业务微服务的数据库(如订单库、用户库)物理隔离
    • 微服务通过 Nacos 客户端获取配置,不直接访问 Nacos 的数据库。

5. 常见问题

Q:Nacos 是否必须依赖 MySQL?
  • 。开发环境可用内置 Derby,但生产环境强烈建议 MySQL。
Q:Nacos 的 MySQL 挂了会怎样?
  • 客户端缓存:Nacos 客户端会缓存最后一次读取的配置,短期内服务不受影响。
  • 服务端不可用:无法动态推送新配置,但已有配置仍有效。
Q:能否用其他数据库(如 PostgreSQL)?
  • 官方不支持。Nacos 仅适配 MySQL,如需其他数据库需二次开发。

总结

  • 默认:Nacos 使用 Derby(适合开发)。
  • 生产:必须外接 MySQL(集群化部署),与业务数据库分离。
  • 微服务:通过 Nacos 客户端 API 获取配置,不直接依赖 Nacos 的存储层。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐