mysql事务的通信机制_关于2PC协议对分布式数据库的事务恢复机制

摘要:分布式数据库系统的故障模型有自身的特点,事务提交协议的合适选择可以有效地对各种故障进行恢复。探讨了2PC协议对分布式数据库的事务恢复机制。

关键词:分布式数据库;2PC协议;事务恢复

中图分类号:TP391文献标识码:A文章编号:16727800(2012)009011002

0引言

分布式数据库广泛应用于电子商务、电子信息服务和智能电信系统等领域,而事务提交协议在分布式数据库的应用中存在诸多问题。事务提交协议在提交分布式事务时,在不同阶段及不同的参与结点之间交换各种信息,同时也会产生一些日志记录,其中有些必须写回磁盘,这对于分布式数据库的应用有很大影响。因此,在设计一个分布式数据库系统时提交协议的选择成为最重要的决定之一。

1数据库系统故障模型

1.1集中式数据库系统的故障模型

集中式数据库系统可能发生的故障有3种:一是不丢失信息的故障,由于命令无法执行引起事务中止,不会对存储介质上的数据产生不正确操作,容易恢复,只需重启事务即可;二是丢失主存信息的故障,此类故障辅存上的数据库处于正确状态,而主存中的数据库部分或全部数据丢失或出错,处于一种不正确状态,可利用恢复机制对其进行恢复;三是丢失辅存中信息的故障,其辅存中数据丢失,主存中数据不一致,只能重建数据库,使故障按常规方法无法恢复。

1.2分布式数据库系统的通讯故障模型

分布式数据库系统除上述可能发生的故障外还主要发生系统中场地间的通讯故障,包括报文丢失和网络分割。报文丢失即传送过程中丢失报文导致数据不正确,这种报文丢失造成系统的等待状态可以通过设置有限的传送报文数目和要求传送过程在有限的时间内完成来解决。网络分割是指通讯网络中一部分场地和另一部分场地之间完全失去联系,两个分别在分离后的网络的两个(或若干个)部分中的场地间不可以直接进行通讯,也不能经过第三方场地进行通讯。当出现网络分割时,系统处理要复杂一些,但出现网络分割的情况是非常少的。故障恢复的处理难度从小到大排列分为3类:第一类恢复处理只处理局部场地的故障,假设通讯网络是永远正确的,这主要基于集中式数据库系统的恢复策略,当出现通讯故障后则束手无策;第二类处理报文丢失和场地故障;第三类可处理除第二类故障外的网络分割故障。

2分布式数据库中的事务提交协议

2.1事务提交协议概述

在分布式数据库系统中,全局事务可以分解为分布在不同结点上的若干子事务。系统要保证全局事务和子事务的原子性就需要在结点间进行协调,因此产生了二步提交协议(twophase commit,2PC)和三步提交协议(threephase commit,3PC)。当一个事务分布在多个结点上执行时,要么都返回,要么都提交,各结点须保持一致。为了保持多结点协调一致,可以指定其中一个结点的事务管理器(以下简称结点)为协调者(coordinator/Master),其它结点的事务管理器为参与者(participant/Cohort)。

2.22PC协议

2PC协议是在事务处理、数据库以及计算机网络中使用的一种原子提交协议(atomic commitment)。它是一个分布式算法,协调在整个分布式原子事务中参与者的行为(commit或者roll back)。这个协议在一些系统错误发生时仍然能够成功,但并不能保证对所有错误都能进行容错。为了能做错误恢复,协议的所有参与者都需要使用日志对协议状态进行记录。它是一种用于故障恢复的方法,在系统运行日志无丢失的情况下,2PC协议对任何故障均有一定的恢复能力。2PC协议的基本思想是为全部的参与者做出提交或中止全部局部子事务的唯一决定。协议第一阶段是事务协调器联络事务中涉及的每个资源管理器,并通知它们准备提交事务。为了以肯定的方式响应准备阶段,资源管理器必须确保能在被要求提交事务时提交事务,或在被要求回滚事务时回滚事务。大多数资源管理器会将包含其计划更改的日记文件(或等效文件)写入持久存储区中。如果资源管理器无法准备事务,它会以一个否定响应来回应事务协调器。协议第二阶段是事务协调器收集来自资源管理器的所有响应。事务协调器将事务的结果通知给每个资源管理器,如果任一资源管理器做出否定响应,则事务协调器会将一个回滚命令发送给事务中涉及的所有资源管理器。如果资源管理器都做出肯定响应,则事务协调器会指示所有的资源管理器提交事务,一旦通知资源管理器提交,此后的事务就不能失败。通过以肯定的方式响应第一阶段,每个资源管理器均已确保,如果以后通知它提交事务,则事务不会失败。在结束本事务时,协调者与参与者以如图1所示的通信过程相互应答。

2.33PC协议

