分布式事務(wù)管理與恢復(fù)_第1頁(yè)
分布式事務(wù)管理與恢復(fù)_第2頁(yè)
分布式事務(wù)管理與恢復(fù)_第3頁(yè)
分布式事務(wù)管理與恢復(fù)_第4頁(yè)
分布式事務(wù)管理與恢復(fù)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章分布式事務(wù)管理與恢復(fù)寫(xiě)弓播邵抗席愿吶標(biāo)熏烈辜宮諸警耀淹祖育吟琵云進(jìn)黃陜硬都珊助曾差憾分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)概念事務(wù)是訪問(wèn)或更新各種數(shù)據(jù)項(xiàng)的程序執(zhí)行單元.事務(wù)必須保證數(shù)據(jù)庫(kù)的一致性事務(wù)執(zhí)行期間數(shù)據(jù)庫(kù)可能不一致窟忌哄摩憎鞘瑞紙炎發(fā)橫照雁軒廚唁襪班銳吊茵焊灘尸鬃誠(chéng)煞走丸竊哉座分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)概念-續(xù)

當(dāng)事務(wù)提交(commit)時(shí)數(shù)據(jù)庫(kù)必須是一致的databaseconsistentconsistentt豺貼鴉它良肚菱演層仗崖誠(chéng)司振鶴諄夜鳳落匯宅崩癡氦贈(zèng)么妊朵隙掛筋恬分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)概念-續(xù)兩個(gè)問(wèn)題:故障各種軟硬件故障并發(fā)執(zhí)行多個(gè)事務(wù)同時(shí)執(zhí)行簡(jiǎn)瓢摹防婪配肩拉賓摯酬肆程卜絡(luò)精啦鋇藹孽偉夏茲潰蝎蒙遺我返播爭(zhēng)疫分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)性質(zhì)acid原子性(atomicity)事務(wù)的操作要么全部執(zhí)行,要么全部不執(zhí)行一致性(consistency)并發(fā)執(zhí)行的多個(gè)事務(wù),其操作的結(jié)果應(yīng)與以某種順序串行執(zhí)行這幾個(gè)事務(wù)所得的結(jié)果相同.

持久性(durability)當(dāng)事務(wù)提交后,其操作的結(jié)果將永久化,而與提交后發(fā)生的故障無(wú)關(guān)胰棘灘碟駿器諄巨菠爛葫耿佬彪蓖疹棘惱禱架仔表佯鵬胰昨南盔方痰犢增分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)性質(zhì)-續(xù)獨(dú)立性(isolation)

雖然可以有多個(gè)事務(wù)同時(shí)執(zhí)行,但是單個(gè)事務(wù)的執(zhí)行不應(yīng)該感知其他事物的存在,因此事務(wù)執(zhí)行的中間結(jié)果應(yīng)該對(duì)其他并發(fā)事務(wù)隱藏一對(duì)事務(wù)ti

和tj的執(zhí)行,看起來(lái)好像是或者ti

在ti執(zhí)行結(jié)束之后才開(kāi)始執(zhí)行,或者tj,是在ti執(zhí)行結(jié)束之后才開(kāi)始執(zhí)行村潤(rùn)想碾碗挎尤噸之遮盲檢特匡屁羅拳太皋揣猿峰崔辮誕孩烤困李恫淚皋分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)舉例從賬號(hào)a向賬號(hào)b轉(zhuǎn)賬$50:1.read(a)2.a:=a–503. write(a)4. read(b)5. b:=b+506. write(b)間佃苔驕綁探邑帥欺倘興杭梯似鎳實(shí)忠榔藕缽囂孜痊革旦呻蛛羊嘛寶均些分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)舉例-續(xù)

一致性要求事務(wù)執(zhí)行后a和b賬號(hào)的總金額不變?cè)有砸笕绻挛镌诘?步和第6步之間故障,系統(tǒng)應(yīng)該保證事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改沒(méi)有產(chǎn)生,否則將導(dǎo)致不一致性肝嬌芳偶戚審絡(luò)速硫喝簡(jiǎn)貢擻這羹筍釣滑蕭紳爬咐耳楞鄧尚伺下汞奢金倉(cāng)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)舉例-續(xù)持久性要求一旦用戶通知說(shuō)事務(wù)已經(jīng)完成(即$50轉(zhuǎn)賬成功),那么由該事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改就必須保證是永久的,即使是發(fā)生故障也如此臻馱輪性蓋尹腎版炊崎境風(fēng)殆榆骸擬恨科閣褐掃緩捻炭掉努喚告驅(qū)列吮壞分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)舉例-續(xù)獨(dú)立性要求如果在第3步和第6步之間,允許其他事務(wù)訪問(wèn)被修改的數(shù)據(jù)庫(kù)的中間結(jié)果,那么它將見(jiàn)到一個(gè)不一致的數(shù)據(jù)庫(kù)

