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... Khôi phục s
Trang 1Chương IV An tòan dữ liệu và
khôi phục sự cố
Trang 2Nộ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
Trang 3Giớ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
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,
Lỗi lập trình của các giao tác (transaction bug)
Trang 4 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)
Trang 5Sự cố do nhập liệu sai
Trang 6Sự 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
Trang 8Sự cố trên thiết bị lưu trữ (media failure)
được dữ liệu ở bộ nhớ ngòai
Trang 9Mụ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)
Trang 10Khôi phục sự cố từ một giao tác
Lock(A) Read(A) A=A+1 Write(A) Lock(B) Unlock(A)
Read(B)
Lock(A) Read(A) A=A+2
Write(A)
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
Trang 11Các phương pháp phục hồi dữ liệu
Trang 12Lưu thông tin trên đĩa cứng
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
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ộ
Trang 13Tạ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ờ
Trang 14Các loại Backup
Trang 17Log Backup
Cú pháp:
Backup log <tên database> TO <tên logic backup>
WITH NO_TRUNCATE
BACKUP LOG AdventureWorks
TO DISK= 'C:\SQL\Backup\ AdventureWorks.bak' WITH NO_TRUNCATE
Trang 18Phục hồi csdl (restore databse)
Restore database <tên database>
from <thiết bị backup>
Ví dụ:
RESTORE DATABASE AdventureWorks
FROM DISK = ‘C:\Backup\AdventureWorks.bak’
Phục hồi giao tác
Restore log <tên database>
from <thiết bị backup>
Trang 19Ví dụ
backup database qlsv to disk ='d:\qlsv.bak'
restore database qlsv from disk ='d:\qlsv.bak'
Trang 20Các cơ chế an toàn dữ liệu
Khung nhìn (view) như các cơ chế bảo vệ
Mã hóa dữ liệu
Trang 21Kiểm soát quyền truy cập CSDL
Trang 22Kiể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
đượ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.
Trang 23Kiểm soát quyền truy cập CSDL
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
Trang 24Kiể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.
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 đó.
nào đó hay xóa nhân viên khỏi một phòng nào đó.
Trang 25Kiểm soát quyền truy cập CSDL
Trang 26Xá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.
Trang 27Xác nhận người dùng
Các DBMS phải đảm bảo không cho phép user thựchiện bấy kỳ thao tác nào nếu không được phép Ngườiquả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ọ
Trang 28- Sửa đổi lược đồ và tổ chức vật lý.
- Cấp quyền user để truy xuất dữ liệu.
Trang 29Xá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.
Trang 30Phân quyền người dùng
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
Trang 31Nhà 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
Trang 32Ngườ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.
Trang 33Tạo login đăng nhập
Tạo login bằng phát biểu SQL
Ví dụ:
Liệt kê danh sách login
Select name, createdate
Trang 34Khai báo database user bằng phát biểu SQL
Cú pháp
For Login <Tên login>
Ví dụ:
CREATE USER lmn FOR LOGIN minhnguyen
Trang 35Cú 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
Trang 36Thay đổi password
Cú pháp:
EXEC sp_password [@old= <‘old password’>]
[,@new= <‘new password’>]
[,@loginname= <‘login’>]
EXEC sp_password ‘123’, ‘nguyen’, ‘user1’
Trang 37Cấp quyền truy cập vào CSDL
Trang 38Xóa quyền truy cập vào CSDL
Trang 39Quyền thực hiện trên các đối tượng của CSDL
Cấp quyền tạo đối tượng
Cú pháp
Grant <all | các quyền > 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 <all | các quyền > to [tên user]
Trang 40Quyền xử lý dữ liệu
Grant <ALL| các quyền
ON <table hay view>
Deny <all | các quyền > on <bảng, view,…>to [tên user]
Trang 43 Những giá trị đã cập nhật xuống CSDL sẽ phải cập nhật lần nữa
Trang 44Tạo điểm phục hồi hệ thống
(system check point)
đã đượ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ý
Vùng đệm dành
cho nhật ký
Module quản lý phục hồi dữ liệu Nhật ký
CSDL
Trang 45Điểm lưu trữ đơn giản
Hoặc là hoàn tất (commit)
Hoặc là hủy bỏ (abort)
và ghi mẫu tin <commit T> hay <abort T> vào nhật ký
Trang 46Đ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
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ữ
T
U
scan
Trang 47Điểm lưu trữ linh động
Mẫu tin <start ckpt (T1, T2, …, Tk)>
Mẫu tin <end ckpt>
V
Trang 48Điểm lưu trữ linh động (tt)
(1) Tạo mẫu tin <start ckpt (T1, T2,…, Tk)> và ghi xuống đĩa
T1, T2, …, Tk là những giao tác đang thực thi
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
Trang 49Ví dụ
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.
T1 T2 T3
t1 t2 t4 t3
T4 T5
tk
Thời điểm xảy ra sự cố
Check point
Trang 50An tòan logic dựa trên các nhật ký
Trang 51 Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị cũ
<T, X, v>
v> đã phải có trên đĩa
tất cả các cập nhật của T đã được phản ánh lên đĩa
Trang 52Ví 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 53Undo-Logging (tt)
Có <start Ti> trong nhật ký nhưng
Không có <commit Ti> hay <abort Ti> trong nhật ký
(2) Với mỗi mẫu tin <Ti, X, v> 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)
Trang 55Ví dụ
Hành động
Read(A,t)
t:=t*2 Write(A,t)
16 16
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 56Phương pháp Redo-Logging
Mẫu tin của thao tác cập nhật chỉ ghi nhận lại giá trị mới
<T, X, w>
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 <T, X, w> và <commit T>
Trang 57Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t)
t
8 16 16 8 16 16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
8 8 16
8 8 8 8 8 8
8 8 8 8 8 8
Trang 58Phương pháp Redo-Logging (tt)
(1) Gọi S là tập các giao tác hoàn tất
Có mẫu tin <commit Ti> trong nhật ký
(2) Với mỗi mẫu tin <Ti, X, w> trong nhật ký
(theo thứ tự cuối tập tin đến đầu tập tin)
Trang 60Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t)
Output(A)
t
8 16 16 8 16 16
16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16
8 8 16
16
8 8 8 8 8 8
16
8 8 8 8 8 8
Trang 61Phương pháp Undo/Redo-Logging
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
<T, X, v, w>
nhật <T, X, v, w> đã phải có trên đĩa
Trang 62Ví dụ
Hành động
Read(A,t) t:=t*2 Write(A,t) Read(B,t) t:=t*2 Write(B,t)
Output(A)
t
8 16 16 8 16 16
16
Mem A Mem B Disk A Disk B
8 8 16 16 16 16
16
8 8 16
16
8 8 8 8 8 8
16
8 8 8 8 8 8
8
Bước 1 2 3 4 5
Mem Log
<start T>
6 7 8 9
Flush log
<T, A, 8, 16>
<T, B, 8, 16>
Trang 63Phương pháp Undo/Redo-Logging (tt)
Theo thứ tự từ cuối nhật ký đến đầu nhật ký
Theo thứ tự từ đầu nhật ký đến cuối nhật ký
Trang 65Ví dụ
Hành động
Read(A,t)
t:=t*2 Write(A,t)
8 8 16 16 16 16 16
8 8 16 16
8 8 8 8 8 8 16
8 8 8 8 8 8 8
Trang 66Khơ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.
Trang 67Khơi phục sau sự cố cĩ hệ thống (tt)
T1 T2 T3 T4 T5
Điểm phục hồi hệ thống
Điểm xảy ra sự cố
chế này dựa trên nhật ký trước, các bản sao dữ liệuvà điểm phục hồi hệ thống
T1 đã được xác nhận T2 đã hoàn tất việc ghi lên bộ nhớ ngoài (đã
Trang 68Khơi phục sau sự cố cĩ hệ thống (tt)
ra sau điểm phục hồi thì sẽ được làm lại
thì được làm lại
thì phải được hủy bỏ và làm lại từ đầu
được làm lại T4 được thực hiện lại T5 được thựchiện sau điểm phục hồi và còn dở dang nên đượchủy và làm lại từ đầu
Trang 69Khơi phục sau sự cố cĩ hệ thống (tt)
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à 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
Trang 70Cài đặt trên SQL server
Khóa
Trang 71Cài đặt trên SQL server (tt)
Quản lý việc đọc dữ liệu có 5 mức
Trang 72Cài đặt trên SQL server (tt)
Trang 73Cài đặt trên SQL server (tt)
Trang 74Cài đặt trên SQL server (tt)
Trang 75Cài đặt trên SQL server (tt)
Trang 76Xá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
Trang 77Xá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
Trang 79 Giả sử sự cố hệ thống xảy ra ngay sau các bước trên thì tiến trình
Trang 80Bà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: