修改Nacos持久化配置

Nacos 默认的落盘方式是嵌入式数据库 DerbyNacos 的登录信息、服务元数据、配置中心的数据、权限控制的配置信息都会存储在这里。为了方便后期优化和管理,通常会选择一个外部的数据库。

目前 Nacos 官方推荐的外部数据库方案为 MySQL,其官方支持比较友好,想要替换为 MySQL 数据库,只需要修改几行配置文件。如果想用其他数据库,可能需要自行修改 Nacos 源码,这里就不推荐了。未来 Nacos 可能会支持更多的数据库,请读者耐心等待吧!

打开 conf 目录下的 application.properties 文件,这是 Nacos Server 启动和运行的核心配置文件。图 6-5 显示了 Nacos Server 的部分默认配置项,包括 contextPathport 和数据库方案。

image 2025 04 16 11 09 53 235
Figure 1. 图6-5 Nacos 配置文件

在这个文件中可以修改 Nacos 持久化配置,主要有三处内容需要修改。

  1. 数据库方案:spring.datasource.platform=mysql 这行配置默认情况下是被注释的,删除这行注释,指定数据库方案为 MySQL。

  2. 数据库的数量:删除 db.num=1 这行注释。

  3. JDBC 连接信息:将 db.url.0、db.user.0db.password.0 这三项修改为自己的数据库连接信息即可。

修改完数据库配置项之后,接下来需要到 MySQL 数据库中创建 Nacos 需要的数据库 Schema 和数据库表。

先创建数据库。

启动并登录 MySQL 数据库,创建名称为 newbee_nacos_config(可以是任意名称,自行定义即可)的数据库,命令如下:

CREATE SCHEMA 'newbee nacos config' DEFAULT CHARACTER SET utf8;

然后导入 nacos-mysql.sql 文件。

该文件在 Nacos 安装包中的 conf 目录下,如图 6-6 所示。

image 2025 04 16 11 17 29 405
Figure 2. 图6-6 nacos-mysql.sql 文件所在的目录

找到 nacos-mysql.sql 文件,直接将其导入刚刚创建的 newbee_nacos_config 数据库。导入成功后就能够看到 Nacos Server 所需的表了,如图 6-7 所示,共 12 张表。

image 2025 04 16 11 18 07 558
Figure 3. 图6-7 使用 MySQL 数据库持久化方式所需的表

除修改 Nacos 的数据库存储方案外,还可以在 application.properties 文件中修改 Nacos 的启动端口。比如,笔者将 Nacos 的启动端口修改为 17748,最终的配置文件如下:

### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=17748
######################## Network Related Configurations ########################
### If I prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false

### Specify local server's IP:
# nacos.inetutils.ip-address=

######################## Config Module Related Configurations ########################
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://localhost:3006/newbee_nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

...

### 省略部分内容

修改完成后,重启 Nacos Server,命令如下:

# 先关闭
./shutdown.sh

# 再启动
./startup.sh -m standalone

此时,启动后的日志输出内容如下:

image 2025 04 16 11 22 11 603

第一次启动 Nacos 时使用的是默认数据库,在启动日志中可以看到 use embedded storage。修改为 MySQL 后,日志中就已经体现出来了,此时的日志内容为 use external storage,而且端口号也改为 17748 了。

进入 Nacos 控制台,一切正常,表示修改成功。

戏台已搭好,好戏就要开场了。接下来,笔者将结合实际的编码讲解服务之间是如何通过 Nacos 实现服务注册、服务发现和服务通信的。