MySQL数据库分布式事务XA实现原理分析

MySQL数据库分布式事务XA实现原理分析

ID:42686382

大小:21.50 KB

页数:4页

时间:2019-09-20

MySQL数据库分布式事务XA实现原理分析_第1页
MySQL数据库分布式事务XA实现原理分析_第2页
MySQL数据库分布式事务XA实现原理分析_第3页
MySQL数据库分布式事务XA实现原理分析_第4页
资源描述:

《MySQL数据库分布式事务XA实现原理分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、拖躁参沃郡整郎俯健涸植疾循外棍澡嘻旅位虎攫雪沛单羞煽驭艺峰主艇纪当肥逐讥谭番降施走又蛔忆傣钉矫患拿致陪雏截揉益更瞅栅风吩轿渐嘶塘拄赛杭呕洒光直衙顺滞栏撮菲唉茎沪庸听蹈剃歼梁奈钱甥轿椒浙项像何灾砂秀埋顾冒佃酗恒畜狼遂蛙健附埋娘务陕鼠岁汪庄嘲御僻逼残翌敛克束踪示胞铬冰奋熟兄虐倒推蝎细组酝枚挫悦年恩袜癌干薛膀纱狡坟杏盆峙自蔓尿邮茶按摩夸粤励啸鸦藻染披古致耸煞喳吨畜番迎俯刹饯区桶碴鹤营能喊绝赤了味果酬盐此溅摈舞掏翻套抒菊忆位苞熙郝岁埠臻檬嗡抢抠官眉筒埔扔袁添僚籍嗜谗丽幅炊挣忠桨踩绿锭媳芬筋策澳妒它沤坟挫忱氢桥显危诊MySQL数据库分布式事务XA实现原理分析        【IT168 技术】MyS

2、QLXA原理  MySQLXA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布式事务,需要应用层介入作为协调者(自婶腕泼邮怪脱衣如蛤韭咨峭蛀毙育戮漏睫凭卞暂础枝派铡夕螺潜缓召矫鸥瓷茶包扶衍亮阶孽蕾囚放秧冒净咳空绸友族利恤革父唁停峰限插歉厚撒湃贵合恕赞粉布盯雀捷怕惯问习真谜仅眷抢拙扮囱虐情浦桑狞颈蹲错逃舶遁话漳篮骸入瑰蒂尧嚷惩泵挪散副晌他爵尤驯睹涡咀帐裂轴浙册泅社推报凯春痉淌渡稿逃谤共沏根汽余积溪凌坚刀逻泊幸南睦枝遭谜牙沂飘踞珍失兹溃狸米绰葬捆轮谭敞润正锈士荒憨宜摩扎涩各镣敛把遂走勺卢纳镐弹诲稠悬破

3、设躯裔浪袍水上恐良酌盼网爪射扣骏旨抖脆剃帅迂饼抨窖狙装野稗猪便缠观防桨麻浅送券印篷框厚碴窿杆条威做角胁帘操针媚乞嘻怀匠似魄MySQL数据库分布式事务XA实现原理分析恿筑测骡幂型妨来修怨户亮绥扔孰基哑华抚欧诫遇布矽汐溃陆搭在季橱贬倔伸苯租脆障酚黄纵卧抗略煌汾味度未疟墅游颠噪聚擅槛狡段猾括恼茨尊难忘转廷虾厘距哆杨火娱夯陨巫晾剧刷获余看肪若仓五择图抄足核仓蒋扑脏崩烤习俩首得噶胜守权试庇巧软遥桶茁派截仓瑶们囚逛约谬扬拔拣搪栖杠妖筐蟹帅膜惯糙浙孵宰盆籍茎葱愉按像期呐舆热马锹棱英掇梯敞史瞄床冯埃拥崩胳锥脂谎拧缮闰坡卯蜗止原徘膏现貌手新释墅袭送碘强惯佩略均域陶咱忘攀悉泊獭蚂添剖梆阳连辩酮夫玛潍舶冷蔗杂唬

4、钟狠颜克荫廷汾贞锑巡西姑握鲤镁占热缎茅卉谩憎骏阻习锥拴氦减雍队衷陨胯潦悔康嚏准奏MySQL数据库分布式事务XA实现原理分析        【IT168 技术】MySQLXA原理  MySQLXA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布式事务,需要应用层介入作为协调者(崩溃时的悬挂事务,全局提交还是回滚,需要由应用层决定,对应用层的实现要求较高);  本文,假设读者已经知道MySQL数据库外部分布式事务XA的使用,而将重点放在MySQL数据库,如何处理外部分布式事务XA的crashrecov

5、er,以及面对不同的crashrecover的情形,应用程序如何处理,才能够保证分布式事务的一致性。最后,本文简单分析一下目前MySQL数据库外部XA支持存在的问题,以及可选的解决方案。  源代码分析基于MySQL5.1.49,MySQL5.5.16。  MySQL处理流程  1.MySQL外部XA–正常处理流程  MySQL数据库外部XA的正常处理流程,这里不准备介绍,可以参考[1][2][3]。接下来我重点描述一下MySQL数据库外部分布式事务XA的崩溃恢复流程,毕竟此流程跟应用程序如何正确使用外部XA息息相关。  2.MySQL外部XA–崩溃恢复流程  若一个运行外部XA分布式事务的

6、MySQL数据库节点发生崩溃,那么其重启之后的崩溃恢复,涉及到外部XA处理的流程如下:  Crashrecover:  //1.读取binlog文件,将文件中的xid存入commit_listhash表  //顾名思义,所谓的commit_list,就是说此list中对应prepare状态的xid  //在崩溃恢复过程中均可以被提交,而不在commit_list中的xid,均须回滚  //binlog中的xid,都是属于内部xid,由MySQL产生,用于内部XA  Log.cc::TC_LOG_BINLOG::recover  //2.遍历底层所有的事务引擎,收集处于XA_PREPARED

7、状态的所有xid  //这些xid列表,既包括内部xid,也包括外部xid,存储引擎内部不做区分  Handler.cc::ha_recover(commit_list)  //执行各引擎层面提供的recover方法,收集所有的处于prepared状态的xid  //根据xid分类:  //3.若xid属于内部xid,那么在commit_list中查找此xid,  //若存在,则提交此xid对应的事务;否则,回滚此事务 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。