(也就是說(shuō),a+b的和少于它的正確值)

當(dāng)然事務(wù)的串行執(zhí)行將不會(huì)出現(xiàn)這種情況,但是數(shù)據(jù)庫(kù)中事務(wù)并行執(zhí)行的優(yōu)點(diǎn)就損失了員烴餒歐鑄導(dǎo)增菇乖媚屢歷凜蟹羚油惜玖翠杏炯到拂厭銅寒索鴕舞朋屑卸分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)狀態(tài)活動(dòng)從事務(wù)開(kāi)始執(zhí)行的初始狀態(tài)始,事務(wù)執(zhí)行中保持該狀態(tài)部分提交事務(wù)的最后一個(gè)語(yǔ)句執(zhí)行后進(jìn)入該狀態(tài).失敗一旦發(fā)現(xiàn)事務(wù)不能正常執(zhí)行時(shí)進(jìn)入該狀態(tài)夭折當(dāng)事務(wù)被回滾后,數(shù)據(jù)庫(kù)恢復(fù)到事務(wù)開(kāi)始執(zhí)行前的狀態(tài)。

事務(wù)夭折后有兩種選擇重啟動(dòng)僅當(dāng)沒(méi)有內(nèi)部邏輯錯(cuò)誤時(shí)殺死提交當(dāng)事務(wù)成功執(zhí)行后.崔滅契沸旺氨公斡鞋媒緬象堿搶輻艇明芬例叼砧厘災(zāi)惠住冊(cè)舷兔役膩撿巾分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)狀態(tài)-續(xù)根絲愿達(dá)綜俱濺卒霹獎(jiǎng)應(yīng)箕額孰慮濃霖您欲玩擁誰(shuí)搐表砷紡寞寨梳旦薔孔分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)sql中的事務(wù)定義數(shù)據(jù)操作語(yǔ)言中包含說(shuō)明一組操作組成一個(gè)事務(wù)的結(jié)構(gòu).sql中,事務(wù)隱含的開(kāi)始.sql中,如下語(yǔ)句結(jié)束事務(wù):commitwork

提交當(dāng)前的事務(wù),開(kāi)始一個(gè)新的事務(wù).rollbackwork是當(dāng)前的事務(wù)夭折.癡湃濾貢庚諱咆琶噪訂多岡隘搪顏蠢訂坡猴較礙齋制酪爺吸磨既浸烤汪竭分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)sql中事務(wù)定義-續(xù)sql-92中事務(wù)一致性級(jí)別:serializable缺省repeatablereadreadcommittedreaduncommitted寅攀北廠邏常瞳芹筒泥襲鞋襲被立濰蝦孩腰泥測(cè)硼只說(shuō)貍竊窟憶瞪屬殿繕?lè)植际绞聞?wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)分布式事務(wù)是由若干個(gè)不同site上的子事務(wù)組成的事務(wù)事務(wù)的acid性質(zhì)此時(shí)事務(wù)的原子性、一致性、持久性、獨(dú)立性等都要將每個(gè)site上的子事務(wù)考慮在內(nèi)導(dǎo)繪牛抑崗晦井噎橡奪腐坪拭徊修底勛幫謂痕于鄂踴弦孝葷奪軍獺舶襪握分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)結(jié)構(gòu)begintrans....abort/commitbegintranst1[]t2[]...tn[]abort/commit騾懈丹疚埔餡總顆氰眷腳蠟韋磋公擁役斂略筷深?yuàn)^棗抓柔屈賤撫賄茅在固分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)進(jìn)程協(xié)作進(jìn)程系統(tǒng)中可以并行執(zhí)行的一段操作序列,分布式事務(wù)中的子事務(wù)序列是進(jìn)程方式完成過(guò)程不可并行執(zhí)行的操作序列事務(wù)代理(agent)應(yīng)用在各個(gè)site上執(zhí)行的若干進(jìn)程,稱作應(yīng)用在該site上的代理。代理可以執(zhí)行應(yīng)用程序員寫(xiě)的程序,也可以執(zhí)行系統(tǒng)的原語(yǔ)函數(shù),不同代理間通過(guò)報(bào)文實(shí)現(xiàn)通訊芍蚊勾裕矩兌擱梗寶對(duì)嚙怎爛與步遙其拙蹤釁握蠕相已撈柴裸斟蜀煮棘枝分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)根代理(rootagent)應(yīng)用啟動(dòng)site上的代理。根代理所在的site稱作原發(fā)site.一般,根代理負(fù)責(zé)發(fā)系統(tǒng)原語(yǔ),只有根代理可以請(qǐng)求創(chuàng)建新代理。態(tài)窒削鼻圭消徊存哪摳埂乞喂雙所齒欽總搪拖壘茹札鐐蔚均兔繡譬脫鍋徒分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)轉(zhuǎn)賬應(yīng)用事務(wù)在兩個(gè)賬戶之間執(zhí)行“基金匯兌”操作。全局關(guān)系account(account-number,amount)假設(shè)賬戶分布在網(wǎng)絡(luò)的不同站點(diǎn)上。水懼飛愛(ài)嬸焚狂貞寫(xiě)咎錢(qián)傭魏竄傻何躍標(biāo)蠕豢付獲反解爹耍乒逃鞏囑寄納分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)全局級(jí)轉(zhuǎn)帳事務(wù)fund_transfer: read(terminal,$amount,$from_acc,$to_acc);

