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 toà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 ngoài hệ thống. Các tác nhân tác động từ bên ngoà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 toà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)  Chia sẻ dữ liệu (data sharing)

3

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ệ thống sẽ thực hiện các việc sau:  Giải phóng các đơn vị dữ liệu đang

bị khóa bởi T (Ul(B))

 Reset lại giá trị các đơn vị dữ liệu

Lock(A) Read(A) A=A+1 Write(A) Lock(B) Unlock(A)

mà T đã làm thay đổi (A)

Lock(A) Read(A) A=A+2

Read(B)

 Xét xem có giao tác nào(#T) đã đọc dữ liệu do T ghi không? Nếu có: -T’ chưa commit hủy -T’ commit rồi  thực hiện lại

Write(A) Unlock(A) Commit

Giả sử B/A (A=0) thì hệ thệ bị đứng

B=B/A

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 seõ ñöôïc sao cheùp thaønh nhieàu baûn naèm treân caùc ñóa cöùng khaùc

nhau. Coù 2 phöông phaùp thöïc hieän sao löu döõ lieäu:

 Thuû coâng: Choïn thôøi ñieåm thích hôïp ngöôøi quaûn trò CSDL thöïc hieän coâng cuï hoã trôï cuûa heä thoáng ñeå tieán haønh sao löu (Backup) toaøn boä hay moät phaàn CSDL leân moät vò trí an toaøn trong heä thoáng. Baèng caùch naøy, neáu coù xaûy ra söï coá thì ngöôøi quaûn trò CSDL seõ söû duïng coâng cuï hoã trôï cuûa heä QTCSDL thöïc hieän thao taùc phuïc hoài (Restore) hieän traïng CSDL. Thoâng thöôøng, caùch naøy chæ ñöôïc tieán haønh ñoät xuaát.

 Töï ñoäng: Haàu heát caùc heä QTCSDL ñeàu coù cô cheá töï ñoäng sao löu vaø phuïc hoài döõ lieäu khi coù söï coá. Coù theå yeâu caàu löu laïi maáy baûn sao döõ lieäu cuoái cuøng. Coù theå ñònh kyø cho heä thoáng seõ töï ñoäng sao löu CSDL vaøo moät giôø naøo ñoù trong ngaøy, moät ngaøy cuï theå trong tuaàn hoaëc trong thaùng. Tôùi kyø ñaõ ñònh heä thoáng seõ töï ñoäng tieán haønh vieäc sao löu. Moät khi coù söï coá heä QTCSDL seõ töï ñoäng phuïc hoài laïi CSDL töø caùc phieân baûn löu môùi nhaá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 toàn dữ liệu  Kiểm soá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 soát quyền truy cập CSDL

21

Kiểm soát quyền truy cập CSDL

 User được phép truy xuất không điều kiện tới toà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 soá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 soát quyền truy cập CSDL  User có thể áp dụng các phép toá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 soá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 From

name, createdate syslogins

33

Khai báo database user bằng phát biểu SQL

user

user_name

 Cú pháp Create For Login

QLSV

 Ví dụ: USE 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= <‘login’>] [,@password= <‘password’>] [,@defdb= <‘database’>]

 Ví dụ Use QLSV EXEC sp_addlogin ‘user1’, ‘123’

35

Thay đổi password  Cú pháp:

EXEC sp_password [@old= <‘old password’>] [,@new= <‘new password’>] [,@loginname= <‘login’>]

 EXEC sp_password ‘123’, ‘nguyen’, ‘user1’

36

Cấp quyền truy cập vào CSDL  Cú pháp EXEC sp_grantdbaccess [@loginname= <‘login’>] [,@name_in_db= <‘name in this 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= <‘login’>

 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

- Create table

 Cú pháp Grant to [tên user]

- Create View

 Ví dụ: Cấp quyền tạo view

- Create proc

create table, create view

- Create rule

Use QLSV GRANT pvn To

- Create default

 Cấm quyền tạo đối tượng

- Backup database

Deny to [tên user]

- Backup log

 Ví dụ: DENY

create table

To

pvn

39

Quyền xử lý dữ liệu

- Select

- Update

- Insert

 Cấp quyền xử lý dữ liệu Grant TO

- Delete

INSERT, UPDATE, DELETE

- References

- Execute

 Ví dụ: GRANT ON sinhvien lmn TO

 Cấm quyền tạo đối tượng

Deny on to [tên user] (hoặc dùng revoke)

 Ví dụ: Deny

insert on sinhvien to lmn

40

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 đã hoà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)

 Caùc haønh ñoäng xaûy ra tröôùc ñieåm phuïc hoài heä thoáng laø ñaõ ñöôïc ghi nhaän, sau thôøi ñieåm ñoù laø chöa ñöôïc ghi nhaän, vaãn coøn naèm trong boä nhôù trong. Tröôùc khi keát thuùckyø (session) khai thaùc CSDL, heä thoáng seõ ñoùng caùc taäp tin vaø ghi laïi caùc boä ñeäm vaøo CSDL, vaø ñoàng thôøi ghi vaøo nhaät kyù.

