l Nhật ký giao tác là một chuỗi các mẫu tin log record ghi nhận lại các hành động của DBMSl Một mẫu tin cho biết một giao tác nào đó đã làm những gìl Nhật ký là một tập tin tuần tự được
Trang 1Khôi phục sự cố
Chương 5
Trang 2l Giới thiệu
l Phân loại sự cố
l Mục tiêu của khôi phục sự cố
l Nhật ký giao tác (transaction log)
l Điểm lưu trữ (checkpoint)
l Checkpoint đơn giản
l Checkpoint linh động (nonquiescent checkpoint)
l Phương pháp khôi phục
l Undo-Logging (immediate modification)
l Redo-Logging (deferred modification)
Undo/Redo Logging
Nội dung chi tiết
Trang 3l Tính toàn vẹn - đúng đắn, chính xác của dữ liệu
l Tính toàn vẹn - nhất quán của ràng buộc
Trang 4l Làm thế nào mà ràng buộc bị vi phạm?
l Lỗi lập trình của các giao tác (transaction bug)
l Lỗi lập trình của DBMS (DBMS bug)
l Hư hỏng phần cứng (hardware failure)
l Chia sẻ dữ liệu (data sharing)
l Làm thế nào để sửa lỗi và khôi phục?
l Chia sẻ dữ liệu
l Sự cố
Giới thiệu
Trang 5Sự cố
CPU
Trang 6l Sự cố trên thiết bị lưu trữ (media failure)
l Sự cố của giao dịch (transaction failure)
l Sự cố liên quan đến hệ thống (system failure)
Trang 7l Dữ liệu sai hiển nhiên
l Nhập thiếu 1 số trong dãy số điện thoại
l Dữ liệu sai không thể phát hiện
l Nhập sai 1 số trong dãy số điện thoại
l DBMS cung cấp các cơ chế cho phép phát hiện lỗi
l Ràng buộc khóa chính, khóa ngoại
l Ràng buộc miền giá trị
l Trigger
Sự cố do nhập liệu sai
Trang 8l Mất dữ liệu trên thiết bị lưu trữ
l Không thể truy cập lên thiết bị lưu trữ
l Ví dụ
l Đầu đọc của đĩa cứng hư
l Sector trên đĩa cứng hư
l DBMS áp dụng
l Kỹ thuật RAID
l Duy trì CSDL trên băng từ hoặc đĩa quang (archive)
Sự cố trên thiết bị lưu trữ
Trang 9l Sự cố làm cho 1 giao tác kết thúc không bình thường
Trang 10l Mất dữ liệu của bộ nhớ trong
l Không thể truy cập bộ nhớ trong
l Ví dụ
l Cúp điện
l Lỗi phần mềm DBMS hoặc OS
l Hư RAM
l DBMS cần cứu chữa và phục hồi dữ liệu
l Nhật ký giao tác (transaction log)
Sự cố hệ thống
Trang 11l Đưa CSDL về trạng thái nhất quán sau cùng nhất trước khi xảy ra sự cố
l Đảm bảo 2 tính chất của giao tác
l Nguyên tố (atomic)
l Bền vững (durability)
Mục tiêu của khôi phục sự cố
Transaction manager managerLog
Query processor
Buffer manager Recovery manager
Log Data
Trang 12l Nhật ký giao tác là một chuỗi các mẫu tin (log record) ghi nhận lại các hành động của DBMS
l Một mẫu tin cho biết một giao tác nào đó đã làm những gì
l Nhật ký là một tập tin tuần tự được lưu trữ trên bộ nhớ chính, và sẽ được ghi xuống đĩa ngay khi có thể
Trang 13l Ghi nhận giao tác T cập nhật lên đơn vị dữ liệu X
l X có giá trị trước khi cập nhật là v và sau khi cập nhật là w
Nhật ký giao tác (tt)
Trang 14l Khi sự cố hệ thống xảy ra
l DBMS sẽ tra cứu nhật ký giao tác để khôi phục những gì
mà các giao tác đã làm
l Một vài giao tác sẽ phải thực hiện lại (redo)
l Những giá trị đã cập nhật xuống CSDL sẽ phải cập nhật lần nữa
l Một vài giao tác không cần phải thực hiện lại (undo)
l CSDL sẽ được khôi phục về lại trạng thái trước khi thực hiện
Nhật ký giao tác (tt)
Trang 15l Giới thiệu
l Nhật ký giao tác (transaction log)
l Điểm lưu trữ (checkpoint)
l Checkpoint đơn giản
l Checkpoint linh động (nonquiescent checkpoint)
l Phương pháp khôi phục
Nội dung chi tiết
Trang 16l Quá trình tra cứu nhật ký mất nhiều thời gian
l Do phải quét hết tập tin nhật ký
l Thực hiện lại các giao tác đã được ghi xuống đĩa làm cho việc phục hồi diễn ra lâu hơn.
l Nhật ký giao tác có thêm mẫu tin <checkpoint> hay <ckpt>
l Mẫu tin <checkpoint> sẽ được ghi xuống nhật ký định kỳ
l Vào thời điểm mà DBMS ghi tất cả những gì thay đổi của CSDL
từ vùng đệm xuống đĩa
Trang 17l Khi đến điểm lưu trữ, DBMS
l (1) Tạm dừng tiếp nhận các giao tác mới
l (2) Đợi các giao tác đang thực hiện
l Hoặc là hoàn tất (commit)
l Hoặc là hủy bỏ (abort)
và ghi mẫu tin <commit T> hay <abort T> vào nhật ký
l (3) Tiến hành ghi nhật ký từ vùng đệm xuống đĩa
l (4) Tạo 1 mẫu tin <checkpoint> và ghi xuống đĩa
l (5) Tiếp tục nhận các giao tác mới
Điểm lưu trữ đơn giản
Trang 18l Các giao tác ở phía trước điểm lưu trữ là những giao tác đã kết thúc không cần làm lại
l Và sau điểm lưu trữ là những giao tác chưa thực hiện xong cần khôi phục
l Không phải duyệt hết nhật ký
l Duyệt từ cuối nhật ký đến điểm lưu trữ
Điểm lưu trữ đơn giản (tt)
Checkpoint
T
U
scan
Trang 19l Trong thời gian checkpoint hệ thống gần như tạm ngưng hoạt động
l Chờ các giao tác hoàn tất hoặc hủy bỏ
l Cho phép tiếp nhận các giao tác mới trong quá trình checkpoint
l Mẫu tin <start ckpt (T1, T2, …, Tk)>
l Mẫu tin <end ckpt>
Điểm lưu trữ linh động
(Nonquiescent checkpoint)
Checkpoint
V
Trang 20l Khi đến điểm lưu trữ, DBMS
l (1) Tạo mẫu tin <start ckpt (T1, T2,…, Tk)> và ghi xuống đĩa
l T1, T2, …, Tk là những giao tác đang thực thi
l (2) Chờ cho đến khi T1, T2, …, Tk hoàn tất hay hủy bỏ,
nhưng không ngăn các giao tác mới bắt đầu
l (3) Khi T1, T2, …, Tk thực hiện xong, tạo mẫu tin
<end ckpt> và ghi xuống đĩa
Điểm lưu trữ linh động (tt)
Trang 21l Giới thiệu
l Phương pháp khôi phục
l Undo-Logging (immediate modification)
l Redo-Logging (deferred modification)
l Undo/Redo Logging
Nội dung chi tiết
Trang 22l Qui tắc
l (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký
l Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị cũ
l <T, X, v>
l (2) Trước khi X được cập nhật xuống đĩa, mẫu tin <T,
X, v> đã phải có trên đĩa
l (3) Trước khi mẫu tin <commit, T> được ghi xuống đĩa, tất cả các cập nhật của T đã được phản ánh lên đĩa
l Flush-log: chỉ chép những block mẫu tin nhật ký mới chưa được chép trước đó
Phương pháp Undo-Logging
Trang 23Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t)
Output(A) Output(B)
t
8 16 16 8 16 16
16 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16 16
8 8 16
16 16
8 8 8 8 8 8
16 16
8 8 8 8 8 8
8 16
Trang 24l Khôi phục
l (1) Gọi S là tập các giao tác chưa kết thúc
l Có <start T i > trong nhật ký nhưng
l Không có <commit T i > hay <abort T i > trong nhật ký
l (2) Với mỗi mẫu tin <T i , X, v> trong nhật ký
(theo thứ tự cuối tập tin đến đầu tập tin)
Trang 2616 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16 16
8 8 16
16 16
8 8 8 8 8 8
16 16
8 8 8 8 8 8
8 16
Trang 27l Vì T1 và T2 đang thực thi nên chờ
l Sau khi T1 và T2 hoàn tất hoặc hủy bỏ
l Ghi mẫu tin <checkpoint> lên nhật ký
Undo-Logging & Checkpoint
Trang 28Undo-Logging & Checkpoint (tt)
Trang 29l Vì T1 và T2 đang thực thi nên tạo <start ckpt (T1,T2)>
các giao tác mới
Undo-Logging & Nonquiescent Checkpoint
Trang 30Undo-Logging & Nonquiescent Checkpoint (tt)
Trang 31Undo-Logging & Nonquiescent Checkpoint (tt)
Trang 32Undo-Logging & Nonquiescent Checkpoint (tt)
Trang 33l Qui tắc
l (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký
l Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị mới
l <T, X, w>
l (2) Trước khi X được cập nhật xuống đĩa, tất cả các mẫu tin nhật ký của giao tác cập nhật X đã phải có trên đĩa
l Bao gồm mẫu tin cập nhật <T, X, w> và <commit T>
l (3) Khi T hoàn tất, tiến hành ghi nhật ký xuống đĩa
l Flush-log: chỉ chép những block mẫu tin nhật ký mới chưa được chép trước đó
Phương pháp Redo-Logging
Trang 34Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t)
Output(A) Output(B)
t
8 16 16 8 16 16
16 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16 16
8 8 16
16 16
8 8 8 8 8 8
16 16
8 8 8 8 8 8
8 16
Trang 35l Khôi phục
l (1) Gọi S là tập các giao tác hoàn tất
l Có mẫu tin <commit T i > trong nhật ký
l (2) Với mỗi mẫu tin <T i , X, w> trong nhật ký
(theo thứ tự cuối tập tin đến đầu tập tin)
Trang 3716 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16 16
8 8 16
16 16
8 8 8 8 8 8
16 16
8 8 8 8 8 8
8 16
Trang 39l Đến điểm lưu trữ, DBMS
l (1) Tạo mẫu tin <start ckpt (T1, T2,…, Tk)> và ghi xuống đĩa
l T1, T2, …, Tk là những giao tác đang thực thi
l (2) Ghi xuống đĩa những dữ liệu của các giao tác đã hoàn tất trên vùng đệm
l (3) Tạo mẫu tin <end ckpt> và ghi xuống đĩa
Redo-Logging & Checkpoint (tt)
Trang 40Redo-Logging & Checkpoint (tt)
l Ví dụ 1
l T1 đã hoàn tất trước <start ckpt>
l Có thể đã được ghi xuống đĩa
l Nếu chưa thì trước khi <end ckpt> cũng được ghi xuống đĩa
Trang 41Redo-Logging & Checkpoint (tt)
Trang 42Redo-Logging & Checkpoint (tt)
Trang 43l Undo-logging (immediate modification)
l Khi giao tác kết thúc, dữ liệu được ghi xuống đĩa ngay lập tức
l Truy xuất đĩa nhiều
l Giữ lại các cập nhật trên vùng đệm cho đến khi giao tác hoàn tất và mẫu tin nhật ký được ghi xuống đĩa
l Tốn nhiều bộ nhớ
Nhận xét
Trang 44l Qui tắc
l (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký
l Mẫu tin của thao tác cập nhật ghi nhận giá trị cũ và mới của một đơn vị dữ liệu
l <T, X, v, w>
l (2) Trước khi X được cập nhật xuống đĩa, các mẫu tin cập nhật <T, X, v, w> đã phải có trên đĩa
l (3) Khi T hoàn tất, tạo mẫu tin <commit T> trên nhật ký
và ghi xuống đĩa
Phương pháp Undo/Redo-Logging
Trang 45Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t) Output(A) Output(B)
t
8 16 16 8 16 16 16 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16 16 16
8 8 16 16 16
8 8 8 8 8 8 16 16
8 8 8 8 8 8 8 16
Trang 46l Khôi phục
l (1) Khôi phục lại (undo) những giao tác chưa kết thúc
l Theo thứ tự từ cuối nhật ký đến đầu nhật ký
l (2) Thực hiện lại (redo) những giao tác đã hoàn tất
l Theo thứ tự từ đầu nhật ký đến cuối nhật ký
Phương pháp Undo/Redo-Logging (tt)
Trang 48Mem A Mem B Disk A Disk B
8 8 16 16 16 16 16 16
8 8 16 16 16
8 8 8 8 8 8 16 16
8 8 8 8 8 8 8 16
Trang 49l Khi đến điểm lưu trữ, DBMS
l (1) Tạo mẫu tin <start ckpt (T1, T2,…, Tk)> và ghi xuống đĩa
l T1, T2, …, Tk là những giao tác đang thực thi
l (2) Ghi xuống đĩa những dữ liệu đang nằm trên vùng đệm
l Những đơn vị dữ liệu được cập nhật bởi các giao tác
l (3) Tạo mẫu tin <end ckpt> trong nhật ký và ghi xuống đĩa
Undo/Redo-Logging & Checkpoint
Trang 50l T1 đã hoàn tất trước <start ckpt>
l Có thể đã được ghi xuống đĩa
l Nếu chưa thì trước khi <end ckpt> cũng được ghi xuống đĩa
l Giá trị B=10 đã được ghi xuống đĩa
Trang 54AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 55AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 56AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 57AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 58AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 59AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 60AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 61AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 62AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 63AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 64AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 65AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 66AN TOÀN & BẢO MẬT DỮ LiỆU
Trang 67AN TOÀN & BẢO MẬT DỮ LiỆU