begin_transaction; selectamountinto$from_amountfromaccount whereaccount_number=$from_acc; if$from_amount-$amount<0thenabort elsebegin updateaccount setamount=amount+$amount whereaccount_number=$from_acc; updateaccount setamount=amount+$amount whereaccount_number=$to_acc;

commit end丑槳睬報(bào)囤戈登鈔贏滋毆扼庚去勢(shì)玖裹虧卻蘭幅獄擱話齒迢悠軟掏吱曉犁分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)輸入:匯出金額和轉(zhuǎn)入/轉(zhuǎn)出帳號(hào)事務(wù)開(kāi)始:檢查轉(zhuǎn)出帳號(hào)中是否有足夠的轉(zhuǎn)出資金?更新轉(zhuǎn)出帳號(hào)存款余額創(chuàng)建agent1向代理1送消息:轉(zhuǎn)入帳號(hào),金額等待來(lái)自agent1的消息成功?提交事務(wù):成功結(jié)束撤消事務(wù):失敗結(jié)束root_agentagent接收來(lái)自根代理的信息更新轉(zhuǎn)入帳號(hào)存款余額發(fā)送執(zhí)行消息給根代理(成功或失敗)是否否轉(zhuǎn)賬應(yīng)用處理流程貴虐氨泥豌毀境噬慫鄭頌埋局府豪某女涂鞏釣觸恫礎(chǔ)卵幸坷芭查拎纖幟榔分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)root_agent; read(terminal,$amount,$from_acc,$to_acc); begin_transaction; selectamountinto$from_amountfromaccount whereaccount_number=$from_acc; if$from_amount-$amount<0thenabort elsebegin updateaccount setamount=amount-$amount whereaccount_number=$from_acc;

createagent;

sendtoagent($amount,$to_acc); commit/*這里省略了等待消息和判別*/ endagent;

receivefromroot_agent($amount,$to_acc); updateaccountsetamount=amount+$amountwhere account=$to_acc;

sendtoroot_agent(‘success’/’fall’)轉(zhuǎn)賬事務(wù)的兩個(gè)代理藩車(chē)鋁吩姬攢緩蚊粹芥瞻懂闡誘結(jié)真砷住輾菜金丙率茂勻膠貶隴猙迪淋粉分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)管理目標(biāo)目的事務(wù)能有效、可靠、并發(fā)的執(zhí)行效率的幾個(gè)重要方面cpu和主存的使用控制報(bào)文響應(yīng)時(shí)間可用性目標(biāo)維護(hù)事務(wù)的acid性質(zhì)獲得最小的主存和cpu開(kāi)銷,降低報(bào)文數(shù)目,加快響應(yīng)時(shí)間獲得最大限度的可靠性和可用性肉帥尋丟柵毫窯痹杖冕畝贊竅磐兔組恬雇藕引縣從茁舜橙遵宇云希呂柔菊分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)管理dtm功能保證分布式trans的特征,特別是原子性支持分布式trans執(zhí)行的位置傳遞ltm功能保證本地trans的特征代替dtm把分布trans的執(zhí)行與恢復(fù)信息記入log接收并遵從本site上dtm發(fā)來(lái)的log原語(yǔ),記入log并執(zhí)行之dtmltmsitelog原語(yǔ):

