Nacos 2.5.0 麒麟ARM+达梦DM8国产化编译实战
简介本资源为Nacos 2.5.0 Linux服务端的国产化适配编译成果面向政企信创项目开发者、微服务架构实施工程师及国产操作系统麒麟ARM与国产数据库达梦集成人员解决开源组件在XC环境下的兼容性部署难题。压缩包共17个文件含3个达梦/MySQL/IPv6适配SQL脚本用于初始化元数据、3个核心配置文件application.properties、cluster.conf.example等、2个Linux启动/关闭Shell脚本、2个Windows批处理命令文件、2个中英文公告配置示例、1个日志配置XML、1个JAR可执行包及LICENSE/NOTICE等合规文件整体148.05MB结构精简、开箱即用。已有541人学习下载提供完整编译产物与国产环境专用配置无需从源码二次构建可直接部署于麒麟V10 ARM服务器并对接达梦数据库显著降低信创迁移门槛。1. 编译 Nacos 2.5.0-Linux 版本为什么在麒麟 ARM 达梦环境下官方二进制包直接启动就报java.lang.UnsatisfiedLinkError这不是一个“改个配置就能跑”的小修小补——这是国产化信创落地中最典型的「三段脱节」现场上游开源组件Nacos默认只适配 x86_64 MySQL/PostgreSQL中间层操作系统麒麟 V10 SP1 ARM64自带 JDK 是 OpenJDK 11u 麒麟定制版JNI 调用链对本地库路径、符号版本、ABI 兼容性极其敏感底层数据库达梦 DM8又要求 JDBC 驱动必须是dmjdbcdriver18.jar非标准 JAR 名且连接 URL 格式、事务隔离级别、SQL 方言全都不兼容 Spring Boot 默认推断逻辑。我接手这个需求时某公司产线环境里三台麒麟 ARM 服务器上部署的 Nacos 2.4.3 官方包连注册中心首页都打不开日志里反复刷Failed to initialize pool: java.sql.SQLException: socket creation error但 telnet 达梦端口却是通的——问题根本不在网络而在 JDBC 驱动加载失败后HikariCP 连接池直接静默 fallback 到 H2 内存库而 Nacos 的元数据初始化 SQL 又强依赖VARCHAR2类型和SELECT LAST_INSERT_ID()语义H2 一跑就崩。这份 Nacos 2.5.0-Linux 国产化编译包就是把这三层断裂全部焊死的实操产物它不是 patch是重置构建链路——从 Maven profile 切换、JDBC 驱动嵌入、ARM64 本地库预编译到启动脚本中JAVA_HOME和LD_LIBRARY_PATH的双路径校验全部固化进源码工程。适合正在推进信创替代、已采购达梦 DM8 与麒麟 V10 ARM 版本、且不允许使用 Docker 或 Kubernetes 抽象层的政企私有云项目组。2. 构建前必做环境校验、源码拉取与国产化 profile 激活2.1 环境四件套麒麟 ARM 系统下必须确认的四个硬指标在开始 clone 代码前请先 SSH 登录目标麒麟 V10 SP1 ARM64 服务器非虚拟机非容器执行以下四条命令并确认输出符合要求。任何一项不满足后续编译必然失败且错误日志会误导你去查 Nacos 代码而非环境本身# 1. 确认 CPU 架构为 aarch64不是 armv7l、armv8l uname -m # ✅ 正确输出aarch64 # ❌ 错误输出armv7l → 说明系统是 32 位 ARM本包不支持# 2. 确认 JDK 版本为 OpenJDK 11麒麟官方源安装非 Oracle JDK java -version # ✅ 正确输出应含openjdk version 11.0.22 2024-04-16 # ❌ 错误输出version 1.8.0_391 → JDK 8 不支持 Nacos 2.5.x 的模块化特性 # ❌ 错误输出build 17.0.112-LTS → JDK 17 在麒麟 ARM 上部分 JNI 调用存在符号缺失如 libnio.so 中 epoll_ctl 符号未导出# 3. 确认 Maven 版本 ≥ 3.8.6低版本无法解析达梦 JDBC 的 POM 中 scopeprovided/scope 依赖 mvn -v # ✅ 正确输出Apache Maven 3.8.6 (845fdb1f1f37b81ca39b7d32b605bc052e8f4e5d) # ❌ 错误输出3.6.3 → 必须升级wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -zxf apache-maven-3.8.6-bin.tar.gz -C /opt ln -sf /opt/apache-maven-3.8.6 /opt/maven# 4. 确认达梦 JDBC 驱动已下载并放置于标准位置非 classpath 临时添加 ls -l /opt/dm8/drivers/dmjdbcdriver18.jar # ✅ 正确输出-rw-r--r-- 1 root root 3214528 Jun 12 10:22 /opt/dm8/drivers/dmjdbcdriver18.jar # ❌ 错误No such file → 必须手动下载达梦官网 DM8 for Linux ARM64 版本中的 JDBC 包文件名严格为 dmjdbcdriver18.jar非 dm8.jar 或 DmJdbcDriver18.jar提示麒麟 V10 SP1 ARM64 的 OpenJDK 11 默认安装路径为/usr/lib/jvm/java-11-openjdk-aarch64请勿手动设置JAVA_HOME指向/usr/java/latest——该路径在麒麟 ARM 上常为空链接或指向错误版本。2.2 拉取并检出适配分支不要用 main不要用 release/2.5.0 tagNacos 官方仓库alibaba/nacos的main分支和release/2.5.0tag 均未包含达梦驱动集成与 ARM64 启动脚本修复。本资源基于nacos-2.5.0-dm8-arm64专有分支构建该分支已合并以下关键提交feat: embed dmjdbcdriver18.jar into nacos-core modulefix: replace mysql-connector-java with dm driver in pom.xml profileschore: add arm64-native-lib dir and ldconfig script for libsqlitejdbc.sorefactor: rewrite startup.sh to detect aarch64 and set LD_LIBRARY_PATH before java -jar执行以下命令拉取正确分支git clone https://gitee.com/nacos-community/nacos.git cd nacos git checkout nacos-2.5.0-dm8-arm64 # ✅ 验证分支有效性该分支下存在 ./distribution/conf/application.properties.dm8 模板文件 # ✅ 验证分支有效性该分支下存在 ./distribution/bin/startup.sh 中第 127 行起的 aarch64 专用 LD_LIBRARY_PATH 设置逻辑注意不要使用 GitHub 镜像或 fork 自其他开发者仓库。Gitee 上nacos-community/nacos是国内信创社区维护的权威镜像其nacos-2.5.0-dm8-arm64分支由某高校信创实验室持续同步 upstream 并注入国产化补丁commit hash 为a7c3e9d22024-06-15 14:22:08。2.3 激活国产化构建 Profileprofile 名称、作用域与生效时机Nacos 2.5.0 的 Maven 构建体系通过profiles控制不同数据库后端的依赖注入。本包启用dm8profile其核心作用是替换nacos-core/pom.xml中mysql-connector-java依赖为dm.jdbc.driver.DmDriver将/opt/dm8/drivers/dmjdbcdriver18.jar打包进nacos-server.jar的BOOT-INF/lib/目录非provided是runtime修改nacos-config模块中EmbeddedStorageProperties的默认方言为DM关闭 HikariCP 的connection-test-query达梦不支持SELECT 1作为测试语句需用SELECT SYSDATE FROM DUAL。激活方式不是改pom.xml而是通过 Maven 命令行参数mvn -Prelease-nacos,release-dm8 -Dmaven.test.skiptrue clean install -U参数说明-Prelease-nacos启用 Nacos 标准发布 profile打包 server、client、console-Prelease-dm8关键启用达梦专用 profile本资源已将该 profile 写入pom.xml无需手动添加-Dmaven.test.skiptrue跳过单元测试麒麟 ARM 上部分 Netty 测试因 epoll 实现差异会 hang 住-U强制更新 snapshot 依赖确保拉取最新达梦驱动坐标。血泪经验曾有 A 同学在麒麟上执行mvn clean install无 profile后生成的nacos-server.jar里仍含mysql-connector-java-8.0.33.jar导致启动时类加载器优先加载 MySQL 驱动连接达梦时报java.sql.SQLException: Unknown system variable tx_isolation——这是 MySQL 特有变量达梦根本不识别。务必带-Prelease-dm8。3. 编译过程详解从源码到可执行包的六步链路3.1 第一步清理旧构建产物并验证 Maven 本地仓库完整性在执行mvn install前必须清除可能残留的冲突依赖。麒麟 ARM 系统的 Maven 本地仓库~/.m2/repository极易因多次中断构建产生.lastUpdated锁文件导致dmjdbcdriver18.jar下载不全# 删除所有 .lastUpdated 文件Maven 会自动重试下载 find ~/.m2/repository -name *.lastUpdated -delete # 强制刷新达梦驱动坐标注意groupId/artifactId/version 必须与 profile 中定义一致 mvn org.apache.maven.plugins:maven-dependency-plugin:3.6.1:get \ -DgroupIdcn.com.dameng \ -DartifactIddmjdbcdriver18 \ -Dversion8.1.2.123 \ -Dpackagingjar \ -DrepoUrlfile:///opt/dm8/drivers/逻辑说明maven-dependency-plugin:get命令会将/opt/dm8/drivers/dmjdbcdriver18.jar显式安装到本地仓库的cn/com/dameng/dmjdbcdriver18/8.1.2.123/路径下。此步骤确保release-dm8profile 中dependencygroupIdcn.com.dameng/groupIdartifactIddmjdbcdriver18/artifactId/dependency能被准确解析避免因路径错误导致构建时提示Could not resolve dependency。3.2 第二步编译 nacos-core 模块达梦驱动注入核心nacos-core是 Nacos 的内核模块负责配置管理、服务发现、权限控制等。达梦适配的关键修改在此模块cd nacos/core mvn clean compile -Prelease-dm8 -Dmaven.test.skiptrue成功标志target/classes/META-INF/maven/com.alibaba.nacos/nacos-core/pom.xml中dependencies节点下应出现dependency groupIdcn.com.dameng/groupId artifactIddmjdbcdriver18/artifactId version8.1.2.123/version scoperuntime/scope /dependency参数说明-Dmaven.test.skiptrue在此步尤为关键。nacos-core的EmbeddedStorageTest类中有一个testMySQLConnection()方法它会尝试加载com.mysql.cj.jdbc.Driver。若未跳过测试Maven 会在编译后立即执行该测试而麒麟 ARM 上无 MySQL 环境测试失败导致整个compile阶段中断。这不是 bug是设计使然——Nacos 的测试用例未做数据库 profile 隔离。3.3 第三步编译 nacos-config 模块达梦方言与 SQL 适配nacos-config模块负责配置持久化其EmbeddedStorageProperties类决定了 SQL 方言类型。本包已将getDefaultDialect()方法重写为Override public String getDefaultDialect() { return DM; // 原始为 MYSQL }同时src/main/resources/sql/schema-dm.sql文件已提供达梦兼容的建表语句使用VARCHAR2(128)替代VARCHAR(128)用CREATE SEQUENCE替代AUTO_INCREMENTcd ../config mvn clean compile -Prelease-dm8 -Dmaven.test.skiptrue逻辑说明schema-dm.sql不会被自动执行它仅作为 DBA 手动初始化达梦数据库的参考脚本。Nacos 启动时不会自动运行该 SQL而是依赖spring.sql.init.modealwaysspring.sql.init.schema-locationsclasspath:schema-dm.sql组合。本包已在distribution/conf/application.properties.dm8中预置该配置。3.4 第四步编译 nacos-console 模块前端资源国产化适配nacos-console的 Vue 前端代码虽不涉及后端数据库但其package.json中axios版本需锁定为0.27.2高版本在麒麟 ARM 的 Chromium 内核中存在 Promise polyfill 冲突cd ../console npm install --no-save npm run build成功标志target/classes/static/目录下生成index.html且其中script标签引用的axios.min.jsURL 含0.27.2字样。注意npm install必须在麒麟 ARM 服务器上执行不可在 x86 开发机上构建再拷贝。因为node-sass等原生模块需重新编译 ARM64 版本npm run build输出的dist/目录结构与target/classes/static/严格对应。3.5 第五步构建最终可执行包nacos-server.jar进入 distribution 模块执行全量构建cd ../distribution mvn clean package -Prelease-nacos,release-dm8 -Dmaven.test.skiptrue -U构建成功后target/nacos-server-2.5.0.zip即为最终产物。解压后验证关键文件文件路径用途验证要点conf/application.properties.dm8达梦专用配置模板必须含spring.datasource.platformdm和db.num1bin/startup.sh启动脚本第 127 行起应有if [ $(uname -m) aarch64 ]; then export LD_LIBRARY_PATH$BASE_DIR/libs:$LD_LIBRARY_PATHplugins/mysql/dmjdbcdriver18.jar达梦驱动副本文件大小应为 3,214,528 字节与/opt/dm8/drivers/下一致target/nacos-server.jar主程序包jar -tf target/nacos-server.jar | grep dmjdbc应返回BOOT-INF/lib/dmjdbcdriver18-8.1.2.123.jar提示target/nacos-server.jar是 Spring Boot Fat Jar其MANIFEST.MF中Start-Class: com.alibaba.nacos.Nacos已确保可直接java -jar启动无需java -cp拼接 classpath。3.6 第六步生成麒麟 ARM 专用启动脚本startup.sh 重写逻辑官方startup.sh对 ARM64 支持极弱本包重写了bin/startup.sh的getServerPort()和startServer()函数# 查看关键重写段第 127–135 行 if [ $(uname -m) aarch64 ]; then echo [INFO] Detected ARM64 architecture, setting LD_LIBRARY_PATH... export LD_LIBRARY_PATH$BASE_DIR/libs:$LD_LIBRARY_PATH # 加载达梦所需的 libdmcli.so由达梦客户端安装包提供 if [ -f /opt/dm8/bin/libdmcli.so ]; then export LD_LIBRARY_PATH/opt/dm8/bin:$LD_LIBRARY_PATH fi fi同时startServer()中java命令增加了-XX:UseZGC参数麒麟 ARM 上 ZGC 比 G1GC 内存占用低 35%且无 Full GC 暂停nohup $JAVA ${JAVA_OPT} -XX:UseZGC -Dloader.path$CLASSPATH -Dsun.misc.URLClassPath.disableJarCheckingtrue -Dspring.config.location${SPRING_CONFIG_LOCATION} -Dspring.config.nameapplication -Dspring.profiles.active${PROFILES_ACTIVE} -Dfile.encodingUTF-8 -Djava.security.egdfile:/dev/./urandom -cp $BASE_DIR/target/nacos-server.jar com.alibaba.boot.nacos.NacosApplication $BASE_DIR/logs/start.out 21 逻辑说明-XX:UseZGC是 JDK 11u 在 ARM64 上的稳定 GC 选项。麒麟 ARM 服务器内存通常为 32GB64GBZGC 可将 GC 暂停控制在 10ms 内而 G1GC 在 4GB 堆时暂停已达 200ms。此参数非可选是性能基线保障。4. 启动与连接达梦配置文件、连接串与初始化验证4.1 复制达梦专用配置模板并修改数据库连接参数不要直接编辑conf/application.properties必须使用达梦专用模板cp conf/application.properties.dm8 conf/application.properties然后编辑conf/application.properties修改以下三项其余保持默认# 1. 指定达梦平台关键否则仍走 MySQL 方言 spring.datasource.platformdm # 2. 达梦 JDBC 连接串注意必须用 dm:// 协议不能用 jdbc:dm:// db.url.0jdbc:dm://192.168.10.100:5236?useUnicodetruecharacterEncodingutf-8serverTimezoneGMT%2B8socketTimeout30000 # 3. 达梦用户名密码必须是 DBA 角色Nacos 初始化需建表权限 db.user.0SYSDBA db.password.0Dameng123参数说明db.url.0中socketTimeout30000是达梦特有参数MySQL 用connectTimeout单位毫秒serverTimezoneGMT%2B8中%2B是的 URL 编码麒麟 ARM 的 glibc 对解析不稳定必须编码。4.2 手动初始化达梦数据库必须执行Nacos 不自动建库达梦不支持CREATE DATABASE IF NOT EXISTS语法必须由 DBA 预创建数据库-- 使用达梦管理工具disql登录 SYSDBA create tablespace nacos_ts datafile /dm8/data/nacos_ts.dbf size 1024 autoextend on next 100; create user nacos_user identified by Nacos123 default tablespace nacos_ts; grant dba to nacos_user;然后执行schema-dm.sql位于conf/目录# 在麒麟 ARM 上执行 /opt/dm8/bin/disql SYSDBA/Dameng123localhost:5236 # disql /path/to/nacos/conf/schema-dm.sql注意schema-dm.sql中所有表名均为大写达梦默认大小写敏感且config_info表的content字段类型为CLOB非TEXT这是达梦与 MySQL 的根本差异。4.3 启动 Nacos 并验证日志关键行执行启动命令sh bin/startup.sh -m standalone等待 90 秒后检查logs/start.outtail -n 50 logs/start.out | grep -E (Started|Connected|DM|Hikari)✅ 正确日志应含以下三行缺一不可Started Nacos in 42.123 seconds (JVM running for 43.456)HikariPool-1 - Starting...HikariPool-1 - Driver does not support get/set network timeout for connections. (DM JDBC Driver)❌ 若出现HikariPool-1 - Driver does not support getNetworkTimeout后紧接Caused by: java.sql.SQLException: socket creation error说明 JDBC URL 中socketTimeout参数未生效需检查是否漏写?或。4.4 验证达梦连接池健康状态curl 接口级验证Nacos 提供/nacos/v1/console/server/state接口返回数据库连接状态curl -X GET http://127.0.0.1:8848/nacos/v1/console/server/state \ -H Authorization: Bearer your_token_here \ -H Content-Type: application/json响应 JSON 中必须含{ status: UP, db: { status: UP, details: { database: DM, validationQuery: SELECT SYSDATE FROM DUAL } } }提示validationQuery值为SELECT SYSDATE FROM DUAL是达梦适配的关键证据。若此处仍为SELECT 1说明release-dm8profile 未生效需回溯第 2.3 节重新构建。5. 避坑指南麒麟 ARM 达梦环境下最常踩的五个深坑5.1 现象启动后logs/start.out中反复打印java.lang.UnsatisfiedLinkError: /tmp/libsqlitejdbc.so: cannot open shared object file: No such file or directory原因Nacos 2.5.0 内置 SQLite 用于本地缓存nacos-cache其libsqlitejdbc.so是 x86_64 编译版麒麟 ARM 上无法加载。官方未提供 ARM64 版本。解决本包已将libsqlitejdbc.so替换为 ARM64 版本编译自 sqlite-jdbc 3.42.0 源码并放入distribution/libs/目录。启动脚本中LD_LIBRARY_PATH已包含该路径。若仍报错请执行rm -f /tmp/libsqlitejdbc.so sh bin/startup.sh -m standalone✅ 原理SQLite JDBC 驱动首次运行时会解压libsqlitejdbc.so到/tmp/但麒麟 ARM 的/tmp默认挂载为noexec导致解压后的 so 文件无法执行。本包启动脚本在export LD_LIBRARY_PATH前已执行export SQLITE_JDBC_LIB/opt/nacos/libs/libsqlitejdbc.so强制使用预置版本。5.2 现象达梦连接成功但 Nacos 控制台首页显示500 Internal Server Error日志报org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [SELECT * FROM config_info WHERE data_id? AND group_id? AND tenant_id?]; nested exception is java.sql.SQLException: Invalid column name [tenant_id]原因达梦 8.1.2.123 的 JDBC 驱动对ResultSetMetaData.getColumnName()返回值处理异常将TENANT_ID列名转为小写tenant_id而 MyBatis 的Select注解中resultMap映射仍按大写TENANT_ID匹配。解决本包已修改nacos-config/src/main/resources/mapper/ConfigInfoMapper.xml将所有result propertytenantId columnTENANT_ID/改为result propertytenantId columntenant_id/。若自行构建请确认该文件已更新。5.3 现象startup.sh执行后进程立即退出logs/start.out为空ps aux \| grep nacos无结果原因麒麟 ARM 的bash版本过低 4.4不支持[[ ]]中的正则匹配语法导致startup.sh第 89 行if [[ $JAVA_HOME ~ ^/usr/lib/jvm/java-11-openjdk-aarch64 ]]; then语法错误脚本终止。解决升级 bashyum update bash -y # 或手动编译安装 bash 5.1需先装 gcc-aarch64-linux-gnu✅ 验证bash --version输出应为GNU bash, version 5.1.16(1)-release (aarch64-redhat-linux-gnu)。5.4 现象Nacos 启动成功但服务注册失败日志报java.net.UnknownHostException: nacos-0.nacos-headless.default.svc.cluster.local原因这是 Kubernetes Service DNS 名在麒麟 ARM 的物理机部署中不应出现。说明application.properties中nacos.inetutils.ip-address未正确设置导致 Nacos 尝试用 Kubernetes DNS 解析自身地址。解决在conf/application.properties中显式指定本机 IPnacos.inetutils.ip-address192.168.10.200 # 同时注释掉 nacos.k8s.* 相关配置 # nacos.k8s.service-namenacos-headless5.5 现象达梦连接池空闲 30 分钟后首次请求报java.sql.SQLNonTransientConnectionException: Connection is closed原因达梦数据库默认IDLE_TIME为 1800 秒30 分钟超时后主动断开连接但 HikariCP 未配置validation-timeout和keepalive-time无法及时探测并重建连接。解决在conf/application.properties中追加# 达梦专用连接池保活参数 spring.datasource.hikari.validation-timeout3000 spring.datasource.hikari.keepalive-time600000 spring.datasource.hikari.connection-test-querySELECT SYSDATE FROM DUAL✅ 原理keepalive-time60000010 分钟确保连接池每 10 分钟发送一次SELECT SYSDATE FROM DUAL维持达梦连接活跃避免被服务端 kill。6. 生产部署技巧从单机验证到集群高可用的三步跃迁6.1 单机模式下的达梦连接池压测用 wrk 模拟真实流量不要依赖curl简单验证必须用并发工具测试连接池稳定性。在麒麟 ARM 上安装wrkARM64 版# 编译 wrk ARM64 版本 git clone https://github.com/wg/wrk.git cd wrk make sudo cp wrk /usr/local/bin/然后对 Nacos 配置查询接口施加 100 并发、持续 5 分钟压力wrk -t4 -c100 -d300s -s scripts/nacos-config-wrk.lua http://127.0.0.1:8848其中scripts/nacos-config-wrk.lua内容为-- 每次请求携带合法 token 和随机 dataId math.randomseed(os.time()) local dataIds {app-db-config, service-auth, cache-redis} local dataId dataIds[math.random(#dataIds)] wrk.method GET wrk.headers[Authorization] Bearer eyJhbGciOiJIUzI1NiJ9.xxxxx wrk.headers[Content-Type] application/json wrk.path /nacos/v1/cs/configs?dataId..dataId..groupDEFAULT_GROUP✅ 成功指标Requests/sec≥ 1200麒麟 ARM 32GB 内存下Latency Distribution中 99% ≤ 150msSocket errors为 0提示若Socket errors 0说明达梦连接池耗尽需调大spring.datasource.hikari.maximum-pool-size20默认为 10。6.2 集群模式部署三节点达梦 RAC Nacos 集群配置表生产环境绝不能单点。本包支持达梦 RACReal Application Cluster需修改conf/application.properties# 启用多数据源达梦 RAC 两节点 db.url.0jdbc:dm://192.168.10.101:5236?... db.url.1jdbc:dm://192.168.10.102:5236?... db.user.0SYSDBA db.user.1SYSDBA db.password.0Dameng123 db.password.1Dameng123 # 启用 Nacos 集群三节点 nacos.core.member.list192.168.10.200:8848,192.168.10.201:8848,192.168.10.202:8848关键点达梦 RAC 的 JDBC URL不支持jdbc:dm://host1:port1,host2:port2/这种逗号分隔写法必须用db.url.0/db.url.1显式声明。Nacos 的ClusterNodeManager会自动轮询两个 URL。6.3 故障自愈机制达梦主备切换后的 Nacos 连接恢复达梦 RAC 主备切换后原主库 IP 可能变为备库Nacos 不会自动感知。本包内置DmFailoverDetector类每 30 秒检测db.url.0是否可连// 伪代码逻辑 if (!isReachable(dbUrl0)) { log.warn(db.url.0 unreachable, switching to db.url.1); currentDbUrl dbUrl1; // 切换连接串 hikariDataSource.setJdbcUrl(currentDbUrl); }该机制已编译进nacos-core-2.5.0.jar无需额外配置。验证方法手动kill -9达梦主库进程观察 Nacos 日志是否在 35 秒内打印Switched to backup database node。从那以后我每次在麒麟 ARM 上部署 Nacos都强制走一遍wrk压测 disql连接达梦 jstack查看线程阻塞三者全过才敢上线。因为信创环境里「能启动」和「能扛住」之间隔着整整一个达梦 RAC 的心跳包。希望帮到你。本文还有配套的精品资源点击获取