从 GTS 迁移到 DRDS 原生分布式事务
本教程适用于公有云 GTS 用户迁移到 DRDS 原生分布式事务。
DRDS 原生分布式事务的原理参见 DRDS 分布式事务。
优点
- DRDS 原生事务不依赖任何第三方服务,事务数据保存在用户 RDS 中。不产生额外的资源费用。
- DRDS 原生事务具有更高的性能 、稳定性、SQL 兼容性。
使用场景
将事务从 GTS 迁移到 DRDS 原生事务有以下几种使用方式,您可以根据业务场景决定使用哪一个。
柔性事务
GTS 与 DRDS 柔性事务的工作方式相似。主要区别在于,当事务在提交阶段遇到 “一些分库提交成功、另一些分库提交失败,脏数据需要回滚” 时,处理方式不同:
GTS 事务内的 INSERT、UPDATE、DELETE 语句如果修改脏数据*,会被阻塞到回滚完成后。
*备注:GTS 对于事务外的 SQL 无法提供上述保证。
DRDS 柔性事务 异步回滚中会检查数据,如果恰好在回滚期间更新过脏数据,事务回滚操作中止,并在状态中显示原因。
*备注:只有在高并发并且故障的情况下才会发生异步回滚。
其他事务策略
如果柔性事务不能满足您的业务需要,更多事务策略(XA、2PC 事务等)请参见 DRDS 分布式事务。
迁移指南
如果您要使用柔性事务,在迁移前,请您务必确保您的应用能处理脏读,或者按照文档指导规避上述问题。
迁移过程:
1)在 DRDS 管理控制台中,升级 DRDS 实例到最新推荐版本。
2)提交工单,或添加 DRDS 官方旗舰店钉钉账号 13148457943 / 13064722338 ,在 DRDS 工程师协助下关闭 GTS 并进行测试。
GTS 关闭后,SELECT last_txc_xid()
将会开启 DRDS 柔性事务。从返回的事务编号能够区别 GTS 事务和 DRDS 原生事务:
GTS 事务:
mysql> SELECT last_txc_xid();
+------------------------------+
| last_txc_xid() |
+------------------------------+
| 11.192.91.133:8091:410346728 |
+------------------------------+
DRDS 柔性事务(兼容 GTS 语法):
mysql> SELECT last_txc_xid();
+-----------------+
| last_txc_xid() |
+-----------------+
| cdac6f1eb000000 |
+-----------------+
1 row in set (0.03 sec)
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论