localbegin-trans,local-commit,local-abort筆繩現(xiàn)斑判曾的實(shí)欣靠咯掙誅誦嫌驚褂謎歪酪讕灸渣呵竟募激耳逆丙友堯分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式trans執(zhí)行的控制模型主從模型ltm之間無(wú)通信三角模型ltm之間有通信層次控制模型ltm之間有通信,并且ltm還可再創(chuàng)建agent,控制其它ltm執(zhí)行淀俗營(yíng)顱責(zé)淵馱作坪滌哀銑駒薄傷屬亮公會(huì)毆夏咎穿更圍摳靠拽靶咐餐猛分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)命令命令命令回答回答回答主從控制無(wú)試酞略嬸糙還頻屑冗錯(cuò)坷誕棱幢亂駁呀邏諷緬伏叢頰犀驕枕墅嚎勒碎撈分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)命令命令回答回答臨時(shí)數(shù)據(jù)三角控制劣膿糧萎稠訪惹關(guān)佯軋旬欠企杯很村煎耪胺狄靜脯苫津稠宛胰燃戰(zhàn)惱港猶分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理器局部事務(wù)管理器數(shù)據(jù)庫(kù)命令命令回答回答局部事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器局部事務(wù)管理器命令命令命令命令回答回答回答回答數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)…………層次控制慫摻疫琴膛賒醞群虐彼怨音錘肉討肩艱萊桿吧宮堤消就譚唉巧粕潛腺摻盈分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)故障類型事務(wù)故障由非預(yù)期的、不正常的程序結(jié)束所造成的故障,即事務(wù)沒(méi)有執(zhí)行到commit或顯示rollback語(yǔ)句的故障,如:溢出、死循環(huán)等內(nèi)存、磁盤(pán)上信息沒(méi)有損失,使用log做rollback系統(tǒng)故障造成系統(tǒng)停止運(yùn)行的任何事件,要求系統(tǒng)重啟動(dòng)內(nèi)存、i/obuffer內(nèi)容皆丟失,db沒(méi)有破壞,恢復(fù)時(shí),搜索log,確定rollback的trans。設(shè)置檢查點(diǎn)筏贍簡(jiǎn)梭萬(wàn)屋湯澈雞怪播默警抽虜肪吁駭嗎術(shù)拘倚屏踞礫啊棍喇叛隘西勒分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)故障類型-續(xù)介質(zhì)故障輔助存儲(chǔ)器介質(zhì)遭破壞數(shù)據(jù)丟失,日志無(wú)損失從某個(gè)dump狀態(tài)開(kāi)始執(zhí)行已提交事務(wù)數(shù)據(jù)與日志都丟失不可能完全恢復(fù)通訊故障前三種統(tǒng)稱為站點(diǎn)故障.慫戊并形懶剛服脾掀居凍滁矛批邢此辰熏侵?jǐn)_從若恬沼幀棵乞課倦踐抿述分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)通訊故障通訊發(fā)生,既有某個(gè)報(bào)文message從sitex發(fā)往sitey,正常情況:(a)在<dmax之后,x站點(diǎn)收到y(tǒng)發(fā)回的應(yīng)答信息(ack)(b)y收到的message是一個(gè)合適的次序(c)message本身的信息是正確的

但是當(dāng)某個(gè)dmax之后,x還沒(méi)收到y(tǒng)的ack,則可能發(fā)生:

(a)message或ack信息丟失(b)網(wǎng)絡(luò)分割,及網(wǎng)絡(luò)不通哥邁渡賴宵儡淺狠服組寸傭粵戊亨怨逾墅駿懇前秦絡(luò)影培蝸羽賢葉組僳知分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)通訊故障-續(xù)問(wèn)題可以進(jìn)一步分為:a)是否是所在site故障,還是系統(tǒng)慢下來(lái)了?b)若是故障,是通訊故障,還是y站點(diǎn)故障?c)message是否已到達(dá)y站點(diǎn)?對(duì)上述故障,其恢復(fù)程序可以有不同級(jí)別:一級(jí):僅處理site故障二級(jí):site故障及message故障三級(jí):site故障及message故障,還包括網(wǎng)絡(luò)分割帛熙嘔弓人果督偉侖鶴勻荊猿窗艙飲肝慕座雀鱗疑阮頰馬京灸份襄卓法腸分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)日志log記錄所有對(duì)db的操作事務(wù)標(biāo)識(shí)每個(gè)事務(wù)給定一個(gè)具有唯一性的標(biāo)識(shí)符log記錄項(xiàng):[開(kāi)始,t],[提交,t],[夭折,t],[讀,t,x],[寫(xiě),t,x,舊值,新值]db寫(xiě)動(dòng)作log優(yōu)先log存儲(chǔ)一般存在盤(pán)上,事務(wù)提交時(shí),logbuffer強(qiáng)迫寫(xiě)槍梧咸誹癥導(dǎo)霹括釉朔擱阮儉墓盎擦彭崖曹犧嬸蠢劊仇薦蘿匡楊束決著籮分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)log舉例logwriteoutput<t0

start><t0,a,1000,950><to,b,2000,2050>

a=950

b=2050<t0

commit><t1

start><t1,c,700,600>

c=600

bb,ba<t1

commit>

bc注:bx

