在银河麒麟系统上安装seata需适配arm64/x86_64架构及openjdk 11,下载v1.6.1版本,配置nacos注册中心与mysql存储,推送seata-server.properties至nacos,启动后验证服务在nacos中健康注册。

在银河麒麟操作系统上安装和配置Seata组件,需适配其基于Linux内核(常为UKUI桌面+ARM64/x86_64混合架构)及预装OpenJDK 11/17的特性,避开国产系统中常见的JAVA_HOME识别异常、SELinux策略拦截、systemd服务注册缺失等问题。
确认基础环境与兼容性
执行 uname -m 查看架构:若输出 aarch64,则必须下载 ARM64 版本的 Seata;x86_64 环境可通用官方 tar.gz 包。银河麒麟 V10 SP1+ 默认预装 OpenJDK 11,但 Seata 1.6.x 在 JDK 17 下会因 JAXB 缺失而启动失败——【必须降级或切换为 OpenJDK 11】。
运行 java -version,若显示 openjdk version "17",立即卸载并安装 openjdk-11-jdk-headless(银河麒麟软件商店可搜,或使用 apt 安装)。
检查 $JAVA_HOME 是否指向 JDK 11 的 /usr/lib/jvm/java-11-openjdk-arm64(ARM)或 /usr/lib/jvm/java-11-openjdk-amd64(x86),否则手动在 /etc/profile 中追加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64,然后执行 source /etc/profile。
下载并解压Seata安装包
访问 Seata 官方下载页 https://seata.apache.org/zh-cn/unversioned/download/seata-server,选择 v1.6.1(当前与麒麟系统兼容性最稳版本),下载 seata-server-1.6.1.tar.gz。
将压缩包上传至 /opt 目录,执行:sudo tar -zxvf seata-server-1.6.1.tar.gz -C /opt。
重命名目录便于管理:sudo mv /opt/seata /opt/seata-1.6.1。
赋予 bin 目录执行权限:sudo chmod +x /opt/seata-1.6.1/bin/*.sh —— 银河麒麟默认禁用脚本执行,此步不可跳过。
初始化MySQL存储并创建专用数据库
登录 MySQL(银河麒麟通常预装 MariaDB 10.5+ 或 MySQL 8.0):mysql -u root -p。
执行:CREATE DATABASE seata DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;。
切换到该库:USE seata;,再粘贴执行官方脚本 /opt/seata-1.6.1/script/server/db/mysql.sql 全部建表语句(注意:不要直接 source,因脚本含 USE xxx 会报错;应复制内容后逐段执行)。
【关键点:branch_table 和 global_table 必须有主键且字符集为 utf8mb4,否则事务注册时 silently 失败】。
配置Nacos注册与配置中心
方法一:使用 application.yml(推荐,Seata 1.5.2+ 官方唯一支持方式)
进入 /opt/seata-1.6.1/conf,执行:cp application.example.yml application.yml。
用 vim 编辑 application.yml,定位到 registry 节点,修改为:
type: nacosnacos: server-addr: 127.0.0.1:8848 namespace: 4b70485d-72dd-44df-a76a-7a3f578a3001 group: SEATA_GROUP
再定位到 config 节点,确保 type: nacos,且 data-id: seata-server.properties —— 注意不是 application.yml,这是 Nacos 中实际存放配置的 key 名。
最后定位到 store 节点,删掉 mode: file 行,改为:mode: db,并在 db 下填入 MySQL 连接信息:driver-class-name: com.mysql.cj.jdbc.Driver、url: jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai、user: root、password: your_mysql_root_password。
向Nacos推送seata-server.properties配置
第一步:下载 Nacos 配置推送脚本
从 Seata 源码目录 script/config-center/nacos/nacos-config.sh 复制该脚本到本地,或直接 wget:wget https://raw.githubusercontent.com/apache/incubator-seata/develop/script/config-center/nacos/nacos-config.sh -O /tmp/nacos-config.sh。
第二步:准备配置文件
复制 /opt/seata-1.6.1/script/config-center/nacos/nacos-config.txt 到 /tmp/nacos-config.txt,用 vim 打开,将所有 # 开头的空值行(如 service.vgroup_mapping.my_test_tx_group=default)取消注释,并把 my_test_tx_group 改为你业务中定义的事务分组名(如 order-service-group)。
第三步:推送至 Nacos
执行:cd /tmp && sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -t 4b70485d-72dd-44df-a76a-7a3f578a3001 -u nacos -w nacos(请按你 Nacos 实际地址、端口、账号密码调整)。
推送成功后,登录 Nacos 控制台 → 命名空间 → 查看 dataId 为 seata-server.properties 的配置是否存在,内容是否与 txt 文件一致。
启动Seata服务并验证注册状态
执行启动命令:nohup /opt/seata-1.6.1/bin/seata-server.sh -p 8091 -h 127.0.0.1 -m db > /opt/seata-1.6.1/logs/seata.out 2>&1 &。
等待 15 秒后,检查进程:ps -ef | grep seata-server,确认 Java 进程存在。
查看日志尾部:tail -n 50 /opt/seata-1.6.1/logs/seata.out,若出现 Server started, service listening on 127.0.0.1:8091 且无 Failed to bind port 或 NoClassDefFoundError,即表示启动成功。
最后一步:打开 Nacos 控制台 → 服务列表 → 查看是否出现 seata-server 服务实例,健康状态为 UP —— 这是银河麒麟下 Seata 部署完成的最终标志。











