(在了解数据库事务的基础上,主要是理论,后续可能会有实战更新)
目录
参考书籍:MySQL技术精粹 架构、高级特性、性能优化与集群实战
一、原理简介
资源管理器(RM):向事务提供资源具有管理事务提交或回滚 (数据库)
事务管理器(TM):与每个资源管理器通信,每个事务都是分布式事务中的分支事务
- 第一阶段:所有的分支事务被准备。
- 第二阶段:事务管理器告知资源管理器需不需要提交或者回滚。一个分支出错全部回滚。只有一个分支时第二阶段会被省略。
MySQL分布式事务分为两类:内部与外部
内部分布式事务:同一数据库下跨引擎
外部分布式事务:跨多个数据库
二、分布式事务语法
- 在MySQL中,开始执行分布式事务语法格式如下:
xa {start|begin} xid [join|resume]
xa start xid 启动一个标识为xid的事务
- 结束分布式事务语法格式:
xa end xid [suspend [for migrate]]
(说明:xid包括 gtrid[,bqual[,formatID]]
gtrid 一个分布式事务标识符
bqual 一个分支限定符,默认空字符串,在所有分支中必须是唯一的
formatID 一个数字,标识gtrid、bqual值使用的格式,默认为1)
- 使事务进入prepare状态,也就是前面提到的第一阶段:
xa prepare xid
- 提交具体分支事务:
xa commit xid [one phase]
- 回滚具体的分支事务:
xa rollback xid
- 返回处于prepare状态的分支事务的详细信息:
xa recover
参考书籍:MySQL技术精粹 架构、高级特性、性能优化与集群实战