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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章