数据持久化
在之前的教程中,我们对于Nacos服务端自身并没有做过什么特殊的配置,一切均以默认的单机模式运行,完成了上述所有功能的学习。但是,Nacos的单机运行模式仅适用于学习与测试环境,对于有高可用要求的生产环境显然是不合适的。那么,我们是否可以直接启动多个单机模式的Nacos,然后客户端指定多个Nacos节点就可以实现高可用吗?答案是否定的。
在搭建Nacos集群之前,我们需要先修改Nacos的数据持久化配置为MySQL存储。默认情况下,Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只要支持MySQL的存储。
配置Nacos的MySQL存储只需要下面三步:
第一步:安装数据库,版本要求:5.6.5+
第二步:初始化MySQL数据库,数据库初始化文件:nacos-mysql.sql,该文件可以在Nacos程序包下的conf目录下获得。执行完成后可以得到如下图所示的表结构:
第三步:修改conf/application.properties文件,增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码。配置样例如下:
### If use MySQL as datasource:spring.datasource.platform=mysql### Count of DB:db.num=1### Connect URL of DB:db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=falsedb.user.0=rootdb.password.0=111111
到这里,Nacos数据存储到MySQL的配置就完成了,可以尝试继续用单机模式启动Nacos。然后再根据之前学习的Nacos配置中心的用法来做一些操作,配合MySQL工具就可以看到数据已经写入到数据库中了。
整合MySQL8.0+
第一步:安装mysql:8.0 这边安装的8.0.23
第二步:使用Navicat链接,发现报错
Mysql技巧
第三步:与前文配置类似但是会出现一些问题,nacos默认不支持MySQL8.0报异常org.springframework.jdbc.CannotGetJdbcConnectionException
处理方法:重新编译nacos工程,修改最外层pom文件mysql-connector-java版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
cmd命令窗口进入项目根目录执行:
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
执行完成之后打包好的文件在项目根目录下:
根目录\distribution\target
nacos-server-1.4.2-SNAPSHOT.zip
第四步:修改conf/application.properties文件注意:这里需要修改时区&serverTimezone=Asia/Shanghai
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=111111
第五步:启动naocs startup.cmd -m standalone单机模式启动,默认为集群模式。修改默认模式只需将startup.cmd里的 set MODE="cluster" 修改成 set MODE="standalone"
