码迷,mamicode.com
首页 > 数据库 > 详细

MySQL如何实现 XA 规范

时间:2020-05-16 19:02:59      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:失败   mysql   分布   nbsp   bsp   前言   com   mit   单机   

一、前言  

  我们提交一个事务,里面有多条sql,mysql是如何管理事务的呢?是如何做到其中一条sql执行失败,全部回滚的呢?

二、XA事务

  XA协议是基于二阶段提交的一个具体实现,也是分为Prepare和Commit两个阶段。

  Prepare阶段:TM(事务协调者)向所有RM(资源管理者)发送prepare指令,询问是否可以执行,RM返回可执行或不可执行。

  Commit阶段:所有RM都返回可执行,则向所有RM发送commit指令。如果有一个RM返回不可执行,则向所有RM发送rollback指令。

三、MySQL如何实现 XA 规范

  MySQL根据单机还是分布式集群分为内部XA和外部XA。

  内部XA:也就是单机的情况下,binlog充当TM(事务协调者)的角色。一个事务过来,写入redo log日志和undo log日志。事务提交时,同时写入redo log和binlog,保证redo log和binlog一致。如果事务撤销,则根据undo log进行撤销。

      外部XA:分布式集群的情况下,一般用数据库代理层来充当TM的角色,实现对事务的支持。

 

MySQL如何实现 XA 规范

标签:失败   mysql   分布   nbsp   bsp   前言   com   mit   单机   

原文地址:https://www.cnblogs.com/ITyannic/p/12901532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!