MySQL分布式事务

来源:互联网 发布:麻将游戏服务端源码 编辑:程序博客网 时间:2024/05/21 00:55
MySQL5.0.3开始支持分布式事务,只支持InnoDB引擎。
 1. 分布式事务原理
   使用分布式事务的应用程序涉及一个或多个资源管理器和一个事务管理器。
    资源管理器(RM)用于提供通向事务资源的途径,数据库服务器是一种资源管理器。该管理器必须可以提交或回滚由RM管理的事务。
    事务管理器(TM)用于协调作为一个分布式事务一部分的事务。TM与管理每个事务的RMs进行通信。在一个分布式事务中,各个单个事务均是分布式事务的“分支事务”。分布式事务和各分支通过一种命名方法进行标识。
    用于执行分布式事务的过程使用两阶段提交,发生时间在由分布式事务的各个分支需要进行的行动已经被执行之后。
    第一阶段,TM告知分支事务预备好提交,用于管理分支RM会记录分支行动,分支会指示是否可以提交,这个指示会用在第二个阶段。
    第二阶段,TM告知RMs是否提交或回滚。所有分支指示可以提交,则所有分支被告知提交,有任何分支指示不能提交则所有分支被告知回滚。
    2.分布式事务语法
      分布式事务(XA事务)的SQL语法主要包括:
        XA {START|BEGIN} xid     启动一个XA事务 (xid 必须是一个唯一值; )    
        XA END xid    结束一个XA事务 
XA PREPARE xid    准备
XA COMMIT xid [ONE PHASE]    提交XA事务
XA ROLLBACK xid  回滚XA事务
XA RECOVER   查看处于PREPARE 阶段的所有XA事务


事务标识符xid
xid 是一个XA事务标识符,它由客户端提供或者有mysql服务器生成。
xid的格式一般为 xid : gtrid [, bqual [, formatID]] ;
gtrid是一个分布式事务标识符,
bqual是一个分支限定符,默认是空串

formatID是一个数字,用于标识由gtrid和bqual值使用的格式,默认值是1。



3.存在的问题
      如果分布式在达到prepare状态时,数据库异常重新启动,服务器重新启动后,可以继续对分支事务进行提交或者回滚操作,但是提交的事务没有写binlog,可能导致使用binlog恢复丢失部分数据。如果存在复制的数据库,有可能导致主从的护具库的数据不一致。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 川航机票名字错一个字怎么办 买飞机票名字打错了一个字怎么办 坐飞机耳朵聋了下飞机还痛怎么办 小孩咳嗽两个月了还不好怎么办 生完小孩肚子瘦不下来怎么办 胆子小一个人在家里都害怕怎么办 怀了双胞胎两个宝宝很挤怎么办 飞机无人陪护如果接机延误该怎么办 过年要坐火车回家 狗狗怎么办 一岁八个月宝宝小腿弯怎么办 2岁宝不愿意坐马桶拉屎怎么办 宝宝两岁多肺炎出院还老咳嗽怎么办 去外国机场买机票不会说外语怎么办 坐飞机不能带的物品办理托运怎么办 深圳外地户口儿童要办身份证怎么办 网上订票错写了护照号怎么办 国航 在智能火车票订飞机票订反了怎么办 办社保卡的时候填错地址怎么办 两个人住酒店只有一张身份证怎么办 农村社保卡信息错了说改不了怎么办 社保卡与原医保卡信息错误怎么办 学校发的社保卡丢了怎么办 魔棒工具选中选区后再怎么办 微信每次打开都出现月球图案怎么办 仙人掌的刺扎手里弄不出来怎么办 保险交满15年领了一年死了怎么办 狗咬了出了点血怎么办 被小狗咬到了吃了海鲜怎么办 想给一个人道歉又不敢说怎么办 被尘封的故事中魔法师不见了怎么办 宝骏5602挡升3挡有点卡怎么办 剥开的榴莲没熟壳又扔了怎么办 视频播放器激活码设备超限了怎么办 ai如何把右边菜单栏隐藏了怎么办 矫正牙齿粘牙齿的胶掉了怎么办 3m双面胶生产的时候胶不干怎么办 新房赠送面积没地热想接地热怎么办 教育网注册报名的用户名忘了怎么办 艺术生校考通过文化没过本线怎么办 想做主持人 但不是播音专业怎么办 微信登录版本最低登录不上怎么办