# Nacos 集群 MySQL 替代信创适配解决方案3.2.4版本
# 1. 文档概述
# 1.1 文档目的
本文档提供 Nacos 集群在信创环境下的数据库替代方案,使用达梦 DM8 或人大金仓 KingbaseES 替代 MySQL,指导现场完成部署、验证、升级和日常运维。
安装包:
https://frontend-project-dev.oss-cn-beijing.aliyuncs.com/software/nacos-server-3.2.4-xy-xinchuang-260910.tar.gz
更新日期:2026-09-09 更新内容:修复 3.0.0 <= Nacos <=3.2.3 版本权限绕过漏洞
# 1.2 适用范围
本方案适用于使用 Nacos 集群且需要适配达梦 DM8 或人大金仓 KingbaseES 的项目。
# 2. 问题背景
# 2.1 现状分析
现有项目通常采用 Nacos 集群和 MySQL 数据库。信创项目需要将 MySQL 替换为国产数据库,同时保证服务注册发现、配置管理和集群能力正常。
# 2.2 核心痛点
- 兼容性:国产数据库的 DDL、分页、聚合函数和字段类型与 MySQL 存在差异。
- 部署风险:数据库初始化、数据迁移和配置调整可能造成启动失败或数据异常。
- 运维风险:数据源插件、JDBC 驱动和数据库版本必须匹配。
# 2.3 目标要求
- 支持达梦 DM8 和人大金仓 KingbaseES。
- 保持 Nacos 服务发现、配置管理及集群功能完整。
- 部署过程可验证、可回滚。
# 3. 解决方案
# 3.1 方案概述
本方案基于 Nacos 3.2.4 增加达梦和人大金仓数据源适配:
- 达梦 DM8:数据源类型为
dm,使用 DM 原生 DDL 和运行期 SQL。 - KingbaseES:数据源类型为
kingbase-mysql。
现场只能选择一种数据库,集群所有节点必须使用相同数据库类型。
# 3.2 技术架构
安装包已集成:
nacos/plugins/nacos-datasource-plugin-kingbase-mysql-3.2.4.jar
nacos/plugins/nacos-datasource-plugin-dm-3.2.4.jar
nacos/plugins/kingbase8-9.0.0.jar
nacos/plugins/DmJdbcDriver8.jar
nacos/conf/kingbase-schema.sql
nacos/conf/dm-schema.sql
**驱动说明:**安装包已内置金仓和达梦 JDBC 驱动,正常情况下无需另行安装。如果现场数据库版本、补丁或 JDK 与内置驱动不匹配,可使用数据库厂商提供的匹配驱动进行替换。替换后,同一种数据库只能保留一个 JDBC 驱动版本,集群所有节点必须保持一致。
# 4. 部署实施指南
# 4.1 前置准备
数据备份,必须执行
- 备份 Nacos 配置中心全部配置。
- 备份
cluster.conf和application.properties。 - 对原数据库进行全量备份。
- 备份原 Nacos 安装目录,确保可以回滚。
环境准备
- JDK 17。
- 已部署达梦 DM8 或 KingbaseES。
- Nacos 节点可以访问数据库。
- 集群节点间网络和端口互通。
# 4.2 部署步骤
# 4.2.1 解压安装包
tar -xzf nacos-server-3.2.4-xy-xinchuang-260910.tar.gz
cd nacos
必须解压到全新目录,不要覆盖旧 Nacos 目录,避免残留旧插件或旧驱动。
目录关键内容:
├── bin
├── conf
│ ├── application.properties # 主配置文件
│ ├── cluster.conf.example # 集群配置文件示例
│ ├── console-guide.conf # 3.x 版本新增控制台相关配置
│ ├── derby-schema.sql # 嵌入式derby数据库初始化sql
│ ├── dm-schema.sql # 达梦数据库初始化sql
│ ├── kingbase-schema.sql # 金仓mysql模式初始化sql
│ ├── mysql-schema.sql # mysql初始化sql
│ ├── oracle-schema.sql # oracle初始化sql
│ └── pg-schema.sql # Postgresql初始化sql
├── plugins
│ ├── derby-10.14.2.0.jar
│ ├── kingbase8-9.0.0.jar
│ ├── DmJdbcDriver8.jar
│ ├── mysql-connector-j-8.2.0.jar
│ ├── nacos-datasource-plugin-derby-3.2.4.jar
│ ├── nacos-datasource-plugin-dm-3.2.4.jar
│ ├── nacos-datasource-plugin-kingbase-mysql-3.2.4.jar
│ ├── nacos-datasource-plugin-mysql-3.2.4.jar
│ ├── nacos-datasource-plugin-oracle-3.2.4.jar
│ ├── nacos-datasource-plugin-postgresql-3.2.4.jar
│ ├── nacos-default-ai-importer-plugin-3.2.4.jar
│ ├── nacos-default-ai-pipeline-plugin-3.2.4.jar
│ ├── nacos-default-ai-trace-plugin-3.2.4.jar
│ ├── nacos-ldap-auth-plugin-3.2.4.jar
│ ├── nacos-oidc-auth-plugin-3.2.4.jar
│ └── postgresql-42.7.11.jar
└── target
└── nacos-server.jar # 主服务
# 4.2.2 数据库初始化
达梦 DM8
建议创建独立 NACOS 用户或 Schema。
使用达梦管理工具或 disql 执行:
conf/dm-schema.sql
人大金仓 KingbaseES
建议准备独立数据库、Schema 和用户,例如:
数据库:nacos
Schema:NACOS
用户:nacos
使用 KingbaseES 管理工具执行:
conf/kingbase-schema.sql
初始化脚本执行报错时应停止部署,确认数据库版本、兼容模式和 Schema 后再处理。
# 4.2.3 配置文件修改
根据现场数据库类型,修改 conf/application.properties。金仓和达梦配置只能启用一套。
人大金仓配置示例
spring.sql.init.platform=kingbase-mysql # 旧版本无法区分数据库模式,新版本为了便于区分数据库模式,特此命名
db.num=1
db.url.0=jdbc:kingbase8://127.0.0.1:54321/nacos?schema=NACOS&compatibleMode=mysql&ignoreCase=true&ENCODING=utf-8
db.user=nacos
db.password=请替换为真实密码
db.pool.config.driverClassName=com.kingbase8.Driver
db.pool.config.connectionTestQuery=SELECT 1
schema、currentSchema 和 compatibleMode 参数以现场 KingbaseES 版本及 JDBC 驱动说明为准。
达梦配置示例
spring.sql.init.platform=dm
db.num=1
db.url.0=jdbc:dm://127.0.0.1:5236?schema=NACOS
db.user=NACOS
db.password=请替换为真实密码
db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
db.pool.config.connectionTestQuery=SELECT 1
DMSERVER 是达梦服务名,不是固定必填项。多数环境可以忽略;现场明确要求服务名时使用:
db.url.0=jdbc:dm://127.0.0.1:5236/DMSERVER?schema=NACOS
集群配置
编辑 conf/cluster.conf:
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
# 4.2.4 集群启动与验证
启动集群
sh bin/startup.sh
建议先启动一个节点并完成验证,再启动其他节点。
检查日志
tail -f logs/start.out
同时检查:
logs/nacos.log
logs/config-fatal.log
logs/naming-server.log
访问地址
Nacos 3.x 默认端口:
| 地址或端口 | 用途 |
|---|---|
http://节点IP:8080/ | Console 管理页面 |
8848 | Open/Admin HTTP API |
9848 | 客户端 gRPC |
9849 | 服务端节点间 gRPC |
7848 | JRaft |
数据迁移
- 配置数据可通过 Nacos 控制台从原集群导出,再导入新集群。
- 服务注册信息无需迁移,由各微服务重新注册。
功能验证
- 创建并查询命名空间。
- 发布、查询、修改和删除配置。
- 查看和回滚配置历史版本。
- 重启 Nacos 后重新查询配置。
- 验证客户端注册和服务发现。
- 验证集群节点状态和数据一致性。
# 4.3 JDBC 驱动替换
只有现场版本与包内驱动不匹配时才需要替换。
替换步骤
- 停止全部 Nacos 节点。
- 将包内原驱动移出
plugins/并备份。 - 将现场匹配驱动放入
plugins/。 - 同一种数据库只保留一个 JDBC 驱动。
- 所有集群节点使用相同驱动版本。
- 完整重启 Nacos。
驱动文件名发生变化时,driverClassName 配置不变。
# 4.4 回滚方案
- 停止全部新 Nacos 节点。
- 保留故障日志。
- 恢复原 Nacos 程序和配置。
- 按备份策略恢复原数据库。
- 启动原 Nacos 集群并验证业务。
# 5. 运维管理指南
# 5.1 版本升级
升级前确认目标 Nacos、数据源插件、JDBC 驱动和数据库版本兼容,并完成数据库和配置备份。
建议在测试环境验证后逐个节点滚动升级。所有节点最终必须保持相同 Nacos、插件和驱动版本。
# 5.2 集群调整
集群扩缩容与原生 Nacos 一致。新增节点必须同步:
application.propertiescluster.conf- 数据源插件
- JDBC 驱动
# 5.3 日常运维
重点检查:
- Nacos 节点 CPU、内存、磁盘和日志。
- 数据库连接数、慢 SQL、锁等待和备份状态。
- 集群各节点配置、插件和驱动版本是否一致。
- 配置发布、命名空间查询及客户端注册是否正常。
常见错误:
ClassNotFoundException: com.kingbase8.Driver
ClassNotFoundException: dm.jdbc.driver.DmDriver
Unknown database type
BadSqlGrammarException
出现驱动类错误时,确认驱动位于 plugins/、同一数据库只保留一个版本,并完整重启 Nacos。
# 6. 附录
# 6.1 常见问题 FAQ
Q1:安装包是否已包含数据库驱动?
A:已包含 kingbase8-9.0.0.jar 和 DmJdbcDriver8.jar,正常情况下无需另装。
Q2:现场数据库版本与内置驱动不匹配怎么办?
A:使用厂商提供的匹配驱动替换包内驱动。同一种数据库只保留一个版本,集群所有节点保持一致。
Q3:是否支持从 MySQL 迁移配置数据?
A:支持。通过 Nacos 控制台导出原配置并导入新集群;服务注册信息由微服务重新注册。
Q4:是否支持部分节点使用 MySQL、部分节点使用国产数据库?
A:不支持。集群所有节点必须使用相同数据库类型。
Q5:达梦连接地址必须填写 DMSERVER 吗?
A:不是。DMSERVER 是服务名,多数环境可以忽略,现场明确要求时再填写。
快速跳转