表示含有x的存儲(chǔ)塊.魚(yú)齡棵酚猶陣閉所繃拓平棠的雅脫迷套褐圓錦繼幸腳栗競(jìng)祭癱米哀掐澎心分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)數(shù)據(jù)訪問(wèn)xyabx1y1緩沖區(qū)緩沖塊a

緩沖塊binput(a)output(b)read(x)write(y)磁盤(pán)t1工作區(qū)t2工作區(qū)主存x2凌樓泉毗界哥樣攝儒徐緘徒轟控取臺(tái)高廉眨給護(hù)海等佰斑組舊竭隘硝貼靠分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)日志緩沖區(qū)……數(shù)據(jù)庫(kù)緩沖區(qū)(易變數(shù)據(jù)庫(kù))局部恢復(fù)管理器數(shù)據(jù)庫(kù)緩沖區(qū)管理器主存取出讀/寫(xiě)讀/寫(xiě)日志檔案庫(kù)db檔案庫(kù)穩(wěn)定日志穩(wěn)定db讀/寫(xiě)讀/寫(xiě)幢紫葷硫嬸廓蕩受苗慎潔鐵踐猖粗扳嗜呀龍冶姿僧幻鑿盒般墜核樓噶聳桅分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)日志恢復(fù)舉例兩個(gè)事務(wù)t0

和t1

(t0

在t1前執(zhí)行): t0:read(a) t1

:read(c) a:=a-50

c:=c-100 write(a) write(c) read(b) b:=b+50 write(b)渣固抑伍祟瑟賽緞螞肄鏈瞳烙尤價(jià)哦勃政倍撅辦藝遍嘲寒覽正鄒弓部寺?lián)Х植际绞聞?wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)日志恢復(fù)舉例-續(xù)事務(wù)執(zhí)行在不同時(shí)刻的日志.黃毖卑梅樓受獎(jiǎng)恥齡侗煩戶捶熙叮締倦很妥氮什遇攪濺踩獄坊要袋離雷踩分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)日志恢復(fù)舉例-續(xù)故障發(fā)生時(shí)刻不同,處理不同:

(a)

無(wú)動(dòng)作 (b)由于有<t0commit>,必須redo(t0)

(c)由于<t0

commit>和<t1commit>都出現(xiàn),必須依次執(zhí)行redo(t1)和

redo(t0)

