MGR中事务的执行过程是怎样的-创新互联
本篇文章为大家展示了MGR中事务的执行过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
为阳江等地区用户提供了全套网页设计制作服务,及阳江网站建设行业解决方案。主营业务为网站设计、成都网站制作、阳江网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!MGR中group_replication插件最重要的功能就是事务分发器的功能,这里其分发的是Binlog Event,事务分发器的处理是在事务执行即将结束的时候。MGR将这称作乐观的事务执行策略,可以带来更好的性能。但这种策略下,多个成员上的事务可能发生冲突。MGR需要一个冲突检测机制来发现并处理冲突。根据事务处理过程中的不同处理步骤,MGR中事务分发器的功能划分为以下四个部分。
·本地事务控制模块
·成员间的通信模块
·全局事务认证模块
·异地事务执行模块
先来看下本地事务控制模块,MySQL通过API向插件提供了事务执行过程中几个重要阶段的Hook接口,MGR通过这些接口来监控和控制事务的执行。MySQL的事务在提交时,内部会分成三个阶段:准备(prepare)阶段,记录binlog文件阶段和提交(commit)阶段。MGR对本地事务的控制逻辑在before_commit这个接口中执行。before_commit是在事务的prepare阶段之后,写binlog文件阶段之前被执行的。对本地事务的控制包括以下三个步骤。
1.发送事务信息
MGR首先将事务执行相关的信息打包,通过通信模块的接口发送给本地的通信模块,只要本地的通信模块接收到了消息就返回成功(发送到其它成员是成员间通信模块的职责)。事务信息包括主键信息、数据库快照版本和事务产生的Binlog Event。
·主键信息是Server层生成Binlog Event的时候一同生成的。主键信息中记录的并不是主键字段的值,而是字段值加上库名、表名等哈希值。
·数据库快照版本是当前MySQL的全局变量gtid_executed的值。它包含了当前事务提交时所有已经执行了的事务的GTID,代表了当前事务执行时数据库的状态。
·当发送事务信息时,Binlog Event还没写入Binlog文件。因此,Binlog Event是从当前线程的Binlog Cache中获取的,而不依赖Binlog文件。
·Transaction_context_log_event,本地成员的UUID、主键信息和数据库快照版本会被封装进Transaction_context_log_event中,和事务产生的Binlog Event一起发出去。Transaction_context_log_event放在其它Binlog Event的前面。
2.等待全局事务认证模块的认证结果
在事务信息发送成功后,事务会被阻塞,开始等待全局事务认证模块的认证结果。事务认证完成后,全局事务认证模块会唤醒当前事务的线程,让事务继续执行。
3.认证结果的处理
事务继续执行后,会检测认证结果。如果认证成功了,就继续提交事务。如果认证失败了,就会返回错误。然后由MySQL来执行Rollback的逻辑。
上述内容就是MGR中事务的执行过程是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:MGR中事务的执行过程是怎样的-创新互联
链接分享:http://ybzwz.com/article/copcgp.html