Boä nhôù trong

Heä QTCSDL

Boä nhôù ngoaøi

Nhaät kyù

Module quaûn lyù phuïc hoài döõ lieäu

Vuøng ñeäm daønh cho nhaät kyù

CSDL

Module quaûn lyù vuøng ñeäm

Vuøng ñeäm daønh cho CSDL

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à hoà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

 (5) Tiếp tục nhận các giao tác mới

45

Đ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

scan

Checkpoint

T

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 hoà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

Checkpoint

T U

47

Đ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 hoà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ụ

 Check point

T2

 Thôøi ñieåm xaûy ra söï coá

T1

T4

T3

T5

Ví duï: Coù 5 giao taùc thöïc hieän nhö hình treân. Thôøi ñieåm kieåm tra heä thoáng (System Check Point) laø tk. Khi ñoù caùc haønh ñoäng cuûa T1 khoâng caàn phaûi laøm laïi (T1 laø an toaøn). T3 chæ bò huûy moät phaàn haønh ñoäng sau tk vaø laøm laïi. T5 bò huûy ñeå laøm laïi. T2 vaø T4 ñöôïc heä thoáng töï ñoäng phuïc hoài (döïa vaøo nhaät kyù vaø ñieåm phuïc hoài).

Hai chieán löôïc xaùc nhaän vaø huûy giao taùc:

o Ghi choàng leân döõ lieäu cuõ (Chieán löôïc ñaûm baûo an toaøn loâgic). Thoâng tin

cuõ bò maát.

tk t1 t2 t4 t3

o Ghi döõ lieäu môùi vaøo choã khaùc (Chieán löôïc ñaûm baûo an toaøn vaät lyù). Thoâng tin cuõ chæ bò ñaùnh daáu laø heát hieäu löïc, caùc thoâng tin môùi ñöôïc ghi vaøo moät nôi khaùc

49

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

v> đã 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

được chép trước đó

51

Ví dụ

Bước

Hành động

t

Mem A Mem B

Disk A

Disk B

Mem Log

Read(A,t) t:=t*2 Write(A,t)

8 16 16 8

8 8 16 16

8

8 8 8 8

8 8 8 8

16 16

16 16

8 16

8 8

8 8

Read(B,t) t:=t*2 Write(B,t) Flush log Output(A) Output(B)

16 16

16 16

16 16

16 16

8 16

1 2 3 4 5 6 7 8 9 10 11 12

Flush log

52

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ý

thì

 (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

-Write(X, v) - Output(X)

 (3) Với mỗi Ti  S

 Ghi mẫu tin lên nhật ký

53

Undo-Logging (tt)

 Khi có sự cố

 T1 và T3 đã hoàn tất  T2 và T4 chưa kết thúc

T2

T1

Khôi phục dữ liệu

T4

Bỏ qua

T3

Sự cố

54

Ví dụ

Bước

Hành động

t

Mem A Mem B

Disk A

Disk B

Mem Log

1

8

8

Read(A,t)

8

8

2

16

8

t:=t*2

8

8

3

16

16

Write(A,t)

8

8

4

8

16

8

8

8

Read(B,t)

5

6

16

16

t:=t*2

8

8

8

7

16

16

Write(B,t)

8

8

16

8

A và B không thay đổi nên không cần khôi phục

Flush log

9

16

16

Output(A)

16

8

16

10

16

16

Output(B)

16

16

16

11

12 55

Khôi phục A=8 và B=8

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

 (3) Khi T hoà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

được chép trước đó

56

Ví dụ

Bước

Hành động

t

Mem A Mem B

Disk A

Disk B

Mem Log

1

Read(A,t)

8

8

8

8

2

t:=t*2

16

8

8

8

3

Write(A,t)

16

16

8

8

4

8

16

8

8

8

Read(B,t)

5

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 hoà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) thì  Nếu Ti  S

- 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 đã hoàn tất  T2 và T4 chưa kết thúc

Bỏ qua

T1

Thực hiện lại

T2

T3

T4

Sự cố

59

Ví dụ

Bước

Hành động

t

Mem A Mem B

Disk A

Disk B

Mem Log

1

2

t:=t*2

16

8

8

8

Read(A,t) 8 8 8 8

3

8

16

8

8

8

Read(B,t)

Write(A,t) 16 16 8 8 4

5

7

t:=t*2 16 16 8 8 8 6

8

Write(B,t) 16 16 16 8 8