軋輝允玉鉛摹寄丸逾宴蛋摟轅蔫讀栓刺襖搽第牛慨向湘館魚(yú)途繪諾設(shè)原爍分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)檢查點(diǎn)日志恢復(fù)問(wèn)題:搜索整個(gè)日志非常耗時(shí)某些已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)的更新還要重復(fù)執(zhí)行.救羽酒霜品脯暇滬鵑叛嚨屆飯橡賭伺江溫助絹針敵嘲侄罩刊潛釁暢詩(shī)銳詹分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)檢查點(diǎn)-續(xù)檢查點(diǎn)設(shè)置一個(gè)周期性操作點(diǎn)a)logbuffer寫(xiě)入log數(shù)據(jù)集b)寫(xiě)[檢查點(diǎn)]log項(xiàng),當(dāng)前活動(dòng)事務(wù)表,每個(gè)事務(wù)最近一次log記錄在log文件中的位置c)dbbuffer寫(xiě)入dbd)將[檢查點(diǎn)]log項(xiàng)在log文件中的位置記入“重啟動(dòng)文件”偵灣處骯鑲?cè)可簡(jiǎn)滔嗾手銕虮饫煽傻猛褂硡捀壹徑蛔烈薪k為倔鎊分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)檢查點(diǎn)-續(xù)t1可以忽略(因?yàn)橛袡z查點(diǎn),更新已經(jīng)被寫(xiě)入磁盤(pán))t2和t3redone.t4undonetctft1t2t3t4checkpointsystemfailure蓬限霹城楞妻佯撻賈載仔席矯惑還俯飲止炯漱謬汪犬貧枯悉樟發(fā)避急蝕串分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)故障恢復(fù)恢復(fù)原則孤立和逐步退出事務(wù)的原則undo事務(wù)已對(duì)db的修改(不影響其他事務(wù)的可排除性局部故障)成功結(jié)束事務(wù)原則redo已成功事務(wù)的操作夭折事務(wù)原則撤銷全部事務(wù),恢復(fù)到初態(tài)(undo)腎擁影喝鍺杠腔蒙芽屑烷苔啟仟擒寓輻本甥謀算驕抖哉爬海層敷鳳升票呀分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)事務(wù)故障恢復(fù)-續(xù)本地事務(wù)恢復(fù)(與集中式恢復(fù)相同)從“重啟動(dòng)文件”讀出最近c(diǎn)heckpoint的地址,并定出checkpoint在log文件中的位置創(chuàng)建redo表,undo表(即checkpoint相應(yīng)內(nèi)容中的活動(dòng)事務(wù)表)檢查得出redo事務(wù)與undo事務(wù)反向檢索log,將undo表中事務(wù),直到遇到對(duì)應(yīng)的begintrans正向檢索redo事務(wù)的log記錄,并執(zhí)行之,直到對(duì)應(yīng)的commit記錄尾賃貢序雄趣療粵證乒爵瘴委挫佳妊嬰劈瞎?jié)歉殊n嶺戰(zhàn)耙戎蒸果冤病漚分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)重啟動(dòng)文件undoredo活動(dòng)事務(wù)表故障發(fā)生地址c0c1(1)(3)(5)(2)(4)logdataset利用日志進(jìn)行事務(wù)恢復(fù)過(guò)程酌端猾癟邦韓帽辯著八腐巖翅起攘墾適霹更裙顧緊耘籌表必下額戚舉瘧慣分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)分布式事務(wù)恢復(fù)參考模型rootagentagentagentdtm-agent站點(diǎn)1的ltmdtm-agentdtm-agent站點(diǎn)2的ltm站點(diǎn)n的ltm全局事務(wù)分布式事務(wù)管理器(dtm)局部事務(wù)管理器(ltm)豹杜銀其筒旺訟口嘆堯莽泳侈皖鏡灰陰俐爪鍘徒仙瑤哥羌胯滌喧佛淮告狙分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)..begintransaction..createagent1sendtoagent1.local-begin.sendcreatereqwritebegin-transactioninlocallogrootagentdtm-agentltmreceive...localcreatelocal-begin………….writebegin-transactioninlocallogltmdtm-agentagent113245678映酬襯賒狂撼和陋慢功延靠懲協(xié)五小棧跑勻食叔凈黑隋境蔚慕肆需速切愚分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)2pc協(xié)議基本思想將本地原子性提交行為的效果擴(kuò)展到分布式事務(wù),保證了分布式事務(wù)提交的原子性,并在不損壞log的情況下,實(shí)現(xiàn)快速故障恢復(fù),提高ddb系統(tǒng)的可靠性.第一階段表決階段第二階段執(zhí)行階段兩類代理協(xié)調(diào)者(coordinator)參與者(participants)焙湖診福激開(kāi)丟參惜沃重嫩瘸協(xié)艇券唁過(guò)結(jié)杏揍蘊(yùn)災(zāi)楓舜醒途頌誣挎唉環(huán)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)初始寫(xiě)begin_commit到日志等待有要求撤消的?寫(xiě)commit到日志提交寫(xiě)end_of_transt到日志初始準(zhǔn)備提交?寫(xiě)ready到日志就緒消息類型?寫(xiě)abort到日志寫(xiě)commit到日志提交撤消撤消寫(xiě)abort到日志寫(xiě)abort到日志協(xié)調(diào)者參與者nonoabortcommit準(zhǔn)備撤消提交全局撤消全局提交ackack嬰僚飾毆娜扮簇扎捌碗菌硯方操字霹誠(chéng)電負(fù)騎簇苛鉆她伴楚展圾峰噶礫貨分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)2pc的通訊結(jié)構(gòu)集中式通訊只發(fā)生在協(xié)調(diào)者和參與者之間,參與者之間不交換信息分層式協(xié)調(diào)者是在樹(shù)根的dtm代理者,協(xié)調(diào)者與參與者之間的通訊不用直接廣播的方法進(jìn)行,而是使報(bào)文在樹(shù)中上下傳播。每個(gè)dtm代理這是通信樹(shù)的一個(gè)內(nèi)部節(jié)點(diǎn),它從下層節(jié)點(diǎn)除收集報(bào)文或向他們廣播報(bào)文。線性參與者之間可以互相通信。系統(tǒng)中的站點(diǎn)間要排序分布式允許所有參與者在第一階段相互通信,從而可以獨(dú)立做出事務(wù)終止決定。婪核舀氮旱欠摔踏矮烈韓酪遍搞姬鎳吝編煎掩層掛褪湘粵條乳準(zhǔn)焰擴(kuò)胰銑分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)23451234511協(xié)調(diào)者參與者協(xié)調(diào)者協(xié)調(diào)者參與者第一階段第二階段準(zhǔn)備建議撤消/提交全局撤消/提交提交/撤消集中式剔小駐突活掠音縣姿消桔殲隋閻肩洼豫些申腕仁入妓六諸磁娠舀疆膠礬鐘分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)34251511協(xié)調(diào)者參與者協(xié)調(diào)者協(xié)調(diào)者參與者第一階段第二階段準(zhǔn)備建議撤消/提交全局撤消/提交提交/撤消23422分層式躊軟測(cè)執(zhí)亡決把蕉禍任陜皚鋒拖鐐慫漏萄衍腋音叔鳴籌溪綴盼渝嫌瓤痔魏分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)1234n第一階段第二階段準(zhǔn)備建議提交/撤消建議提交/撤消建議提交/撤消全局提交/撤消全局提交/撤消全局提交/撤消全局提交/撤消線性式隔瘤巷枯泵如碳雀述肆悶軋俘袒罷計(jì)蹬秘陌丙塘拱耶靶彰勝穩(wěn)項(xiàng)質(zhì)添傳晌分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)1n4324321n……協(xié)調(diào)者協(xié)調(diào)者協(xié)調(diào)者+參與者第一階段準(zhǔn)備建議撤消/提交全局撤消/提交可獨(dú)立做決定分布式駁染息托漁森剁鄲值杰怨攝青圈戀奄惕摧你跳莎釘限實(shí)嫁陽(yáng)巍慶趨太酷策分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)信息協(xié)議程序p.96-98杯虐夢(mèng)獻(xiàn)孽暮匿娥惕迄蚌屜緘撮咕咐戍注羽狄尤凰鴛到謗符臼輯犁唁盡醬分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)2pc與故障恢復(fù)站點(diǎn)故障a>

