全部产品
云市场

从 GTS 迁移到 DRDS 原生分布式事务

更新时间:2019-09-09 14:31:18

本教程适用于公有云 GTS 用户迁移到 DRDS 原生分布式事务。

DRDS 原生分布式事务的原理参见 DRDS 分布式事务

优点

  1. DRDS 原生事务不依赖任何第三方服务,事务数据保存在用户 RDS 中。不产生额外的资源费用。
  2. DRDS 原生事务具有更高的性能 、稳定性、SQL 兼容性。

使用场景

将事务从 GTS 迁移到 DRDS 原生事务有以下几种使用方式,您可以根据业务场景决定使用哪一个。

柔性事务

GTS 与 DRDS 柔性事务的工作方式相似。主要区别在于,当事务在提交阶段遇到 “一些分库提交成功、另一些分库提交失败,脏数据需要回滚” 时,处理方式不同:

  • GTS 事务内的 INSERT、UPDATE、DELETE 语句如果修改脏数据*,会被阻塞到回滚完成后。

    *备注:GTS 对于事务外的 SQL 无法提供上述保证。

  • DRDS 柔性事务 异步回滚中会检查数据,如果恰好在回滚期间更新过脏数据,事务回滚操作中止,并在状态中显示原因。

    *备注:只有在高并发并且故障的情况下才会发生异步回滚。

其他事务策略

如果柔性事务不能满足您的业务需要,更多事务策略(XA、2PC 事务等)请参见 DRDS 分布式事务

迁移指南

如果您要使用柔性事务,在迁移前,请您务必确保您的应用能处理脏读,或者按照文档指导规避上述问题。

迁移过程:

1)在 DRDS 管理控制台中,升级 DRDS 实例到最新推荐版本。

capture_update_drds

2)提交工单,或添加 DRDS 官方旗舰店钉钉账号 13148457943 / 13064722338 ,在 DRDS 工程师协助下关闭 GTS 并进行测试。

GTS 关闭后,SELECT last_txc_xid() 将会开启 DRDS 柔性事务。从返回的事务编号能够区别 GTS 事务和 DRDS 原生事务:

GTS 事务:

  1. mysql> SELECT last_txc_xid();
  2. +------------------------------+
  3. | last_txc_xid() |
  4. +------------------------------+
  5. | 11.192.91.133:8091:410346728 |
  6. +------------------------------+

DRDS 柔性事务(兼容 GTS 语法):

  1. mysql> SELECT last_txc_xid();
  2. +-----------------+
  3. | last_txc_xid() |
  4. +-----------------+
  5. | cdac6f1eb000000 |
  6. +-----------------+
  7. 1 row in set (0.03 sec)