Seata 1.6.1 部署需 registry.conf 与 application.yml 双配置闭环、Nacos 正确加载 seataServer.properties、MySQL 表结构及连接参数完全匹配,三者缺一不可;否则服务看似启动实则不可用。

seata-server 不是装上就能用的组件,它依赖注册中心、配置中心和事务日志存储三者协同。直接解压启动但没配 registry.conf 和 application.yml,90% 会报 no available service 或连不上 Nacos。
确认 JDK 和基础依赖是否就位
Seata 1.6.1+ 要求 JDK 8+(推荐 OpenJDK 11),且必须有 unzip 和 tar;CentOS 需额外检查 firewalld 是否放行了 8091(Seata 默认端口)和 8848(Nacos 端口):
-
java -version输出应含11.0.x或1.8.0_xxx -
unzip -v和tar --version必须可用 -
sudo firewall-cmd --list-ports | grep -E "(8091|8848)"应返回匹配项,否则执行sudo firewall-cmd --permanent --add-port=8091/tcp并重载
下载与目录结构要避开中文和空格路径
Seata 启动脚本对路径敏感,/home/张三/seata 或 /opt/seata server 会导致 bin/seata-server.sh 找不到 conf 目录或读取配置失败:
- 下载命令统一用:
wget https://archive.apache.org/dist/seata/1.6.1/seata-server-1.6.1.tar.gz(1.6.1 稳定版) - 解压并重命名:
tar -zxvf seata-server-1.6.1.tar.gz -C /opt && mv /opt/seata /opt/seata-1.6.1 - 确保
/opt/seata-1.6.1/conf下存在registry.conf和application.yml,且无同名备份文件如application.yml.bak
Nacos 配置必须分两步:注册中心 + 配置中心
只改 registry.conf 的 type = nacos 但没配 application.yml 的 config.type = nacos,服务能注册到 Nacos,但无法拉取 seataServer.properties 配置,最终卡在 DB 连接失败:
-
registry.conf中registry.type和config.type都得设为nacos,不能一个 file 一个 nacos -
application.yml的seata.config.nacos.server-addr必须和seata.registry.nacos.server-addr指向同一 Nacos 实例(例如192.168.1.100:8848) -
seataServer.properties内容需上传至 Nacos 的data-id=seataServer.properties、group=SEATA_GROUP、namespace与application.yml中配置严格一致
MySQL 表初始化和连接池参数容易漏掉
即使 Nacos 配置正确,store.mode=db 下若未建表或连接池超时,seata-server.sh 启动后几秒内就会退出,日志里反复出现 Failed to obtain JDBC Connection:
- 执行官方 SQL 创建表:
mysql -u root -p seata < /opt/seata-1.6.1/script/server/db/mysql.sql(注意路径要对,别用错版本 SQL) -
seataServer.properties中必须包含:store.db.driverClassName=com.mysql.cj.jdbc.Driver(MySQL 8+)、store.db.url=jdbc:mysql://xxx/seata?useSSL=false&serverTimezone=UTC - Druid 连接池最小连接数建议设为
minIdle=5,否则低并发下可能因空闲连接回收导致首次事务失败
registry.conf 和 application.yml 是否形成闭环、Nacos 中 seataServer.properties 是否被正确加载、MySQL 表结构和连接参数是否完全匹配——这三处任一缺失,都会让服务看似启动实则不可用。


