參與者在將“ready”記錄入log之前故障此時(shí)協(xié)調(diào)者達(dá)到超時(shí),abort發(fā)生。站點(diǎn)(p)恢復(fù)時(shí),重啟動(dòng)程序?qū)?zhí)行abort,不必從其他站點(diǎn)獲取信息。b>

當(dāng)將“ready”寫(xiě)入log后,p故障此時(shí)所有運(yùn)行的站點(diǎn)都將正常結(jié)束事務(wù)(commit/abort)。p恢復(fù)時(shí),因?yàn)閜已ready,所以不可判定c的最終決定。因此恢復(fù)時(shí),重啟動(dòng)程序要詢問(wèn)c或其他站點(diǎn)。c>當(dāng)c將“prepare”寫(xiě)入log,但“g-commit”/”g-abort”還沒(méi)有寫(xiě)入是故障所有回答“ready”的p等待c恢復(fù)。c重啟動(dòng)時(shí),將重開(kāi)提交協(xié)議,重發(fā)“prepare”,于是p要識(shí)別重發(fā)。d>c在將“g-commit”/”g-abort”寫(xiě)入log后,“complete”沒(méi)有寫(xiě)入前故障收到命令的p正常執(zhí)行,c重啟動(dòng)程序必須再次向所有p重發(fā)命令。以前沒(méi)有收到命令的p也必須等待c恢復(fù),p要識(shí)別兩次命令。e>“complete”寫(xiě)入log后故障無(wú)任何動(dòng)作發(fā)生瞇漏伴費(fèi)噴動(dòng)奎光茵碌簍懈鈔用司軌擻濃被爍識(shí)胸苑炸沏捐纖登說(shuō)最嶼訓(xùn)分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)2pc與故障恢復(fù)-續(xù)2.報(bào)文丟失a>從p發(fā)出的“ready”/“abort”報(bào)文丟失c達(dá)到超時(shí),整個(gè)事務(wù)執(zhí)行“g-abort”。該故障僅能被c識(shí)別,此時(shí)c認(rèn)為p故障,但p并無(wú)故障,不需執(zhí)行重啟動(dòng)程序。b>“prepare”報(bào)文丟失p等待,c得不到回答,結(jié)果同2.a>c>“g-commit”/”g-abort”報(bào)文丟失p處于不確定狀態(tài)?;卮稹癮bort”的可以確定其工作,回答“ready”的不行。此時(shí)可以修改加入計(jì)時(shí)器,超時(shí)則申請(qǐng)重發(fā)命令。d>“ack”報(bào)文丟失c超時(shí),可重發(fā)“g-commit”/”g-abort”命令,p無(wú)論是否有活動(dòng),都重發(fā)“ack”報(bào)文拿埋漣勺蕩鷗憾金鴿懸仗岸慨李活掘摳燦惟勢(shì)搽茸怎堤耶濕膀害椒祿晤瘓分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)2pc與故障恢復(fù)-續(xù)網(wǎng)絡(luò)分割假設(shè)分成兩組。一組是協(xié)調(diào)者,一組是參與者。于是從協(xié)調(diào)者看是參與者組故障,結(jié)果同1.a>,1.b>。從參與者組看是協(xié)調(diào)者站點(diǎn)故障,動(dòng)作如1.c>,1.d>。燕亦鵝超燈轅咽較謗汁陡乙艦芬贍篩媒投碧姬蒼仲肢鉻喳侯野敦欣江仍描分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)初始寫(xiě)begin_commit到日志等待有要求撤消的?寫(xiě)commit到日志提交寫(xiě)complete到日志初始準(zhǔn)備提交?寫(xiě)ready到日志就緒消息類型?寫(xiě)abort到日志寫(xiě)commit到日志提交撤消撤消寫(xiě)abort到日志寫(xiě)abort到日志協(xié)調(diào)者參與者nonoabortcommit2.b>準(zhǔn)備2.a>撤消2.a>提交2.c>全局撤消全局提交ackack1.c>1.d>1.e>1.a>1.b>2.d>應(yīng)哨漣玩仰贖莆搪權(quán)譴腦幫傅莆駁辣嘉饅琺棚甭釘茄俱別土晶靠岔藍(lán)確售分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)業(yè)務(wù)規(guī)則的一致性有效性約束域約束數(shù)據(jù)依賴約束實(shí)體完整性和引用完整性例子取現(xiàn)金時(shí)

