GBase 8s
安装配置
文章

【转载“GBase 8s数据库”公众号】GBase 8s TAC 使用指南

发表于2026-08-25 13:45:28244次浏览2个评论

集群发生主节点故障、备节点接管切换时,常规数据库连接会直接失效,未提交事务中断并立即回滚,应用需自行处理重连、重试逻辑,生产运维成本高。

针对该痛点,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 支持范围

  1. SQL 类型:DQL、DML、DDL;
  2. 会话级 SQL:支持会话环境配置语句,如 SET ENVIRONMENT 、SET ISOLATION 等。

3.2 硬约束与不兼容场景

三条硬约束

  1. 隔离级别需适用 CR(Committed Read ,已提交读)隔离级别;
  2. 若需对查询结果集启用 TAC 恢复能力,必须在 JDBC 连接串配置 TC_RS=1;
  3. 集群架构需为 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 驱动按顺序自动完成,无需应用层介入。

image.png

五、TPCC 压测

基于标准 TPC-C 高并发模型持续压测并循环执行主备切换操作:绝大多数业务场景下,切换过程对应用完全透明;仅带条件过滤的 for update 事务会触发回滚,该笔次业务会失败,但会话不会中断,下一次业务处理仍能正确执行。整套机制全程保障数据一致性,压测过程中运行稳定,无断连、脏数据问题。

六、总结

TAC 核心价值是将主备切换故障恢复逻辑下沉至 JDBC 驱动层,降低应用处理切换异常的开发成本以及大事务回滚的运维成本,最大程度保障生产环境业务连续性。

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 1个月前
写得详细。值得收藏。
sherq1989发表于 1个月前
不错的文章