Nacos MySQL 存储

Nacos 默认用内嵌 Derby 存数据,适合单机试用;生产或集群环境建议换 MySQL。本章讲为什么换、怎么换、怎么验证。

为什么需要 MySQL

  • 默认内嵌 Derby 的数据只存在本机目录,重启不丢但难以备份、迁移、多人共享
  • 集群模式下每个节点各存一份 Derby 会导致数据不一致,必须用共享存储
  • 配置内容、持久实例这类需要可靠保存的数据,放进 MySQL 更可控

单机学习阶段用 Derby 完全够用,本章的切换主要是为第 12 章集群部署做准备。

准备数据库与表结构

先建库,再执行 Nacos 自带的建表脚本:

CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4;

脚本位于解压目录 conf/mysql-schema.sql(旧版本叫 nacos-mysql.sql),执行即可建出全部表,核心表包括:

表名用途
config_info当前配置内容
his_config_info配置历史版本(回滚数据源)
config_info_beta灰度发布的 beta 配置
users / roles鉴权用户与角色

命令行执行脚本:

mysql -u nacos -p nacos_config < /opt/nacos/conf/mysql-schema.sql
# 输出无报错即成功;可查表确认
mysql -u nacos -p nacos_config -e "SHOW TABLES;"

修改 application.properties

编辑 conf/application.properties,把存储从 Derby 切到 MySQL,核心是 spring.datasource 三件套与数据源参数:

# 开启 MySQL 数据源
spring.datasource.platform=mysql
# 数据源个数与连接信息(下标从 0 开始)
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=nacos
db.password.0=换成你的数据库密码

注意:Nacos 的 MySQL 参数是 db.url.0 / db.user.0 / db.password.0 这套命名,不是 Spring 常规的 spring.datasource.url,别照搬别的框架写法。

重启并验证

改完配置重启 Nacos,再验证数据确实写进了 MySQL:

sh /opt/nacos/bin/shutdown.sh
sh /opt/nacos/bin/startup.sh -m standalone
# 启动后到控制台随便建一份配置
mysql -u nacos -p nacos_config -e "SELECT data_id FROM config_info;"
# 输出:order-service.properties   (控制台建过的配置已落库)

控制台顶部出现存储切换提示、config_info 表出现刚建的配置,都说明 MySQL 已生效。

多数据源与集群提示

db.num=2 并补上 db.url.1/db.user.1/db.password.1 可配置两个数据源(如主备);集群部署时所有节点连同一个 MySQL,配置与持久实例数据即全局共享——这是第 12 章集群方案的基础。

小结

接 MySQL 就三步:建库并执行 conf/mysql-schema.sql 建表 → 在 application.properties 里配好 db.num/db.url.0/db.user.0/db.password.0 → 重启后到控制台建条配置,去 config_info 表里确认落库。跑通这一步,集群部署就只剩节点与负载均衡的活了。

笔记加载中…