Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 3: Khôi phục dữ liệu và an toàn dữ liệu (Phần 1: Khôi phục dữ liệu) trình bày các nội dung: Mục đích khôi phục dữ liệu, các loại sự cố dữ liệu, các khái niệm liên quan khôi phục dữ liệu, các kỹ thuật khôi phục dữ liệu. Mời các bạn cùng tham khảo nội dung chi tiết.
KHÔI PHỤC DỮ LIỆU & AN TOÀN DỮ LIỆU Nội dung Phần 1: Khôi phục liệu Mục đích Các lọai cố Các khái niệm liên quan khôi phục liệu Tập tin nhật ký GT (transaction log) Điểm lưu trữ (checkpoint) Các kỹ thuật khôi phục liệu Ví dụ tài khỏan A = 1000 đ, B = 2000 đ T chuyển 50đ từ A sang B Hệ thống tình trạng: – Ghi A:= A-50 – Chưa ghi B:= B+50 – Khi điện! Khi có điện trở lại – Nếu cho T thực lại A = 900 – Nếu không cho T thực lại A = 950 B =2000 – Vậy phải thực khôi phục hệ thống nào? Mục tiêu khôi phục DL Khôi phục sở liệu tiến trình phục hồi sở liệu tình trạng quán cuối trước có cố xảy Việc khôi phục liệu thực quản lý khôi phục liệu (RM – Recovery Manager) Khôi phục liệu tự động giúp giảm thiểu việc yêu cầu người sử dụng thực lại công việc (khi xảy cố) Mục tiêu khôi phục DL Giao tác đơn vị khôi phục CSDL Trong tính chất GT(ACID), RM bảo đảm tính chất, tính nguyên tố (Atomic) tính bền bỉ (Durability) Các lọai cố Sự cố giao tác – Giao tác bị rollback deadlock hay lập lịch yêu cầu (thực lại) – Khi xảy cố giao tác, hệ thống bình thường – Tần suất: vài lần/phút Sự cố hệ thống – Hệ thống tiếp tục thực Nguyên nhân lỗi xử lý, bị điện hay lỗi phần mềm – Khi xảy cố hệ thống, thông tin nhớ – Tần suất: vài lần/tháng Các lọai cố Sự cố thiết bị lưu trữ (media failure) – Ví dụ: đóa bị hư, đầu đọc bị hư,… – Khi xảy cố thiết bị lưu trữ, bị phần hay toàn liệu – Tần suất: vài lần/năm Lỗi phần mềm ứng dụng – Lỗi logic chương trình truy cập CSDL, làm cho việc thực giao tác không thành công Nhận xét Dù nguyên nhân gì, ta cần xem xét khả phục hồi cố: Mất liệu nhớ (database buffer) Mất liệu nhớ phụ Sao chép liệu DBMS cung cấp chế cho phép chép sở liệu phòng CSDL bị cố – Sao chép toàn chép thay đổi kể từ lần chép cuối – Giải trường hợp liệu nhớ phụ Nhắc lại Dữ liệu buffer ghi (flush) bền bỉ xuống đóa khi: – Một câu lệnh cụ thể thực (ví dụ commit) – Hoặc ghi tự động buffer đầy Việc ghi tường minh từ buffer xuống đóa gọi forcewriting Trong khoảng thời gian từ thao tác ghi buffer xảy đến thao tác flush từ buffer xuống nhớ phụ, cố xảy RM phải xác định trạng thái GT thực thao tác ghi thời điểm xảy cố – Nếu GT commit, RM phải redo cập nhật GT (rollforward) để đảm bảo tính bền bỉ – Nếu GT chưa commit, RM phải undo (rollback) thay 10 đổi GT CSDL nhằm đảm bảo tính nguyên tố Ví dụ Sự cố T1 T2 T3 T4 T5 Khi cố xảy ra, T2 , T3, T4 commit nên RM phải ghi nhận thay đổi chúng lên CSDL ht khởi động lại T1 T5 phải undo 11 Việc truy xuất liệu Dữ liệu đọc từ đóa ghi vào đóa tính theo đơn vị khối (block) – Physical block: khối liệu lưu đóa – Buffer block: khối liệu lưu tạm thời main memory Input(A) A B Output(B) Main memory B Disk 12 Việc truy xuất liệu Read (X): gán X cho biến cục xi – Nếu khối DL có chứa X chưa có buffer, thực Input (X) – Gán giá trị X (chứa buffer block) cho biến cục xi Write (X): gán xi cho X – Nếu khối DL có chứa X chưa có buffer, thực Input(X) – Gán giá trị xi cho X (trên buffer block có chứa X) Việc Đọc/ Ghi liệu thực gián tiếp qua buffer 13 Quản lý buffer Buffer: – Dữ liệu có cố hệ thống – Không gian hạn chế Chiến lược thay để định vùng trống buffer dùng để nạp liệu – FIFO – LRU 14 Steal & No-force RM dùng hai giải pháp sau để ghi liệu từ buffer xuống đóa: – Steal policy: buffer manager ghi từ buffer xuống đóa trước GT commit Ngược lại no-steal, nghóa không ghi trước GT commit – Force policy: liệu từ buffer GT cập nhật ghi xuống đóa GT commit Ngược lại no-force Với no-steal, undo thay đổi giao tác bị hủy thực thay đổi chưa ghi xuống đóa Với force, redo thay đổi thực GT commit Steal policy tránh tình trạng nhiều liệu buffer lẽ nên ghi xuống đóa No force có lợi GT làm việc block, GT sau nạp lại block từ đóa lên buffer Hầu hết DBMS dùng sách steal, no-force 15 DBMS thường cung cấp tiện ích sau để hỗ trợ cho trình phục hồi liệu: – Cơ chế backup – Ghi nhật kyù (log) – Checkpoint – RM 16 Log file Log file chứa thông tin thay đổi CSDL Log file dùng cho xử lý phục hồi liệu Log file chứa thoâng tin: – − − Transaction record: ID giao tác Kiểu mẩu tin nhật ký (GT bắt đầu, insert, update, delete, abort, commit) ID đơn vị liệu bị cập nhật Giá trị cũ đơn vị liệu Ù Before Image Giá trị đơn vị liệu Ù After Image Con trỏ để quản lý mẫu tin tập tin log Checkpoint record Vì lof file quan trọng, thường có tập tin log tạo 17 Nhận xét Database gồm có phần: – – Log gồm có phần: – – Database Vật lý Buffer cho Database DB Recovery Manager Log DB Buffer Log Buffer Log Vậl lý Buffer cho Log Khi có cố ⇒ thông tin buffer cho database ⇒ phải dựa vào log file để phục hồi liệu Khi có cố ⇒ thông tin buffer cho log, nghóa thông tin thao tác cập nhật lên CSDL (chưa thực thật lên CSDL Vật ly)ù bị cần phải thực lại thao tác 18 Checkpoint Hạn chế pp khôi phục dùng log – Quét toàn log Ỉ thời gian tìm kiếm tăng – Không cần thực lại giao tác ghi chắn lên CSDL – Checkpoint dùng để cải thiện trình phục hồi Các checkpoint định kỳ xảy ra: – Ghi tất log record từ nhớ xuống nhớ phụ – Ghi xuống CSDL tất thay đổi buffer CSDL – Ghi checkpoint record vào log file RM định thời gian định checkpoint, sau m phút sau t giao tác commit kể từ lần checkpoint trước 19 Ví dụ dùng checkpoint Checkpoint Sự cố T1 T2 T3 T4 T5 T2 ghi xuống nhớ phụ nên không cần redo T2 20 10 Các kỹ thuật phục hồi Kỹ thuật phục hồi dùng cách cập nhật trì hoãn (Recovery techniques using deferred update) Kỹ thuật phục hồi dùng cách cập nhật tức (Recovery techniques using immediate update) 21 Kỹ thuật phục hồi dùng cập nhật trì hoãn CSDL không cập nhật GT commit (Dựa sách no-steal.) Nếu GT gặp cố trước commit không cần thực undo Nhưng cần redo cập nhật cho GT commit PP sử dụng log sau: – – – – – GT bắt đầu, ghi nhận lại Không thay đổi database buffer CSDL Ghi log record vào đóa, ghi dòng commit GT Dùng log record để cập nhật thật Nếu GT abort, bỏ qua thao tác GT không làm 22 11 Kỹ thuật phục hồi dùng cách cập nhật tức Cập nhật CSDL có GT thực thay đổi CSDL, không đợi đến GT kết thúc Khi cố xảy ra: – Vừa redo thao tác cập nhật GT commit – Vừa undo thao tác cập nhật GT chưa commit Dùng log file sau: – – – – – GT bắt đầu, ghi nhận lại Ghi nhận lại thao tác ghi GT vào log file Ghi nhận lại thao tác ghi database buffer Database buffer ghi xuống đóa đến lúc phải ghi Ghi nhận commit, GT commit 23 Nghi thức WAL (Write Ahead Log) Dữ liệu từ DB Buffer ghi nhận lên DB Vật lý trước giao tác thật commit hay rollback Vậy giao tác phải rollback cần tiến hành việc undo dựa vào thông tin ghi log file (vật lý) => Cần phải cập nhật log file vật lý trước cập nhật lên CSDL vật lý Phải viết vào log file vật lý trước viết vào CSDL vật lý (Write Ahead Log Protocol) 24 12 Nghi thức UNDO Thực cho giao tác chưa kết thúc xảy cố hay giao tác bị rollback Tình trạng CSDL DB log UNDO Tình trạng cũ CSDL Before Image 25 Nghi thức REDO Thực cho giao tác commit chưa ghi nhận CSDL Vật lý Tình trạng cũ CSDL DB log REDO Tình trạng CSDL After Image 26 13 Phục hồi bình thường Sau dừng bình thường hệ thống, điểm checkpoint ghi vào log file mẫu tin cuối log file Khi hệ thống khởi động lại, mẫu tin cuối log file checkpoint thủ tục phục hồi bình thường gọi (nói chung thực thao tác undo hay redo cả) 27 Phục hồi có cố Nếu mẫu tin cuối log file checkpoint không cần xét tiếp Ngược lại, xác định checkpoint cuối log file Xác định nhóm giao tác: – Nhóm 1: Giao tác commit trước xảy cố hệ thống – Nhóm 2: gồm loại o Giao tác chưa commit trước xảy cố hệ thống o Giao tác bị rollback trước xảy cố hệ thống Với giao tác thuộc nhóm 1: Áp dụng nghi thức Redo Với giao tác thuộc nhóm 2: Áp dụng nghi thức Undo 28 14 Một số quy ước Undo thao tác có dấu ↑ – ↑ Cần undo thật CSDL vật lý dựa vào before image – [↑] Không cần undo CSDL vật lý thao tác sau checkpoint cuối cùng, thay đổi log file Redo thao tác có dấu × 29 Ví dụ BOTi Bắt đầu giao tác Ti U1(i) Cập nhật lần Ti BOTi+1 Bắt đầu giao tác Ti+1 U1(i+1) ↑ Thao tác cập nhật thứ giao tác Ti+1 Checkpoint BOTi+2 U1(i+2) U2(i) Bắt đầu giao tác Ti+2 × × Commit Ti U2(i+1) Thao tác cập nhật thứ giao tác Ti+2 Thao tác cập nhật thứ giao tác Ti Commit Ti [↑] BOTi+3 Thao tác cập nhật thứ giao tác Ti+1 Bắt đầu giao tác Ti+3 U1(i+3) [↑] Thao tác cập nhật thứ giao tác Ti+3 U2(i+3) [↑] Thao tác cập nhật thứ giao tác Ti+3 U2(i+2) × Thao tác cập nhật thứ giao tác Ti+2 Commit Ti+2 Commit Ti+2 U3(i+1) Thao tác cập nhật thứ giao tác Ti+1 [↑] Sự cố hệ thống xảy 30 15 Shadow paging Một phương pháp phục hồi khác (pp log) dùng trang bóng Suốt trình sống giao tác, có bảng trì: – Bảng trang hành (current page table): bị thay đổi T thực ghi – Bảng trang bóng (shadow page table): bảng table trước T thực – Khi giao tác khởi động, page table gioáng 31 Shadow paging Current page table Shadow page table page on disk 32 16 Hết chương phần 33 17 ... Commit Ti [↑] BOTi +3 Thao tác cập nhật thứ giao tác Ti+1 Bắt đầu giao tác Ti +3 U1(i +3) [↑] Thao tác cập nhật thứ giao tác Ti +3 U2(i +3) [↑] Thao tác cập nhật thứ giao tác Ti +3 U2(i+2) × Thao tác... tiếp qua buffer 13 Quản lý buffer Buffer: – Dữ liệu có cố hệ thống – Không gian hạn chế Chiến lược thay để định vùng trống buffer dùng để nạp liệu – FIFO – LRU 14 Steal & No-force RM dùng... T thực – Khi giao tác khởi động, page table giống 31 Shadow paging Current page table Shadow page table page on disk 32 16 Heát chương phần 33 17