Flush log 9

Xem nhưT chưa hoàn tất, A và B không có thay đổi

Output(A) 16 16 16 16 8 10

Thực hiện lại T, ghi A=16 và B=16

11 Output(B) 16 16 16 16 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 hoà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

Read(A,t)

8

8

8

8

1

2

3

Write(A,t)

16

16

8

8

4

t:=t*2 16 8 8 8

5

8 16 8 8 8 Read(B,t)

6 t:=t*2 16 16 8 8 8

7 Write(B,t) 16 16 8 16 8

8 Flush log

10

11

16

Output(B)

16

16

16

16

9 Output(A) 16 16 16 16 8

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 đã hoà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 đã hoàn tất T2 và T4 chưa kết thúc

T1

T2

Khôi phục

Thực hiện lại

T3

T4

Sự cố

64

Ví dụ

Bước

Hành động

t

Mem A Mem B

Disk A

Disk B

Mem Log

1

Read(A,t)

8

8

8

8

2

t:=t*2

16

8

8

8

3

Write(A,t)

16

16

8

8

4

8

16

8

8

8

Read(B,t)

5

6

t:=t*2

16

16

8

8

8

7

Write(B,t)

16

16

8

16

8

8

Flush log

9

Output(A)

16

16

16

16

8

10

11

Output(B)

16

16

16

16

16

T chưa kết thúc, khôi phục A=8 đã được

65 ghi xuống đĩa, thực hiện lại T, A=16 và B=16

Khôi phục sau sự cố có hệ thống

 Ñoù laø cô cheá phuïc hoài bình thöôøng sau khi ngöng

hoaït ñoäng heä thoáng. Cô cheá naøy döïa treân ñieåm phuïc hoài bình thöôøng cuoái cuøng. Ñoái vôùi tình huoáng ngöng hoaït ñoäng baát thöôøng, coù 2 cô cheá phuïc hoài: Phuïc hoài noùng vaø Phuïc hoài laïnh.

66

Khôi phục sau sự cố có hệ thống (tt)

(a) Phuïc hoài noùng: Khi heä thoáng ñang hoaït ñoäng. Cô cheá naøy döïa treân nhaät kyù tröôùc, caùc baûn sao döõ lieäu vaø ñieåm phuïc hoài heä thoáng.

 Ñieåm phuïc hoài heä thoáng

 Ñieåm xaûy ra söï coá

T1 T2 T3 T4 T5

T1 ñaõ ñöôïc xaùc nhaän. T2 ñaõ hoaøn taát vieäc ghi leân boä nhôù ngoaøi (ñaõ ñöôïc ghi nhaän) sau thôøi ñieåm phuïc hoài heä thoáng. T3 & T5 laø caùc giao taùc “thua”. T1, T2, T4 laø caùc giao taùc “ñöôïc”.

67

Khôi phục sau sự cố có hệ thống (tt)

 Caùc haønh ñoäng naøo cuûa caùc giao taùc “ñöôïc” xaûy

ra sau ñieåm phuïc hoài thì seõ ñöôïc laøm laïi.

 Caùc haønh ñoäng cuûa T2 xaûy ra sau ñieåm phuïc hoài

thì ñöôïc laøm laïi.

 Caùc haønh ñoäng cuûa T3 xaûy ra sau ñieåm phuïc hoài

thì phaûi ñöôïc huûy boû vaø laøm laïi töø ñaàu.

 Caùc haønh ñoäng naøo xaûy ra sau ñieåm phuïc hoài thì ñöôïc laøm laïi. T4 ñöôïc thöïc hieän laïi. T5 ñöôïc thöïc hieän sau ñieåm phuïc hoài vaø coøn dôû dang neân ñöôïc huûy vaø laøm laïi töø ñaàu.

68

Khôi phục sau sự cố có hệ thống (tt)

 (b) Phuïc hoài laïnh: Xaûy ra do loãi thieát bò (thieát bò hö, thay ñóa khaùc). Thoâng thöôøng thì ngöôøi ta seõ coù moät phieân baûn cuûa CSDL vaø nhaät kyù naèm treân moät ñóa khaùc. Cô cheá naøy döïa treân “nhaät kyù sau”.

 Vì CSDL bò hö neân phaûi döïa vaøo baûn sao CSDL vaø nhaät kyù sau ñeå thöïc hieän laïi moät vaøi haønh ñoäng (nhaät kyù luoân luoân ñöôïc löu thaønh nhieàu baûn treân nhieàu ñóa cöùng khaùc nhau). Cô cheá phuïc hoài laïnh ñöôïc tieán haønh tuøy thuoäc vaøo ngöôøi quaûn trò Cô sôû döõ lieä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 - Redo logging

78

 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 ii. Redo logging

79

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