Seata 2.6.0 部署:TC、MySQL 存储与 Nacos 注册
基线:Seata 2.6.0、MySQL 8、Nacos 2.x。Seata Server、客户端、数据库脚本和 Spring Cloud Alibaba 版本必须按官方兼容矩阵组合。
1. 部署选择
本地学习可以使用 file 注册和 file 存储快速验证链路。生产环境通常使用 Nacos 等注册中心和配置中心,并使用数据库或官方支持的高可用存储。
不要把 Seata 1.x 的 registry.conf、file.conf、镜像标签和数据库脚本直接复制到 2.x。所有镜像和依赖都必须固定版本,禁止使用 latest。
2. TC 数据库
使用 Seata 2.6.0 发布包中对应数据库目录的 MySQL 脚本初始化 TC 数据库。核心表包括:
global_table 全局事务
branch_table 分支事务
lock_table 全局锁
distributed_lock TC 集群协调
vgroup_table 事务组映射
每个参与 AT 的业务数据库还需要创建同一版本客户端对应的 undolog 表。TC 表和业务库 undolog 不能混为一谈。
3. Nacos 注册和配置
注册中心与配置中心应明确 server 地址、namespace、group、cluster、用户名和密码。事务组映射必须在所有客户端和 TC 配置中保持一致。
生产凭据通过环境变量、secret 或外部配置注入,不要写入 Compose、Git 或公开日志。Nacos、TC 和数据库只允许内网访问,管理端口不能直接暴露公网。
4. 客户端检查
启动业务服务后确认:
- TM 已注册到 TC;
- RM 已注册到 TC;
- 事务组映射到可用 TC 集群;
- 数据源被 AT 代理;
- 每个业务库能写入 undo_log;
- XID 能通过 HTTP、RPC 或消息链路传播。
5. 生产检查
TC 使用高可用部署;数据库有备份和容量监控;锁等待、事务超时、回滚重试和 undo_log 数量可观测;配置变更有审计、灰度和回滚;升级前演练 TC、Nacos、数据库和客户端的兼容性。
AT 不能自动回滚消息、缓存、文件或第三方 API。跨越这些边界时,应使用可靠消息、幂等、补偿、TCC 或 Saga,而不是把所有动作都放进一个数据库事务的假设中。