【转载“GBase 8s数据库”公众号】GBase 8s TAC 使用指南
集群发生主节点故障、备节点接管切换时,常规数据库连接会直接失效,未提交事务中断并立即回滚,应用需自行处理重连、重试逻辑,生产运维成本高。
针对该痛点,GBase 8s 推出 TAC(Transaction Augmented Continuity,事务增强连续性)机制,专门针对集群切换场景,最大程度保障业务连续性。借助 TAC 能力,集群发生主备切换后,JDBC 驱动会自动把连接迁移至新主节点,接续执行未完成事务,整个流程对应用完全透明,业务仅能感知到切换带来的短暂时延,大幅简化应用侧故障处理逻辑。
本文将按照「部署前置要求 - JDBC 接入配置 - 功能能力边界 - 底层恢复原理 - TPC-C 压测验证 - 总结」的顺序,完整介绍 TAC 的使用规范、约束与底层实现。
一、部署前置要求
1.1 集群架构适配规范
TAC 功能适配 HAC 集群或 SSC 集群。其中,HAC 集群的同步方式需配置为 NEAR_SYNC。当前版本的 TAC 仅支持 CR(Committed Read ,已提交读)隔离级别。
| 集群类型 | TAC 支持情况 |
|---|---|
| HAC | 支持,要求 NEAR_SYNC |
| SSC | 支持 |
| RHAC | 不支持 |
❝ 补充扩展说明:HAC 集群搭配 TAC 同时开启 DRAUTO 自动切换模式,可实现无需 CM(集群管理工具)介入的应用无感知故障切换。只需在 JDBC 连接串中完整填写主、备节点全部连接地址信息,当集群发生主备自动切换后,应用侧无需修改任何连接配置、无需重启服务,驱动可自动识别并直连新主节点完成事务接续,省去 CM 组件部署与维护成本。
1.2 服务端配置参数
| 参数名 | 说明 | 默认值 |
|---|---|---|
TC_ENABLE |
Server 端是否开启 TAC 功能。需 Server 端与 JDBC 端同时开启,该功能方可生效 | 1 |
TC_TIMEOUT |
主备切换时,新主节点等待 TAC 连接重续的超时时间(单位:秒)。超时后未完成事务将被放弃并回滚 | 30 |
满足集群与服务端基础条件后,需在应用 JDBC 连接串中配置对应参数以启用 TAC。
二、JDBC 配置
2.1 连接串核心参数
| 参数名 | 说明 | 默认值 |
|---|---|---|
ENABLE_TC |
是否开启 TAC 功能。0 表示关闭,1 表示自动检测集群状态并启用 | 0 |
TC_TIMEOUT |
驱动等待连接重续的最长时间(单位:秒)。超时则放弃重续并返回异常 | 20 |
TC_RS |
是否开启对结果集的 TAC 支持。1 表示开启,开启后会对性能产生一定影响 | 0 |
2.2 连接串示例
jdbc:gbasedbt-sqli://172.17.102.62:12000,172.17.102.63:12000/db1:ENABLE_TC=1;
❝ 说明:上述示例同时填入主、备两台节点地址,配合 HAC DRAUTO+TAC 组合方案使用,切换后驱动自动路由至新主节点,无需修改连接串。
三、功能能力边界
3.1 支持范围
- SQL 类型:DQL、DML、DDL;
- 会话级 SQL:支持会话环境配置语句,如 SET ENVIRONMENT 、SET ISOLATION 等。
3.2 硬约束与不兼容场景
三条硬约束
- 隔离级别需适用 CR(Committed Read ,已提交读)隔离级别;
- 若需对查询结果集启用 TAC 恢复能力,必须在 JDBC 连接串配置 TC_RS=1;
- 集群架构需为 HAC(同步模式 NEAR_SYNC)或 SSC。
特殊不兼容场景处理规则
TAC 模式支持 DQL 查询、DML 增删改及 DDL 语句执行,仅小部分场景存在约束,如带条件过滤的 for update 语句,集群切换后无法保障查询结果集与切换前一致,只能回滚,该事务会失效并抛出异常;但客户端会话连接不会中断。
应用捕获异常后须主动执行 rollback(),才可复用当前连接发起新事务,标准处理代码如下:
connection.setAutoCommit(false);
try {
// 业务逻辑
connection.commit();
} catch (Exception e) {
connection.rollback(); // 必须回滚后才能继续使用该连接
}
四、TAC 故障自动恢复底层原理
TAC 的恢复过程分为连接重续、事务重续、语句重续三个阶段,由 JDBC 驱动按顺序自动完成,无需应用层介入。

五、TPCC 压测
基于标准 TPC-C 高并发模型持续压测并循环执行主备切换操作:绝大多数业务场景下,切换过程对应用完全透明;仅带条件过滤的 for update 事务会触发回滚,该笔次业务会失败,但会话不会中断,下一次业务处理仍能正确执行。整套机制全程保障数据一致性,压测过程中运行稳定,无断连、脏数据问题。
六、总结
TAC 核心价值是将主备切换故障恢复逻辑下沉至 JDBC 驱动层,降低应用处理切换异常的开发成本以及大事务回滚的运维成本,最大程度保障生产环境业务连续性。
评论
热门帖子
- 12025-12-01浏览数:183763
- 22023-05-09浏览数:26460
- 42023-09-25浏览数:20126
- 52020-05-11浏览数:18856