Quả ản n lý lý khôi khôi ph phụ ục c Recovery Recovery Manager Là một bộ phận của hệ quản trị cơ sở dữ liệu, chịu trách nhiệm ◦ Bảo ñảm 2 tính chất nguyên tố và bền vững của giao tác ◦
Trang 1Khôi ph phụ ục c sau sau ssự ự c cố ố
Trang 2Mụ ục c llụ ục c
Mục tiêu
Phân loại sự cố
Khôi phục sau sự cố trên giao tác
Khôi phục sau sự cố trên hệ thống
Khôi phục sau sự cố trên hệ thống
Khôi phục sau sự cố trên thiết bị lưutrữ
Trang 4Quả ản n lý lý khôi khôi ph phụ ục c ((Recovery Recovery Manager)
Là một bộ phận của hệ quản trị cơ
sở dữ liệu, chịu trách nhiệm
◦ Bảo ñảm 2 tính chất nguyên tố và bền vững của giao tác
◦ Bảo ñảm tính nguyên tố, nghĩa là phải
giao tác chưa commit
◦ Bảo ñảm tính bền vững, nghĩa là phải bảo ñảm các thay ñổi của các giao tác ñã commit phải ñược ghi nhận
Trang 5Phân lo loạ ạii các các ssự ự c cố ố
Sự cố trên giao tác (Transaction
Failure) : là các sự cố làm cho một
giao tác kết thúc không bình thường
Sự cố hệ thống (System Failure) : là
các sự cố làm mất hoặc không thể truy xuất dữ liệu ở bộ nhớ trong
Sự cố trên thiết bị lưu trữ (Media
Failure) : là các sự số làm mất hoặc
không thể truy xuất ñược dữ liệu trên thiết bị lưu trữ ngoài
Trang 6Xử ử lý lý ssự ự c cố ố trên trên thi thiế ếtt b bịị llư ưu u tr
trữ ữ
Trang 8Xử ử lý lý ssự ự c cố ố giao giao tác tác
Trang 9Unlock(A)
Lock(C) C:=C+10 Write(C) Unlock(C)
Lock(C) Read (C) C:=C*2 Write(C) Unlock(C) Commit Lock(A)
Read(A) B:=B/A
Trang 10Nhậ ận n xét xét thí thí d dụ ụ ñã ñã nêu nêu
Khi sự cố xãy ra, ta thấy
1 T2 ñang giữ Lock(B) => ai chịu trách
nhiệm giải phóng B ?
2 T2 ñã làm thay ñổi ñơn vị dữ liệu C =>
phải trả lại giá trị C ban ñầu ?
3 T3 ñọc dữ liệu C ñã ñược ghi bởi T2
và ñã commit trước khi sự cố xãy ra
=> phải xử lý thế nào với T 3
4 T1 chưa commit khi sự cố xãy ra =>
làm gì ñối với các hành ñộng của T1 trước sự cố ?
Trang 11Xử ử lý lý ssự ự c cố ố h hệ ệ th thố ống ng
Trang 12Nhắ ắc c llạ ạii v về ề c cơ ơ ch chế ế ñ ñọ ọc c//ghi ghi ñĩa ñĩa
Dữ liệu sẽ ñược ñọc từ CSDL vào
Trang 13A Input(A)
Main memory
B
Disk B Output(B)
Trang 15Nguyên lý lý căn căn b bả ản n
Cơ chế ñiều khiển cập nhật (Khi nào ghi ?)
◦ Force : cập nhật mỗi khi có giao tác commit => bảo ñảm tính bền vững của giao tác
◦ No Force : cập nhật theo chu kỳ thời gian => có thể không bảo ñảm tính bền vững
Trang 16Nguyên lý lý căn căn b bả ản n (tt.) (tt.)
Cơ chế quản lý cập nhật (Ghi cái
gì ?)
◦ Steal : Ghi tất cả các trang có thay ñổi (không quan tâm ñến giao tác ñã
làm thay ñổi ñã commit hay chưa =>
có thể không bảo ñảm tính nhất quán)
◦ No Steal : Chỉ ghi các trang bị do các thao tác ñã commit làm thay ñổi => bảo ñảm tính nhất quán
Trang 17TTươ ương ng quan quan gi giữ ữa a Force Force Steal Steal
No-Steal No thing Redo
Trang 18Cách ti tiế ếp p c cậ ận n steal steal, no , no force force
Steal : những hành ñộng Write củacác giao tác chưa commit có thểñược ghi xuống ñĩa => No-steal
ngược lại
Force : dữ liệu sẽ ñược cập nhật
commit => no-force ngược lại
Các DBMS thường sử dụng steal, no-force
Trang 19ðiể ểm m llư ưu u tr trữ ữ (Check point) (Check point)
Một ñiểm lưu trữ là ñiểm mà tại ñó
dữ liệu từ vùng ñệm ñược lưu trữxuống ñĩa
Trang 20Nhậ ậtt ký ký giao giao tác tác
Mục tiêu : ghi nhận các thao tác trên
cơ sở dữ liệu
Các loại mẫu tin
◦ [Begin-Trans,T] : bắt ñầu giao tac T
◦ [Read, T, A]: Giao tác T ñọc A
◦ [Read, T, A]: Giao tác T ñọc A
◦ [Write, T, A , giá trị cũ, giá trị mới]: giao
tác T viết A, giá trị cũ trước khi viết, giá trị mới sau khi viết
◦ [Commit, T] : giao tác T hoàn tất
◦ [Abort, T]: giao tác T bị huỷ
◦ [Check-point]: ñiểm lưu trữ
Trang 21Lock(C) [Begin-Trans,T3] Read (C) [Read,T3,C] C:=C*2
Write(C) [Write,T3,C,20,40] Unlock(C)
Commit [Commit,T3] Lock(A)
Read(A) B:=B/A
Trang 22◦ U : các giao tác chưa commit
◦ C : các giao tác ñã commit
Thực hiện lại (Redo) các hành
Thực hiện lại (Redo) các hành
ñộng cập nhật của các giao táctrong tập C
Hủy (Undo) các hành ñộng của
các giao tác chưa commit trongtap U
Trang 23DB log
Before Image
Trang 25ñộng khi sự cố xãy ra
2 Thực hiện lại (Redo) : lập lại các hành
ñộng từ một ñiểm trong nhật ký và khôi phục CSDL ñến trạng thái trước khi bị sự cố
3 Hủy (Undo) : hủy các hành ñộng của
các giao tác chưa commit
Trang 26Nguyên lý lý c củ ủa a thu thuậ ậtt toán toán
Viết nhật ký (log) trước (Write-Ahead Logging – WAL ): bất kỳ thay ñổi nào trên các ñ.v.d.l phải ñược ghi vào
tập nhật ký trước và nhật ký phải
ñược ghi ñĩa trước khi ñ.v.d.l ñược ghi
Tái lập lịch sử trong giai ñoạn thực
hiện lại : khi khởi ñộng lại sau sự cố, ARIES tiến hành lưu lại vết tất cả các hành ñộng trước khi sự cố xãy ra
Trang 27Nguyên lý lý c củ ủa a thu thuậ ậtt toán toán
thay ñổi ñược làm trong quá trìnhhủy các hành ñộng của một giaotác chưa commit phải ñược ghinhận lại
Trang 28ðiể ểm m llư ưu u tr trữ ữ trong trong ARIES ARIES
Khi ñến ñiểm lưu trữ, ARIES thực
hiện 3 bước sau
1 viết một mẫu tinh begin_checkpoint
vào nhật ký
2 Một mẫu tin end_checkpoint ñược
xây dựng
3 Một mẫu tin ñặc biệt chứa LSN của
mẫu tin begin_checkpoint ñược ghi vào một nơi cho trước trên ñĩa
Trang 29Cấu trúc của một mẫu tin nhật ký
prevLSN TransID type pageID Length Offset
Before-image
image
Trang 30Cậ ập p nh nhậ ậtt nh nhậ ậtt ký ký giao giao tác tác
Nhật ký giao tác ñược cập nhậtsau các thao tác
1 Cập nhật một trang (Update)
2 Giao tác hoàn tất (Commit)
2 Giao tác hoàn tất (Commit)
3 Giao tác bị hủy (Abort)
4 Giao tác kết thúc (End)
5 Hủy một cập nhật (Undo)
Trang 31DB Buffer
31
Log
Log Buffer
Trang 32Các c cấ ấu u trúc trúc khác khác liên liên quan quan
Bảng giao tác (Transaction Table) : bảng này chứa mỗi mẫu tin (entry) liên quan ñến một hành ñộng củagiao tác ñang hoạt dộng
Mỗi mục gồm hai thuộc tính
◦ ðịnh danh của giao tác (Transaction ID)
◦ LastLSN : con trỏ chỉ ñến LSN gần nhất thuộc giao tác này
Trang 33◦ Page ID : ñịnh danh của trang
◦ recLSN: con trỏ chỉ ñến LSN ñầu tiên
ñã làm cho trang này thành dirty
Trang 34ðể phục vụ cho mục tiêu khôi
phục, mỗi trang dữ liệu sẽ lưu trữLSN của mẫu tin nhật ký ghi nhậnthay ñổi trên trang gần nhất
Trang 35After-TransID lastLSN
T1000
T2000
Trang 36Tiế ến n trình trình khôi khôi ph phụ ục c sau sau ssự ự c cố ố
Giai ñoạn phân tích nhằm xác
ñịnh
1 ðiểm bắt ñầu tiến hành thực hiện lại
2 Các trang chưa cập nhật
2 Các trang chưa cập nhật
3 Các giao tác ñang hoạt ñộng và
chưa commit ñể hủy
Trang 37Giai ño ñoạ ạn n phân phân tích tích
Tìm ñiểm checkpoint gần nhất trong nhật ký
Tạo hai bảng transaction page va
Trang 38Giai ño ñoạ ạn n h hủ ủy y
Duyệt từ cuối tập nhật ký lên ñếncheckpoint gần nhất
Lấy lại giá trị cũ trong các mẫu tin update của các giao tác chưa
commit (xuất hiện trong
transaction table)
Tạo một mẫu tin CLR
(Compensation Log Record)
Trang 39Giai ño ñoạ ạn n th thự ực c hi hiệ ện n llạ ạii
Duyệt các trang trong bảng dirtypage, mỗi trang xác ñịnh mẩu tin nhật ký ghi nhận hành ñộng thayñổi ñầu tiên trên trang (dựa vào
recLSN)
Nếu hành ñộng có thể thực hiện lạithì
◦ Thực hiện lại
◦ pageLSN ñược gán giá trị LSN của
mẫu tin ñang xét