在2PC协议中,可能出现阻塞状态。所谓阻塞是指当参与者等待协调者的应答时,如果协调者出现故障,则参与者就必须阻塞。在2PC协议中,参与者的提交是在它知道了其它所有的参与者均发生了“准备提交”的报文后进行的。若在2PC中增加一阶段使得参与者的提交不仅要等到它知道所有的参与者均发出了“准备提交”的报文,而且还知道所有参与者的状态(如故障状态或已经恢复)以后才执行,这时2PC变成3PC协议。在3PC协议中,报文有3次接收和发送,协调者第二次向参与者发出的报文不是“提交报文”,而是提交前的预备报文,告诉所有的参与者均可以自己做出决定或夭折或提交,而不必因等待协调者恶意问答而进入阻塞状态,因为即使此时发生故障,系统的恢复机制迟早也要恢复到故障前的一刻,即各参与者的子事务都要提交。因此,参与者可以自行决定先执行下去而不是处于等待状态,从而减少了阻塞。3PC协议在二阶段协议的基础上发展而来,主要的思想是将事务的提交过程延长,增加了发起者结点的预提交状态和参与者结点的准备提交状态(PREPARECOM2MIT) ,因而在发生故障时参与者可以有更多的选择余地,其通讯过程如图2所示。三阶段提交协议(3PC)用3个阶段完成事务提交过程,分别为参与者投票表决阶段、预提交阶段、协调者决策阶段。在3PC协议的第三阶段中,当协调者收到全部的“准备就绪”的回答时才向所有的参与者发“提交”报文,此时所有的参与者均知道其它的参与者已经进入“准备提交”状态。达到这一点,每个参与者均可以自己决定是夭折还是提交,而不必因等待协调者的回答而进入阻塞状态。虽然3PC协议可以避免阻塞,但实现比较复杂,通信次数也比较多,不适合于实时系统。

3分布式数据库中对故障的处理

3.12PC协议的改进

2PC协议中协调者与参与者之间要交换信息,还要写各种日志消息,如果减少这两方面的时间消耗,就可以改进其性能。因而可以从以下几个方面加以改进:一是单方面的中止能力。2PC协议允许参与者在给出“赞成提交”回答前中止它的子事务,这种场地的自治特性对局部管理系统来说是很重要的,一旦参与者做出“准备就绪”回答,局部管理系统就无法控制参与者了;二是预提交报文的消除。在基本2PC协议中,其第一阶段可以结合到事务的执行中,当参与者完成了操作以后,可以直接发送“准备提交”报文而不必等协调者发送“预提交”命令后才发送。当协调者完成其相应的操作以后,也就知道其它参与者已“准备提交”,这时可以做出决定,而不必先发“预提交”命令等待其它参与者的回答(称为一段提交协议,1PC)。这样消除了“预提交”命令的发送,并将第一阶段结合到事务的执行中,提高了运行效率。然而,它使参与者失去单方面中止自己子事务的能力,且在发出“准备提交”命令后等待协调者的回答,当协调者故障时会出现阻塞。因此,这种方法增加了阻塞的可能性且降低了局部自治能力;三是使用缺省提高效率。如果在日志中找不到该事务的任何信息,就认为缺省为“提交”或“中止”,这些协议称为“假定提交”(PC)和“假定终止”(PA)协议。

3.22PC协议对各种故障的恢复

当分布式数据库系统发生故障时,要恢复丢失的数据,只要在事务提交时严格遵守分布式事务提交协议,就可以对各种故障进行恢复。如果采用2PC协议,则对各类故障的恢复大体如下:其一,丢失报文。 丢失报文的故障之一是丢失“预提交”报文,此种情形下参与者因为收不到“预提交”命令而处于等待状态,协调者还需要等待参与者的回答,所以协调者往往会因为超时等待而夭折事务;二是来自参与者的回答报文至少丢失了一个,这种情况下协调者将因等待回答而超时,整个事务因此被夭折;三是丢失“提交”或“夭折”报文,这种情况下参与者处于等待协调者命令的状态下,当未收到命令时会因等待而超时,这时只有向协调者发请求重发该命令的信息;四是丢失了“执行”报文,当协调者未收到全部的“执行”报文时,协调者会因等待而超时,这时协调者重发命令报文给参与者,参与者必须给予“执行”报文回答,即使此时相应的子事务

参考文献:

[1]张剑,王炎修,刘倩.关于分布式数据库事务处理机制的探讨[J].山东科技大学学报:自然科学版,2003(2).

[2]于红,高艳萍,郭连喜.改进的两阶段提交协议[J].大连水产学院学报,2005(4).

[3]吴江,李太勇,吴晓知.分布式数据库系统中的安全策略研究[J].网络安全技术与应用,2006(4).

[4]张传宏,苗苗.基于分布式数据库系统的故障恢复技术研究[J].农业网络信息,2007(9).

[5]李素萍.分布式数据库的同步更新技术研究[J].中国科技信息,2008(16).

[6]朱连章,李青.基于CPN的两阶段提交协议建模[J].计算机应用与软件,2009(6).

[7]赖玲.分布式数据库系统研究[J].软件导刊,2009(9).

[8]张欣,张玲.分布式数据库系统中数据一致性维护方法研究[J].科技风,2010(18).

[9]汪维.分布式数据库系统探究[J].河南农业,2010(18).

[10]许海洋,李登道.分布式事务两阶段提交协议的实现方法研究[J].信息技术与信息化,2011(2).

[11]岳立营.浅谈分布式数据库的数据存储[J].科技创新导报,2011(6).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值