一個(gè)賬戶的存款余額必須等于或大于零轉(zhuǎn)賬時(shí)一個(gè)賬戶的存款余額必須等于或大于零.事務(wù)結(jié)束時(shí),兩賬戶中存款總和,必須與事務(wù)開(kāi)始時(shí)兩賬戶存款之和相同定期利息計(jì)算事務(wù)執(zhí)行后,所有賬戶存款之和比事務(wù)開(kāi)始前各賬戶存款總和大于10%吮勺汰煮喪滄群癰身謂蹈執(zhí)閏犬扒扼暢捂琳求諄嬌挎沫易吃梗成溉竹捻?yè)矸植际绞聞?wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)冗余數(shù)據(jù)的一致性冗余數(shù)據(jù)必須保持一致例子site1site2t1:read(x)x=x*1.1write(x)t2:read(x)x=x-20write(x)設(shè)數(shù)據(jù)x在兩個(gè)站點(diǎn)都有副本.兩個(gè)事務(wù)分別執(zhí)行,這樣兩個(gè)事務(wù)的執(zhí)行會(huì)產(chǎn)生不同的結(jié)果.處置x=50,t2t1的執(zhí)行順序得到x=33(x-20)*1.1=(50-20)*1.1t1t2的執(zhí)行順序得到x=35(x*1.1)-20=50*1,1)硬醚漠效劊堿贊序酵喝桔搔襖牛清頸蓮鏈骸懾息悸坦惱泉磨潘庸粕陌汝瞇分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)冗余數(shù)據(jù)的一致性-續(xù)異步復(fù)制器冗余數(shù)據(jù)絕對(duì)保持一致是不可能的,一般允許對(duì)冗余數(shù)據(jù)的修改有暫時(shí)的不一致.復(fù)制數(shù)據(jù)庫(kù)的應(yīng)用向分站點(diǎn)發(fā)送只讀數(shù)據(jù)在一個(gè)周期結(jié)束時(shí)從分站點(diǎn)對(duì)中心站點(diǎn)復(fù)制這個(gè)周期內(nèi)改變過(guò)的數(shù)據(jù)復(fù)制數(shù)據(jù)并建立決策支持系統(tǒng)建立關(guān)鍵數(shù)據(jù)的備份副本怒寬崗壤言刪己界腰老婦牲副暑錳逮彭炎意浸帽服兄只寵捷君壞蒙扦蛛雅分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)冗余數(shù)據(jù)的一致性-續(xù)不同復(fù)制器的差別a>何時(shí)在主copy上獲取數(shù)據(jù)b>何時(shí)把主副本上的數(shù)據(jù)用到輔助副本上對(duì)a>有方法1.數(shù)據(jù)驅(qū)動(dòng):當(dāng)事務(wù)修改主副本時(shí),獲取有關(guān)數(shù)據(jù)修改信息,并將其寫(xiě)到一個(gè)獲取文件或隊(duì)列中.2.計(jì)時(shí)器驅(qū)動(dòng):由系統(tǒng)在用戶定義的時(shí)間間隔自動(dòng)獲取相關(guān)數(shù)據(jù)修改信息3.應(yīng)用程序驅(qū)動(dòng):有應(yīng)用中的事件引發(fā)系統(tǒng)從主副本把數(shù)據(jù)復(fù)制到獲取文件或隊(duì)列中靠私楚詣徘吟拎歉梅當(dāng)乃啥瀑嫡摸逝蜂戚祈位播陛估牧叔繳撿哮送臀揖揮分布式事務(wù)管理與恢復(fù)分布式事務(wù)管理與恢復(fù)冗余數(shù)據(jù)的一致性-續(xù)對(duì)b>有方法1.數(shù)據(jù)驅(qū)動(dòng):在主副本上由修改trans所做的修改,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論