Bài giảng Hệ quản trị dữ liệu - Chương IV: An toàn dữ liệu và khôi phục sự cố
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị dữ liệu - Chương IV: An toàn dữ liệu và khôi phục sự cố", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_he_quan_tri_du_lieu_chuong_iv_an_toan_du_lieu_va_k.pdf
Nội dung text: Bài giảng Hệ quản trị dữ liệu - Chương IV: An toàn dữ liệu và khôi phục sự cố
- Chương IV. An tịan dữ liệu và khơi phục sự cố 1
- Nội dung Giới thiệu Phân loại sự cố Mục tiêu của khơi phục sự cố Các phương pháp phục hồi dữ liệu An tịan logic dựa trên nhật ký Khơi phục sau sự cố cĩ hệ thống 2
- Giới thiệu An tồn dữ liệu: nhằm chống lại sự xâm nhập trái phép từ bên trong và bên ngồi hệ thống. Các tác nhân tác động từ bên ngồi gây hư hỏng hệ quản trị cơ sở dữ liệu, sai lệch, mất mát dữ liệu, cấu trúc dữ liệu, Trạng thái nhất quán Thỏa các ràng buộc tồn vẹn CSDL nhất quán CSDL ở trạng thái nhất quán Ràng buộc bị vi phạm do: Lỗi lập trình của các giao tác (transaction bug) Lỗi lập trình của DBMS (DBMS bug) Hư hỏng phần cứng (hardware failure) 3 Chia sẻ dữ liệu (data sharing)
- Phân loại sự cố Một số sự cố cĩ thể xảy ra do: Khách quan: mất điện Chủ quan: thao tác sai Sự cố do nhập liệu sai Sự cố của giao tác (transaction failure) Sự cố liên quan đến hệ thống (system failure) Sự cố trên thiết bị lưu trữ (media failure) 4
- Sự cố do nhập liệu sai Dữ liệu sai hiển nhiên Dữ liệu sai khơng thể phát hiện DBMS cung cấp các cơ chế cho phép phát hiện lỗi Ràng buộc khĩa chính, khĩa ngoại Ràng buộc miền giá trị Trigger 5
- Sự cố của giao tác (transaction failure) Sự cố gây nên một giao tác kết thúc khơng bình thường: Ví dụ Chia cho khơng Giao tác bị hủy Dữ liệu nhập sai Tràn số 6
- Sự cố hệ thống (system failure) Sự cố gây nên bị mất hoặc khơng thể truy xuất được dữ liệu ở bộ nhớ trong. Ví dụ Cúp điện Lỗi phần mềm DBMS hoặc OS Hư RAM 7
- Sự cố trên thiết bị lưu trữ (media failure) Sự cố gây nên việc mất hay khơng thể truy cập được dữ liệu ở bộ nhớ ngịai Ví dụ Đầu đọc của đĩa cứng hư Sector trên đĩa cứng hư 8
- Mục tiêu của khơi phục sự cố Khơi phục CSDL là tiến trình phục hồi CSDL về trạng thái nhất quán cuối cùng trước khi cĩ sự cố xảy ra. Việc khơi phục dữ liệu được thực hiện bởi bộ quản lý khơi phục dữ liệu (RM- Recovery Manager). Khơi phục dữ liệu tự động giúp giảm thiểu việc yêu cầu người sử dụng thiện hiện lại cơng việc (khi xảy ra sự cố). Giao tác là đơn vị cơ bản khi khơi phục CSDL. Trong 4 tính chất của GT(ACID), RM đảm bảo 2 tính chất: tính nguyên tố(Atomic) và tính bền vững (Durability) 9
- Khơi phục sự cố từ một giao tác T1 T2 Nếu một giao tác T bị sự cố thì hệ Lock(A) thống sẽ thực hiện các việc sau: Read(A) Giải phĩng các đơn vị dữ liệu đang A=A+1 Write(A) bị khĩa bởi T (Ul(B)) Lock(B) Reset lại giá trị các đơn vị dữ liệu Unlock(A) mà T đã làm thay đổi (A) Lock(A) Read(A) Xét xem cĩ giao tác nào(#T) đã đọc A=A+2 dữ liệu do T ghi khơng? Nếu cĩ: -T’ chưa commit hủy Read(B) Write(A) -T’ commit rồi thực hiện lại Unlock(A) Commit B=B/A Giả sử B/A (A=0) thì hệ thệ bị đứng 10
- Các phương pháp phục hồi dữ liệu Lưu thơng tin trên đĩa cứng. Tạo bản sao lưu (backup) Tạo điểm phục hồi hệ thống (system check point) An tịan logic dựa trên các nhật ký 11
- Lưu thơng tin trên đĩa cứng Tạo nhật ký để ghi chép lại các hành động đã diễn ra. Thơng tin ghi lại trong nhật ký là trình trạng các trang vật lý của CSDL trước khi thực hiện hành động của một giao tác. 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 Một mẫu tin cho biết một giao tác nào đĩ đã làm những gì 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ể 12
- Tạo bản sao lưu (backup) CSDL sẽ được sao chép thành nhiều bản nằm trên các đĩa cứng khác nhau. Có 2 phương pháp thực hiện sao lưu dữ liệu: Thủ công: Chọn thời điểm thích hợp người quản trị CSDL thực hiện công cụ hỗ trợ của hệ thống để tiến hành sao lưu (Backup) toàn bộ hay một phần CSDL lên một vị trí an toàn trong hệ thống. Bằng cách này, nếu có xảy ra sự cố thì người quản trị CSDL sẽ sử dụng công cụ hỗ trợ của hệ QTCSDL thực hiện thao tác phục hồi (Restore) hiện trạng CSDL. Thông thường, cách này chỉ được tiến hành đột xuất. Tự động: Hầu hết các hệ QTCSDL đều có cơ chế tự động sao lưu và phục hồi dữ liệu khi có sự cố. Có thể yêu cầu lưu lại mấy bản sao dữ liệu cuối cùng. Có thể định kỳ cho hệ thống sẽ tự động sao lưu CSDL vào một giờ nào đó trong ngày, một ngày cụ thể trong tuần hoặc trong tháng. Tới kỳ đã định hệ thống sẽ tự động tiến hành việc sao lưu. Một khi có sự cố hệ QTCSDL sẽ tự động phục hồi lại CSDL từ các phiên bản lưu mới nhất. 13
- Các loại Backup Full Backup Differential Backup Log Backup 14
- Full Backup Cú pháp Backup database TO Ví dụ BACKUP DATABASE AdventureWorks TO DISK = ‘C:\Backup\AdventureWorks.bak’ 15
- Differential Backup Cú pháp: Backup database TO WITH DIFFERENTIAL Ví dụ BACKUP DATABASE AdventureWorks TO DISK = ’C:\Backup\AdventureWorks.bak’ WITH DIFFERENTIAL 16
- Log Backup Cú pháp: Backup log TO WITH NO_TRUNCATE BACKUP LOG AdventureWorks TO DISK= 'C:\SQL\Backup\ AdventureWorks.bak' WITH NO_TRUNCATE 17
- Phục hồi csdl (restore databse) Phục hồi tịan bộ CSDL Restore database from Ví dụ: RESTORE DATABASE AdventureWorks FROM DISK = ‘C:\Backup\AdventureWorks.bak’ Phục hồi giao tác Restore log from 18
- Ví dụ backup database qlsv to disk='d:\qlsv.bak' restore database qlsv from disk ='d:\qlsv.bak' 19
- Các cơ chế an tồn dữ liệu Kiểm sốt quyền truy cập CSDL Khung nhìn (view) như các cơ chế bảo vệ Mã hĩa dữ liệu 20
- Kiểm sốt quyền truy cập CSDL 21
- Kiểm sốt quyền truy cập CSDL User được phép truy xuất khơng điều kiện tới tồn bộ CSDL và thực hiện bất kỳ thao tác nào trên CSDL đĩ User khơng được phép truy xuất tới bất kỳ bộ phận nào của CSDL User cĩ thể đọc một bộ phận của CSDL nhưng khơng được thay đổi nội dung của bộ phận đĩ User cĩ thể đọc đúng một bộ trong bảng NhanVien nhưng khơng được sửa đổi bộ này User cĩ thể đọc đúng một bộ trong bảng NhanVien và sửa đổi nhưng khơng phải tất cả giá trị của bộ này. 22
- Kiểm sốt quyền truy cập CSDL User cĩ thể đọc các thuộc tính MaNV, TenNV, MaPB nhưng trong mỗi bộ chỉ được sửa giá trị của các thuoc tính MaPB User cĩ thể đọc các thuộc tính MaNV, TenNV, Luong nhưng trong mỗi bộ chỉ được sửa giá trị của các thuộc tính Luong trong khoảng thời gian từ 8h -> 11h từ một thiết bị đầu cuối đặt trong phịng tài vụ User cĩ thể đọc các thuộc tính MaNV, TenNV, Luong nhưng trong mỗi bộ chỉ được sửa giá trị của các thuộc tính Lương nếu và chỉ nếu giá trị hiện tại của thuộc tính Luong < 500 USD 23
- Kiểm sốt quyền truy cập CSDL User cĩ thể áp dụng các phép tốn thống kê cho thuộc tính Lương (như tính lương trung bình của từng phịng ban) nhưng khơng được đọc hay sửa đổi các giá trị cá biệt. User cĩ thể đọc các thuộc tính MaNV, Luong, HoaHong và trong mỗi bộ cĩ thể sửa giá trị của thuộc tính HoaHong của nhân viên nếu và chỉ nếu người đĩ là trưởng phịng của phịng đĩ. User cĩ thể bổ sung thêm nhân viên vào một phịng ban nào đĩ hay xĩa nhân viên khỏi một phịng nào đĩ. 24
- Kiểm sốt quyền truy cập CSDL Xác nhận người dùng Phân quyền 25
- Xác nhận người dùng Những user khác nhau tùy theo vị trí, vai trị, trách nhiệm và quyền hạn trong hệ thống sẽ cĩ các quyền khác nhau đối với CSDL hay các bộ phận khác nhau của CSDL như các quan hệ hay thuộc tính của các quan hệ. Các quyền này bao gồm đọc, thêm, xĩa hay sửa đổi các các đối tượng của CSDL. 26
- Xác nhận người dùng Các DBMS phải đảm bảo khơng cho phép user thực hiện bấy kỳ thao tác nào nếu khơng được phép. Người quản trị CSDL(DBA) là người cĩ quyền cấp tài nguyên và quyền thao tác CSDL, nghĩa là người quản trị phải: (1) Xác nhận cho hệ thống những quyền hay cụ thể những thao tác mà mỗi user được phép thực hiện. (2) Cung cấp một phương tiện cho user để hệ thống nhận biết họ. 27
- Xác nhận người dùng Nhiệm vụ của DBA: - Định nghĩa lược đồ CSDL. - Định nghĩa cấu trúc lưu trữ và phương thức truy xuất dữ liệu - Sửa đổi lược đồ và tổ chức vật lý. - Cấp quyền user để truy xuất dữ liệu. 28
- Xác nhận người dùng Nhiệm vụ của DBA: - Thực hiện vai trị liên kết các user. - Giám sát việc thực thu và đáp ứng các thay đổi phù hợp. - Quản lý khơng gian lưu trữ, thực hiện sao lưu dữ liệu, - Việc xác nhận user thường được sử dụng là mật khẩu. 29
- Phân quyền người dùng Quyền người dùng được định nghĩa như mức độ người dùng cĩ thể hay khơng thể thực thi trên CSDL, quyền được chia thành 4 loại như sau: Quyền truy cập vào SQL Server Quyền truy cập vào CSDL Quyền thực hiện trên các đối tượng của CSDL Quyền xử lý dữ liệu 30
- Nhà quản trị hệ thống (System administrator) Nhà quản trị hệ thống cĩ login là sa. Cĩ tịan quyền truy xuất đến tất cả đối tượng trong SQL Server Khơng thể xĩa login sa 31
- Người chủ CSDL (database owner) Login dbo được gọi là database owner. dbo là thành viên của nhĩm db_owner. Khơng thể xĩa khỏi nhĩm này. 32
- Tạo login đăng nhập Tạo login bằng phát biểu SQL Create Login Login_name with password Ví dụ: Create login minhnguyen with password = ‘123456’ Liệt kê danh sách login Select name, createdate From syslogins 33
- Khai báo database user bằng phát biểu SQL Cú pháp Create user user_name For Login Ví dụ: USE QLSV CREATE USER lmn FOR LOGIN minhnguyen 34
- Cú pháp tạo tài khoản đăng nhập Dùng sp EXEC sp_addlogin [@login= ] [,@password= ] [,@defdb= ] Ví dụ Use QLSV EXEC sp_addlogin ‘user1’, ‘123’ 35
- Thay đổi password Cú pháp: EXEC sp_password [@old= ] [,@new= ] [,@loginname= ] EXEC sp_password ‘123’, ‘nguyen’, ‘user1’ 36
- Cấp quyền truy cập vào CSDL Cú pháp EXEC sp_grantdbaccess [@loginname= ] [,@name_in_db= ] Ví dụ: Use qlsv EXEC sp_grantdbaccess ‘user1’, ‘pvn’ 37
- Xĩa quyền truy cập vào CSDL Cú pháp EXEC sp_revokedbaccess [@loginname= Ví dụ EXEC sp_revokedbaccess ‘user1’ 38
- Quyền thực hiện trên các đối tượng của CSDL Cấp quyền tạo đối tượng - Create database Cú pháp - Create table Grant to [tên user] Ví dụ: Cấp quyền tạo view - Create View Use QLSV - Create proc GRANT create table, create view - Create rule To pvn - Create default Cấm quyền tạo đối tượng Deny to [tên user] - Backup database Ví dụ: - Backup log DENY create table To pvn 39
- Quyền xử lý dữ liệu - Select Cấp quyền xử lý dữ liệu - Update Grant - Insert TO - Delete Ví dụ: GRANT INSERT, UPDATE, DELETE - References ON sinhvien TO lmn - Execute Cấm quyền tạo đối tượng Deny on to [tên user] (hoặc dùng revoke) ụ 40 Ví d : Deny insert on sinhvien to lmn
- Quyền xử lý dữ liệu (tt) Grant/ Revoke/ Deny cịn cho phép cấp quyền trên từng Field của table. Ví dụ: cho user pvn chỉ được quyền hiệu chỉnh dữ liệu trên các Field: Ho, Ten, Phai, DiaChi, NgaySinh của NHANVIEN GRANT UPDATE (Ho, Ten, Phai, DiaChi, NgaySinh) ON NHANVIEN To lmn 41
- Nhật ký giao tác Mẫu tin nhật ký gồm cĩ Ghi nhận giao tác T bắt đầu hoạt động Ghi nhận giao tác T đã hồn tất Ghi nhận giao tác T bị hủy Ghi nhận giao tác T cập nhật lên đơn vị dữ liệu X X cĩ giá trị trước khi cập nhật là v và sau khi cập nhật là w 42
- Nhật ký giao tác (tt) Khi sự cố hệ thống xảy ra 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 Để sửa chữa các sự cố Một vài giao tác sẽ phải thực hiện lại (redo) Những giá trị đã cập nhật xuống CSDL sẽ phải cập nhật lần nữa Một vài giao tác khơng cần phải thực hiện lại (undo) CSDL sẽ được khơi phục về lại trạng thái trước khi thực hiện 43
- Tạo điểm phục hồi hệ thống (system check point) Các hành động xảy ra trước điểm phục hồi hệ thống là đã được ghi nhận, sau thời điểm đó là chưa được ghi nhận, vẫn còn nằm trong bộ nhớ trong. Trước khi kết thúckỳ (session) khai thác CSDL, hệ thống sẽ đóng các tập tin và ghi lại các bộ đệm vào CSDL, và đồng thời ghi vào nhật ký. Bộ nhớ trong Hệ QTCSDL Bộ nhớ ngoài Vùng đệm dành Module quản lý Nhật ký cho nhật ký phục hồi dữ liệu CSDL Vùng đệm dành Module quản lý cho CSDL vùng đệm CSDL NK 44
- Điểm lưu trữ đơn giản Khi đến điểm lưu trữ, DBMS (1) Tạm dừng tiếp nhận các giao tác mới (2) Đợi các giao tác đang thực hiện Hoặc là hồn tất (commit) Hoặc là hủy bỏ (abort) và ghi mẫu tin hay vào nhật ký (3) Tiến hành ghi nhật ký từ vùng đệm xuống đĩa (4) Tạo 1 mẫu tin và ghi xuống đĩa 45 (5) Tiếp tục nhận các giao tác mới
- Điểm lưu trữ đơn giản (tt) 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 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 Khơng phải duyệt hết nhật ký Duyệt từ cuối nhật ký đến điểm lưu trữ U T scan Checkpoint 46
- Điểm lưu trữ linh động Trong thời gian checkpoint hệ thống gần như tạm ngưng hoạt động Chờ các giao tác hồn tất hoặc hủy bỏ Nonquiescent checkpoint Cho phép tiếp nhận các giao tác mới trong quá trình checkpoint Mẫu tin Mẫu tin V T U 47 Checkpoint
- Điểm lưu trữ linh động (tt) Khi đến điểm lưu trữ, DBMS (1) Tạo mẫu tin và ghi xuống đĩa T1, T2, , Tk là những giao tác đang thực thi (2) Chờ cho đến khi T1, T2, , Tk hồn tất hay hủy bỏ, nhưng khơng ngăn các giao tác mới bắt đầu (3) Khi T1, T2, , Tk thực hiện xong, tạo mẫu tin và ghi xuống đĩa 48
- Ví dụ T1 T2 Check point Thời điểm xảy ra sự cố T3 T4 T5 t1 tk t2 t4 t3 Ví dụ: Có 5 giao tác thực hiện như hình trên. Thời điểm kiểm tra hệ thống (System Check Point) là tk. Khi đó các hành động của T1 không cần phải làm lại (T1 là an toàn). T3 chỉ bị hủy một phần hành động sau tk và làm lại. T5 bị hủy để làm lại. T2 và T4 được hệ thống tự động phục hồi (dựa vào nhật ký và điểm phục hồi). Hai chiến lược xác nhận và hủy giao tác: o Ghi chồng lên dữ liệu cũ (Chiến lược đảm bảo an toàn lôgic). Thông tin cũ bị mất. o Ghi dữ liệu mới vào chỗ khác (Chiến lược đảm bảo an toàn vật lý). Thông 49 tin cũ chỉ bị đánh dấu là hết hiệu lực, các thông tin mới được ghi vào một nơi khác
- An tịan logic dựa trên các nhật ký Undo-Logging (immediate modification) Redo-Logging (deferred modification) Undo/Redo Logging 50
- Undo-Logging Qui tắc (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị cũ (2) Trước khi X được cập nhật xuống đĩa, mẫu tin đã phải cĩ trên đĩa (3) Trước khi mẫu tin được ghi xuống đĩa, tất cả các cập nhật của T đã được phản ánh lên đĩa Flush-log: chỉ chép những block mẫu tin nhật ký mới chưa 51 được chép trước đĩ
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 8 Flush log 9 Output(A) 16 16 16 16 8 10 Output(B) 16 16 16 16 16 11 52 12 Flush log
- Undo-Logging (tt) Khơi phục (1) Gọi S là tập các giao tác chưa kết thúc Cĩ trong nhật ký nhưng Khơng cĩ hay trong nhật ký (2) Với mỗi mẫu tin trong nhật ký (theo thứ tự cuối tập tin đến đầu tập tin) Nếu Ti S thì -Write(X, v) - Output(X) (3) Với mỗi Ti S 53 Ghi mẫu tin lên nhật ký
- Undo-Logging (tt) Khi cĩ sự cố T1 và T3 đã hồn tất T2 và T4 chưa kết thúc T2 T1 Khơi phục dữ liệu Bỏ qua T4 T3 54 Sự cố
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 A và B khơng thay đổi nên khơng cần 8 Flush log khơi phục 9 Output(A) 16 16 16 16 8 10 Output(B) 16 16 16 16 16 Khơi phục A=8 và 11 B=8 5512 Flush log Khơng cần khơi phục A và B
- Phương pháp Redo-Logging Qui tắc (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị mới (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 Bao gồm mẫu tin cập nhật và (3) Khi T hồn tất, tiến hành ghi nhật ký xuống đĩa Flush-log: chỉ chép những block mẫu tin nhật ký mới chưa 56 được chép trước đĩ
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 8 9 Flush log 10 Output(A) 16 16 16 16 8 11 Output(B) 16 16 16 16 16 57
- Phương pháp Redo-Logging (tt) Khơi phục (1) Gọi S là tập các giao tác hồn tất Cĩ mẫu tin trong nhật ký (2) Với mỗi mẫu tin trong nhật ký (theo thứ tự cuối tập tin đến đầu tập tin) Nếu Ti S thì - Write(X, w) - Output(X) (3) Với mỗi Tj S Ghi mẫu tin lên nhật ký 58
- Phương pháp Redo-Logging (tt) Khi cĩ sự cố T1 và T3 đã hồn tất T2 và T4 chưa kết thúc T1 T2 Bỏ qua Thực hiện lại T4 T3 Sự cố 59
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 8 Xem nhưT chưa hồn tất, A và B khơng cĩ 9 Flush log thay đổi 10 Output(A) 16 16 16 16 8 Thực hiện lại T, ghi 11 Output(B) 16 16 16 16 16 A=16 và B=16 Thực hiện lại T, ghi A=16 và B=16 60
- Phương pháp Undo/Redo-Logging Qui tắc (1) Một thao tác phát sinh ra 1 mẫu tin nhật ký 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 (2) Trước khi X được cập nhật xuống đĩa, các mẫu tin cập nhật đã phải cĩ trên đĩa (3) Khi T hồn tất, tạo mẫu tin trên nhật ký và ghi xuống đĩa 61
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 8 Flush log 9 Output(A) 16 16 16 16 8 10 11 Output(B) 16 16 16 16 16 62
- Phương pháp Undo/Redo-Logging (tt) Khơi phục (1) Khơi phục lại (undo) những giao tác chưa kết thúc Theo thứ tự từ cuối nhật ký đến đầu nhật ký (2) Thực hiện lại (redo) những giao tác đã hồn tất Theo thứ tự từ đầu nhật ký đến cuối nhật ký 63
- Phương pháp Undo/Redo-Logging (tt) Khi gặp sự cố T1 và T3 đã hồn tất T2 và T4 chưa kết thúc T1 T2 Khơi Thực hiện lại phục T3 T4 Sự cố 64
- Ví dụ Bước Hành động t Mem A Mem B Disk A Disk B Mem Log 1 2 Read(A,t) 8 8 8 8 3 t:=t*2 16 8 8 8 4 Write(A,t) 16 16 8 8 5 Read(B,t) 8 16 8 8 8 6 t:=t*2 16 16 8 8 8 7 Write(B,t) 16 16 16 8 8 8 Flush log 9 Output(A) 16 16 16 16 8 T chưa kết thúc, khơi phục A=8 10 đã được ghi xuống đĩa, thực 11 Output(B) 16 16 16 16 16 hiện lại T, A=16 và 65 B=16
- Khơi phục sau sự cố cĩ hệ thống Đó là cơ chế phục hồi bình thường sau khi ngưng hoạt động hệ thống. Cơ chế này dựa trên điểm phục hồi bình thường cuối cùng. Đối với tình huống ngưng hoạt động bất thường, có 2 cơ chế phục hồi: Phục hồi nóng và Phục hồi lạnh. 66
- Khơi phục sau sự cố cĩ hệ thống (tt) (a) Phục hồi nóng: Khi hệ thống đang hoạt động. Cơ chế này dựa trên nhật ký trước, các bản sao dữ liệu và điểm phục hồi hệ thống. T1 Điểm phục hồi hệ thống T2 Điểm xảy ra sự cố T3 T4 T5 T1 đã được xác nhận. T2 đã hoàn tất việc ghi lên bộ nhớ ngoài (đã được ghi nhận) sau thời điểm phục hồi hệ thống. 67T3 & T5 là các giao tác “thua”. T1, T2, T4 là các giao tác “được”.
- Khơi phục sau sự cố cĩ hệ thống (tt) Các hành động nào của các giao tác “được” xảy ra sau điểm phục hồi thì sẽ được làm lại. Các hành động của T2 xảy ra sau điểm phục hồi thì được làm lại. Các hành động của T3 xảy ra sau điểm phục hồi thì phải được hủy bỏ và làm lại từ đầu. Các hành động nào xảy ra sau điểm phục hồi thì được làm lại. T4 được thực hiện lại. T5 được thực hiện sau điểm phục hồi và còn dở dang nên được hủy và làm lại từ đầu. 68
- Khơi phục sau sự cố cĩ hệ thống (tt) (b) Phục hồi lạnh: Xảy ra do lỗi thiết bị (thiết bị hư, thay đĩa khác). Thông thường thì người ta sẽ có một phiên bản của CSDL và nhật ký nằm trên một đĩa khác. Cơ chế này dựa trên “nhật ký sau”. Vì CSDL bị hư nên phải dựa vào bản sao CSDL và nhật ký sau để thực hiện lại một vài hành động (nhật ký luôn luôn được lưu thành nhiều bản trên nhiều đĩa cứng khác nhau). Cơ chế phục hồi lạnh được tiến hành tùy thuộc vào người quản trị Cơ sở dữ liệu. 69
- Cài đặt trên SQL server Quản lý tranh chấp sử dụng 2 cơ chế Quản lý việc đọc dữ liệu Khĩa 70
- Cài đặt trên SQL server (tt) Quản lý việc đọc dữ liệu cĩ 5 mức 71
- Cài đặt trên SQL server (tt) 72
- Cài đặt trên SQL server (tt) 73
- Cài đặt trên SQL server (tt) 74
- Cài đặt trên SQL server (tt) 75
- Xác định chiến lược sử dụng Lock và Isolation Level. Một số gợi ý sau: Nếu khơng cần đọc chính xác dữ liệu mà chỉ cần 1 cái nhìn tổng quan về thơng tin trong CSDL thì nên sử dụng READ UNCOMMITTED hay NOLOCK. Thơng thường, sử dụng chế độ mặc định của SQL Server là READ COMMITTED. Nếu khơng muốn nội dung của 1 đơn vị dữ liệu bị thay đổi trong suốt quá trình diễn ra giao tác thì sử dụng REPEATABLE READ 76
- Xác định chiến lược sử dụng Lock và Isolation Level. Một số gợi ý sau: Nếu khơng muốn xuất hiện những dịng dữ liệu phantoms thì sử dụng SERIALIZABLE. Nếu dự kiến khĩa trên rất nhiều dịng dữ liệu trong 1 bảng thì nên sử dụng TABLOCK hay TABLOCKX. Nếu dự kiến cập nhật 1 đơn vị dữ liệu sau khi đọc nội dung đơn vị dữ liệu này thì nên sử dụng UPDLOCK. 77
- Bài tập Giả sử sau khi sự cố hệ thống xảy ra, DBMS được khởi động lại với tập tin nhật ký như sau: Hãy mơ tả tiến trình khơi phục của DBMS dựa trên tập tin nhật ký này theo phương pháp: - Undo logging 78 - Redo logging
- Giả sử sự cố hệ thống xảy ra ngay sau các bước trên thì tiến trình khơi phục của DBMS như thế nào khi dùng phương pháp i. Undo logging 79 ii. Redo logging
- Bài tập Giả sử sau khi sự cố hệ thống xảy ra, DBMS được khởi động lại với tập tin nhật ký như sau: Hãy mơ tả tiến trình khơi phục của DBMS dựa trên tập tin nhật ký này theo phương pháp Undo/Redo logging. 80