Nacos的数据持久化

  • 前言
  • 数据持久化到mysql
  • 1.准备工作
  • 2.nacos-mysql.sql
  • 2.1 新建数据库
  • 2.2 拷贝nacos-mysql.sql
  • 2.3 初始化数据库
  • 3.application.properties
  • 4.重启nacos
  • 5.新增配置文件
  • 5.1 新增命名空间
  • 5.2 新增配置
  • configclient-dev.properties
  • configclient-prod.properties
  • 6.测试


前言

我们前面是将Nacos安装在单独的一台服务器中作为独立的服务对外提供服务的。每次我们重新启动Nacos服务的时候(甚至是关机重启)发现我们以前自己写的配置文件还在,这是因为Nacos本身为我们提供了数据(配置文件)的持久化。

Nacos本身提供了一个内嵌的数据库–derby。我们写入到Nacos的配置文件其实就是被持久化到了这个数据库中,具体的位置在下图所示的位置

net core quartz mysql 持久化存储_spring cloud alibaba


但是啊,官网说在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力(但也仅仅只支持mysql,mysql的版本必须是5.6.5+)

数据持久化到mysql

Nacos官网为我们提供了将数据持久化到MySQL的具体步骤:

net core quartz mysql 持久化存储_spring cloud alibaba_02

1.准备工作

我们上面说了Nacos只支持MySQL,而且是5.6.5+的版本。这里我们采用的数据库版本号是5.7.x,具体的安装教程参考文章

2.nacos-mysql.sql

2.1 新建数据库

启动我们的MySQL5.7虚拟机,使用SQLyog连接我们的MySQL,创建数据库nacos

net core quartz mysql 持久化存储_mysql_03

2.2 拷贝nacos-mysql.sql

nacos-mysql.sql是数据库的初始化文件,他的位置在nacos的conf里面,如下图:

net core quartz mysql 持久化存储_mysql_04


或者直接解压我们前面下载的nacos-server-1.4.2.tar.gz,在conf目录下面直接找到nacos-mysql.sql,如下图:

net core quartz mysql 持久化存储_数据库_05

2.3 初始化数据库

我们在SQLyog中直接将上面的nacos-mysql.sql导入到我们第一步新建的数据库nacos中,如下图

net core quartz mysql 持久化存储_配置文件_06

3.application.properties

我们进入到nacos的conf目录,可以看到application.properties文件。由此也可以看到nacos是一个springboot项目

net core quartz mysql 持久化存储_数据库_07


执行命令vim application.properties,参照以下内容修改配置文件。修改完毕后esc->:wq!保存退出

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://数据库ip:3306/数据库名称?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=用户名
db.password=密码

net core quartz mysql 持久化存储_数据库_08

4.重启nacos

我们重新启动nacos,然后浏览器输入http://192.168.8.120:8848/nacos发现我们之前的配置文件已经没有了;重新启动config client发现已经无法启动(没有读取到配置文件的原因)

net core quartz mysql 持久化存储_数据库_09

我们之前的配置文件是默认持久化到nacos的内嵌数据库中的,现在我们重新设置了持久化的数据库mysql,但是mysql中尚没有配置文件导致无法读取到。

5.新增配置文件

我们按照文章03.Nacos组件之统一配置中心再次新增配置文件,如下图(新的配置文件会被自动持久化到mysql数据库)

5.1 新增命名空间

如下图所示,我们首先新增一个STUDY的命名空间,随后我们的配置文件都放在该命名空间下面

net core quartz mysql 持久化存储_配置文件_10

命名空间ID已经发生改变了,需要将02.springcloud_alibaba_config_client的配置文件bootstrap.properties中的命名空间换成上图中的新生成的ID

5.2 新增配置

然后我们点击配置列表->STUDY命名空间->新增配置,进入到新增配置页面

net core quartz mysql 持久化存储_数据库_11

configclient-dev.properties

net core quartz mysql 持久化存储_配置文件_12

configclient-prod.properties

net core quartz mysql 持久化存储_spring cloud alibaba_13

6.测试

我们重新启动config client,可以发现这次是没有问题的,能够正常启动

net core quartz mysql 持久化存储_数据库_14


然后我们浏览器访问http://localhost:8811/test/hello,可以正确访问到正式配置文件中配置的属性username的值,如下图

net core quartz mysql 持久化存储_配置文件_15


我们打开SQLyog,查看nacos中的config_info表数据,可以看到我们持久化到数据库中的配置文件信息,如下图

net core quartz mysql 持久化存储_数据库_16