全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

配置 GTS 接入

更新时间:2017-07-20 14:28:44

在申请分布式事务成功后,就可以配置 GTS 接入了。

配置 GTS 接入分为两种情况:

  • 单个 DRDS 实例的 GTS 接入
  • 多个 DRDS 实例的 GTS 接入

单个 DRDS 实例的 GTS 接入

单个 DRDS 实例的 GTS 接入,需要在开始分布式事务的地方加上 select last_txc_xid() 语句,之后的使用方式和传统单机数据库事务完全一致。

您既可以采用手工处理事务的提交和回滚,也可以将管理交给 Spring 事务管理器来管理。

  • 手工处理事务的典型 SQL 语句步骤如下:

    1. set autocommit=false //开启事务
    2. select last_txc_xid() //注册一个 GTS 事务
    3. insert/update/delete 等业务 SQL
    4. commit 或者 rollback //全局提交或回滚
    5. set autocommit=true //恢复自动提交
  • Spring 事务管理器来处理事务的典型代码如下:

    1. @Transactional
    2. public void update(JdbcTemplate jdbcTemplate) {
    3. //开启一个 GTS 分布式事务
    4. jdbcTemplate.execute("select last_txc_xid()");
    5. // insert/update/delete 等业务 SQL
    6. }

多个 DRDS 实例的 GTS 接入

多个 DRDS 实例的 GTS 接入需要在第一个 DRDS 实例中加上 select last_txc_xid() 语句,再将其他 DRDS 实例和第一个实例的 txc-xid 进行关联。

下面以两个 DRDS 实例(datasource1 和 datasource2)的 GTS 接入举例说明,多个实例的接入方法类似。

  1. 在 datasource1 上执行 select last_txc_xid (), 接入 GTS,并得到 xid。

  2. 在 datasource2 上执行 set txc_xid=xid,其中 xid 为1中获取的 xid。

以上两步就可以把 dataource1、datasource2 放到一个分布式事务里了。

上述 GTS 配置之后,DRDS 的多个分库中的数据会保持强一致,根据您业务代码的配置,要么同时提交,要么同时回滚。

本文导读目录