Seata 1.6.1 + Nacos + MySQL 在Windows下的‘全家桶’配置避坑实录

张开发
2026/5/3 16:12:33 15 分钟阅读
Seata 1.6.1 + Nacos + MySQL 在Windows下的‘全家桶’配置避坑实录
Seata 1.6.1 Nacos MySQL 在Windows下的完整配置指南对于需要在本地Windows环境快速搭建分布式事务开发环境的开发者来说将Seata Server、Nacos注册中心和MySQL数据库整合部署是一个常见需求。本文将提供一个从零开始的完整配置流程帮助初学者避开常见陷阱实现一键式环境搭建。1. 环境准备与软件安装在开始配置前需要确保系统满足以下基础要求操作系统Windows 10/11 64位内存建议8GB以上磁盘空间至少2GB可用空间1.1 必要软件下载首先下载所需软件的最新稳定版本软件名称版本下载地址Seata1.6.1Seata GitHub ReleasesNacos2.2.xNacos GitHub ReleasesMySQL8.0.xMySQL官方下载提示建议将所有中间件安装在非系统盘目录如D:\middleware便于统一管理。1.2 安装MySQL数据库运行MySQL安装程序选择Developer Default安装类型设置root用户密码并记住后续配置需要完成安装后验证MySQL服务是否正常运行mysql -u root -p2. Nacos配置中心部署2.1 Nacos服务安装解压下载的Nacos压缩包到D:\middleware\nacos启动Nacos服务cd D:\middleware\nacos\bin startup.cmd -m standalone验证Nacos是否启动成功访问http://localhost:8848/nacos使用默认账号nacos/nacos登录2.2 Nacos基础配置创建Seata专用的命名空间在Nacos控制台左侧菜单选择命名空间点击新建命名空间填写命名空间IDseata-namespace命名空间名Seata配置中心创建Seata配置分组在配置管理页面选择新建配置Data IDseataServer.propertiesGroupSEATA_GROUP配置格式Properties3. Seata服务端配置3.1 数据库初始化创建Seata专用的数据库CREATE DATABASE seata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;执行Seata提供的SQL脚本初始化表结构mysql -u root -p seata D:\middleware\seata\script\server\db\mysql.sql3.2 Seata核心配置修改conf/application.yml文件主要配置项如下seata: config: type: nacos nacos: server-addr: 127.0.0.1:8848 namespace: seata-namespace group: SEATA_GROUP username: nacos password: nacos >cd D:\middleware\seata\script\config-center\nacos nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t seata-namespace -u nacos -w nacos4. 服务启动与验证4.1 启动Seata服务直接运行启动脚本cd D:\middleware\seata\bin seata-server.bat验证服务是否注册成功登录Nacos控制台在服务管理中查看是否有seata-server服务4.2 配置开机自启可选对于需要长期运行的开发环境可以配置Windows服务下载WinSW工具重命名为seata-service.exe创建seata-service.xml配置文件service idseata/id nameSeata Service/name descriptionDistributed Transaction Service/description executableD:\middleware\seata\bin\seata-server.bat/executable logpathD:\middleware\seata\logs/logpath logmoderotate/logmode /service安装并启动服务seata-service.exe install seata-service.exe start5. SpringBoot应用集成5.1 添加依赖在pom.xml中添加Seata依赖dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-seata/artifactId version2.2.7.RELEASE/version exclusions exclusion groupIdio.seata/groupId artifactIdseata-spring-boot-starter/artifactId /exclusion /exclusions /dependency dependency groupIdio.seata/groupId artifactIdseata-spring-boot-starter/artifactId version1.6.1/version /dependency5.2 应用配置在application.yml中添加Seata配置seata: enabled: true application-id: ${spring.application.name} tx-service-group: default_tx_group service: vgroup-mapping: default_tx_group: default registry: type: nacos nacos: server-addr: localhost:8848 namespace: seata-namespace group: SEATA_GROUP username: nacos password: nacos5.3 全局事务使用示例在需要分布式事务的方法上添加注解GlobalTransactional public void createOrder(OrderDTO orderDTO) { // 1. 扣减库存 storageFeignClient.deduct(orderDTO.getProductId(), orderDTO.getCount()); // 2. 创建订单 orderMapper.create(orderDTO); // 3. 扣减账户余额 accountFeignClient.debit(orderDTO.getUserId(), orderDTO.getMoney()); }6. 常见问题排查在实际部署过程中可能会遇到以下典型问题Nacos配置未生效检查namespace和group是否匹配确认data-id是否正确默认应为seataServer.propertiesSeata服务注册失败检查Nacos服务是否正常运行验证registry.type和config.type都设置为nacos事务不生效确保GlobalTransactional注解添加在业务方法上检查tx-service-group与vgroup-mapping配置对应关系数据库连接问题确认MySQL用户有seata数据库的访问权限检查application.yml中的数据库连接信息是否正确对于Windows环境下的文件路径问题建议使用绝对路径而非相对路径路径中使用正斜杠(/)或双反斜杠(\)避免路径中包含中文或特殊字符

更多文章