在微服务架构盛行的今天,Seata 作为一款优秀的分布式事务解决方案,备受关注。本文将手把手教你如何在 Mac 和 Windows 环境下本地部署 Seata 1.7.0,并以 Nacos 作为配置中心和注册中心,MySQL 存储相关信息。避免大家踩坑,快速搭建一个可用于开发和测试的 Seata 环境。
1. 准备工作
在开始之前,请确保你已经安装并配置好了以下环境:
- JDK 8 或以上版本
- MySQL 5.7 或以上版本 (例如: 8.0.28)
- Nacos 2.0 或以上版本
- Maven
2. 安装 Nacos
如果还没有安装 Nacos,可以参考以下步骤进行安装:
下载 Nacos 安装包:

curl -O https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz tar -zxvf nacos-server-2.2.3.tar.gz cd nacos/bin启动 Nacos 服务:
sh startup.sh -m standalone # 单机模式启动Nacos 默认端口是 8848,可以通过浏览器访问
http://localhost:8848/nacos进入 Nacos 控制台。默认用户名密码为nacos/nacos。
3. 配置 Nacos
Seata 需要在 Nacos 中存储配置信息,包括 registry.conf 和 file.conf。
创建 Seata 配置:在 Nacos 控制台中,创建以下配置项:
Data ID:
registry.conf,Group:SEATA_GROUP,配置内容:registry { type = "nacos" nacos { serverAddr = "127.0.0.1:8848" # Nacos 服务地址 namespace = "" # Nacos 命名空间,默认空 cluster = "default" } } config { type = "nacos" nacos { serverAddr = "127.0.0.1:8848" # Nacos 服务地址 namespace = "" # Nacos 命名空间,默认空 } }Data ID:
file.conf,Group:SEATA_GROUP,配置内容: (可以使用 Seata release 包中 conf 目录下的file.conf)。 这部分配置包含了事务协调器的各种参数。
重要提示: 确保
registry.conf中的serverAddr配置正确,否则 Seata 客户端无法连接到 Nacos 服务。特别是使用 Docker 部署 Nacos 时,需要注意端口映射和网络配置。
4. 创建数据库
Seata 需要一个数据库来存储事务相关的信息。创建一个名为 seata 的数据库,并执行 Seata 提供的 SQL 脚本(位于 Seata release 包的 db_script/mysql.sql)。
-- 注意根据你的 MySQL 版本修改 SQL 脚本
CREATE DATABASE IF NOT EXISTS seata;
USE seata;
-- -------------------------------- The table for recording distributed transaction logs --------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`branch_id`,`xid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
5. 下载 Seata Server
下载 Seata 1.7.0 Server release 包:
curl -O https://github.com/seata/seata/releases/download/v1.7.0/seata-server-1.7.0.zip
unzip seata-server-1.7.0.zip
cd seata-server-1.7.0
6. 配置 Seata Server
修改 seata-server-1.7.0/resources/application.yml 文件,配置数据库连接信息和注册中心、配置中心信息。
spring:
application:
name: seata-server
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # Nacos 服务地址
namespace: # Nacos 命名空间,默认空
group: SEATA_GROUP
discovery:
server-addr: 127.0.0.1:8848 # Nacos 服务地址
namespace: # Nacos 命名空间,默认空
datasource:
url: jdbc:mysql://127.0.0.1:3306/seata?characterEncoding=utf8&useSSL=false # MySQL 连接地址
username: root # MySQL 用户名
password: your_password # MySQL 密码
driver-class-name: com.mysql.cj.jdbc.Driver
7. 启动 Seata Server
sh bin/seata-server.sh
Seata Server 默认端口是 8091,可以通过查看日志文件 logs/seata-server.log 来确认服务是否成功启动。
8. 常见问题及解决方案
- Nacos 连接失败: 检查
registry.conf和application.yml中的serverAddr配置是否正确,以及 Nacos 服务是否正常运行。 - 数据库连接失败: 检查
application.yml中的数据库连接信息是否正确,以及 MySQL 服务是否正常运行。 - 事务回滚失败: 检查 Undo Log 表是否存在,以及 Seata 客户端是否正确配置了事务组。
- Windows 环境启动失败: 尝试使用
bin\seata-server.bat启动 Seata Server。可能需要设置JAVA_HOME环境变量。
9. 总结
本文详细介绍了如何在 Mac 和 Windows 环境下本地部署 Seata 1.7.0,并以 Nacos 作为配置中心和注册中心,MySQL 存储相关信息。希望本文能够帮助你快速搭建一个可用于开发和测试的 Seata 环境,并在实际项目中应用 Seata 解决分布式事务问题。在生产环境中,推荐使用高可用的 Nacos 集群和 MySQL 集群,并配置 Seata Server 的负载均衡,以确保系统的稳定性和可靠性。可以考虑使用 Nginx 作为反向代理和负载均衡器,并监控 Nginx 的并发连接数等指标,以及使用宝塔面板等工具进行可视化管理。
冠军资讯
代码一只喵