SpringCloudAlibaba快速入门(4)Nacos数据持久化到数据库

写在前面的文章

在之前的文章中,我们已经学习了 Nacos 作为服务注册中心及配置中心,与 Spring Cloud 体系结合的基础使用方法,其中 Nacos 都是以单机模式运行,数据默认保存在本地的内嵌数据库中,用于学习这没有问题,但是生产环境中基于高可用原则则需要对 Nacos 进行集群部署,那么数据保存本地则会出现一致性问题。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 存储。

实战

第一步:安装 Mysql 数据库,版本要求:5.6.5+

目前不支持 8.0 以上版本,可以通过修改源码解决

拉取镜像

docker pull mysql:5.7

创建 my.cnf,用于设置字符集以及 sql_mode

[client] 
default-character-set = utf8mb4 
[mysql] 
default-character-set = utf8mb4 
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
symbolic-links=0

sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4'

启动镜像

docker run --name mysql57 -p 3306:3306 \
	-v /data/mysql/my.cnf:/etc/my.cnf \
	-v /data/mysql/conf.d:/etc/mysql/conf.d \
	-e MYSQL_ROOT_PASSWORD=123456 \
	-d mysql:5.7

进入容器

docker exec -it mysql57 bash

使用 root 帐号登录

mysql -u root -p

创建用户并分配权限

CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
flush privileges;

第二步:初始化数据库
初始化脚本在 Nacos 程序包下的 conf 目录下的 nacos-mysql.sql 文件

第三步:配置 Nacos
修改 Nacos 程序包下 conf/application.properties 文件,添加 MySQL 数据源配置

文件中有示例,只需要打开注释并修改即可

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3316/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=test
db.password=123456

打完收工。重新访问 http://localhost:8848/nacos/,并根据之前学习的 基于Nacos构建分布式配置中心 中的步骤可以再重新操作一篇,
同时可以登录数据库查看,验证数据是否成功入库。

扩展

Nacos 数据持久化支持 mysql8.0

Nacos 默认使用的 mysql 驱动版本为 5.1.34,因为版本太低,所以导致不支持 mysql8.0 版本,只能通过修改源码重新打包的方式进行处理。

参考文档:https://www.cnblogs.com/gyli20170901/p/11245270.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值