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
80 trang |
Chia sẻ: NamTDH | Lượt xem: 1463 | Lượt tải: 3
Bạn đang xem trước 20 trang nội dung tài liệu An toàn dữ liệu và khôi phục sự cố, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ố
9
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)
Khôi phục sự cố từ một giao tác
T1 T2
Lock(A)
Read(A)
A=A+1
Write(A)
Lock(B)
Unlock(A)
Read(B)
B=B/A
Lock(A)
Read(A)
A=A+2
Write(A)
Unlock(A)
Commit
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
mà T đã làm thay đổi (A)
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
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 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
14
Full Backup
Differential Backup
Log Backup
Full Backup
15
Cú pháp
Backup database TO
Ví dụ
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\Backup\AdventureWorks.bak’
Differential Backup
16
Cú pháp:
Backup database TO
WITH DIFFERENTIAL
Ví dụ
BACKUP DATABASE AdventureWorks
TO DISK = ’C:\Backup\AdventureWorks.bak’
WITH DIFFERENTIAL
Log Backup
17
Cú pháp:
Backup log TO
WITH NO_TRUNCATE
BACKUP LOG AdventureWorks
TO DISK= 'C:\SQL\Backup\ AdventureWorks.bak'
WITH NO_TRUNCATE
Phục hồi csdl (restore databse)
18
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
Ví dụ
19
backup database qlsv to disk='d:\qlsv.bak'
restore database qlsv from disk ='d:\qlsv.bak'
Các cơ chế an toàn dữ liệu
20
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
Kiểm soát quyền truy cập CSDL
21
Kiểm soát quyền truy cập CSDL
22
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.
Kiểm soát quyền truy cập CSDL
23
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
Kiểm soát quyền truy cập CSDL
24
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 đó.
Kiểm soát quyền truy cập CSDL
25
Xác nhận người dùng
Phân quyền
Xác nhận người dùng
26
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.
Xác nhận người dùng
27
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ọ.
Xác nhận người dùng
28
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.
Xác nhận người dùng
29
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.
Phân quyền người dùng
30
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
Nhà quản trị hệ thống
(System administrator)
31
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
Người chủ CSDL
(database owner)
32
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.
Tạo login đăng nhập
33
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
Khai báo database user bằng phát biểu SQL
34
Cú pháp
Create user user_name
For Login
Ví dụ:
USE QLSV
CREATE USER lmn
FOR LOGIN minhnguyen
Cú pháp tạo tài khoản đăng nhập
35
Dùng sp
EXEC sp_addlogin
[@login= ]
[,@password= ]
[,@defdb= ]
Ví dụ
Use QLSV
EXEC sp_addlogin ‘user1’, ‘123’
Thay đổi password
36
Cú pháp:
EXEC sp_password
[@old= ]
[,@new= ]
[,@loginname= ]
EXEC sp_password ‘123’, ‘nguyen’, ‘user1’
Cấp quyền truy cập vào CSDL
37
Cú pháp
EXEC sp_grantdbaccess
[@loginname= ]
[,@name_in_db= ]
Ví dụ:
Use qlsv
EXEC sp_grantdbaccess ‘user1’, ‘pvn’
Xóa quyền truy cập vào CSDL
38
Cú pháp
EXEC sp_revokedbaccess
[@loginname=
Ví dụ
EXEC sp_revokedbaccess ‘user1’
Quyền thực hiện trên các đối tượng của CSDL
39
Cấp quyền tạo đối tượng
Cú pháp
Grant to [tên user]
Ví dụ: Cấp quyền tạo view
Use QLSV
GRANT create table, create view
To pvn
Cấm quyền tạo đối tượng
Deny to [tên user]
Ví dụ:
DENY create table To pvn
- Create database
- Create table
- Create View
- Create proc
- Create rule
- Create default
- Backup database
- Backup log
Quyền xử lý dữ liệu
40
Cấp quyền xử lý dữ liệu
Grant <ALL| các quyền
ON
TO
Ví dụ:
GRANT INSERT, UPDATE, DELETE
ON sinhvien
TO lmn
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
- Select
- Update
- Insert
- Delete
- References
- Execute
Quyền xử lý dữ liệu (tt)
41
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
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ù.
Vuøng ñeäm daønh
cho nhaät kyù
Vuøng ñeäm daønh
cho CSDL
Module quaûn lyù
phuïc hoài döõ lieäu
Module quaûn lyù
vuøng ñeäm
Nhaät kyù
CSDL
CSDL NK
Boä nhôù trong Heä QTCSDL Boä nhôù ngoaøi
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ữ
Checkpoint
T
U
scan
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
Checkpoint
T U
V
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ụ
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 T
1
khoâng caàn phaûi
laøm laïi (T
1
laø an toaøn). T
3
chæ bò huûy moät phaàn haønh ñoäng sau tk vaø laøm
laïi. T
5
bò huûy ñeå laøm laïi. T
2
vaø T
4
ñöôï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.
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
T1
T2
T3
t1 t2 t4 t3
T4
T5
tk
Thôøi ñieåm xaûy ra söï coá Check point
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 <T, X,
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ụ
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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
12
Flush log
Flush log52
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
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
T3
T4
T1
Sự cố
T2
Bỏ qua
Khôi phục dữ
liệu
54
Ví 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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
12
Flush log
Flush log Không cần khôi phục
A và B
Khôi phục A=8 và
B=8
A và B không thay
đổi nên không cần
khôi phục
55
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 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ụ
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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
Flush log
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)
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 đã hoàn tất
T2 và T4 chưa kết thúc
59
T3
T4
T1
Sự cố
T2 Bỏ qua
Thực hiện lại
Ví 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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
Flush log
Thực hiện lại T, ghi
A=16 và B=16
Thực hiện lại T, ghi
A=16 và B=16
Xem nhưT chưa hoàn
tất, A và B không có
thay đổi
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ụ
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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
Flush log
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
T3
T4
T1
Sự cố
T2 Khôi
phụcThực hiện lại
64
Ví 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 BDisk A
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
Bước
1
2
3
4
5
Mem Log
6
7
8
9
10
11
Flush log
đã được
ghi xuống đĩa, thực
hiện lại T, A=16 và
B=16
T chưa kết thúc, khôi
phục A=8
65
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)
T1
T2
T3
T4
T5
Ñieåm phuïc hoài heä thoáng
Ñieåm xaûy ra söï coá
(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.
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
70
Quản lý tranh chấp sử dụng 2 cơ chế
Quản lý việc đọc dữ liệu
Khóa
Cài đặt trên SQL server (tt)
71
Quản lý việc đọc dữ liệu có 5 mức
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:
76
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
Xác định chiến lược sử dụng Lock và
Isolation Level. Một số gợi ý sau:
77
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.
Bài tập
78
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
79
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
Bài tập
80
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.
Các file đính kèm theo tài liệu này:
- chuong_iv_7777.pdf