- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MySQL的分布式事务的应用和缺陷.doc
基于MySQL的分布式事务的应用和缺陷
摘要:mysql从5.0.3版本就开始支持分布式事务,并且只有innodb存储引擎支持分布式事务。一个分布式事务涉及到多个事务性的活动,这些活动都必须一起完成或者一起被回滚。然而mysql的分布式事务技术还在建设中,存在一定的漏洞。本文介绍mysql在分布式事务中的应用并对其漏洞进行浅析。
关键词:分布式事务;数据库;mysql
mysql-based applications and defects of distributed affairs
men wei
(china university of miningtechnology,school of computer sciencetechnology,xuzhou 221116,china)
abstract:distributed transaction has been supported by mysql since the 5.0.3 version,and it is only be supported by innodb storage engine.a distributed transaction is referred to many transactional activities,and these activities must be finished together,otherwise,they will be rolled back together.however,the technology of distributed transaction in mysql is under construction and it has also some bug.this paper will introduce the use of distributed transaction in mysql and analyse the bugs simply.
keywords:distributed affairs;database;mysql
一、分布式事务概述
(一)分布式事务的概念和用途
分布式事务的事务参与者、资源管理器、事务管理器等位于不同的节点上,这些不同的节点相互协作共同完成一个具有逻辑完整性的事务。本文主要介绍的是mysql在分布式事务中的应用与漏洞分析。
分布式事务的主要作用在于确保事务的一致性和完整性。它利用分布式的计算环境,在tp系统的支持下,将多个事务性的活动合并成一个事务单元,这些事务性的活动要么一起执行,要么都不执行,从而保证了多个活动之间的一致性和完整性。
(二)分布式事务的相关概念
1.资源管理器(resource manager):资源管理器管理系统资源,是通向事务资源的途径。数据库就是一种资源管理器。资源管理还应该具有管理事务提交或回滚的能力。
2.事务管理器(transaction manager):事务管理器是分布式事务的核心管理者。事务管理与每个rm进行通信,协调并完成事务的处理。事务的各个分支是由某种命名方法进行标识。
二、mysql中分布式事务模型对照和执行过程分析
mysql在执行分布式事务(xa mysql)的时候,mysql服务器相当于xa事务资源管理器,与mysql链接的客户端相当于事务管理器。要执行一个分布式事务,首先知道分布式事务涉及到哪些资源管理器,并且把每一个资源管理器中的事务执行到事务可以被提交叫或者回滚。通常使用两阶段提交法:(1)第一阶段,所有的分支被预备好。它们被transaction-manager告知要准备提交。每个分支resource-manger记录分支的行动并指示任务的可行性。而这些结果被用于第二阶段。(2)第二阶段,tm告知rms是否要提交或者回滚。如果预备分支的时候各个分支都可行,那么就确认提交,如果有一个分支出错,那么就要全部回滚。特殊情况下,只有一个分支的时候,第二阶段则被省略。
三、mysql中分布式事务的漏洞分析
考虑特殊情况:当一个事务分支处在prepare状态的时候失去了链接,在服务器重启以后虽然能看到为提交的事务,但是prepare之后的操作(包括提交或者回滚)没有写入binlog。这导致事务部分丢失或者主从数据库不一致。失败的例子如下:
sessiona sessionb
从student表中查找id为2的学生,结果集为空:
mysqlselect * from student where id=2; 从student表中查找id为2的学生,结果集为空:
mysqlselect * from student where id=2;
启动事务test:mysqlxa start ‘test’,’ta’;
加
文档评论(0)