Khơi phụ dữ liệu

Một phần của tài liệu Giáo trình quản trị cơ sở dữ liệu (Trang 145 - 152)

- Dễ dàng để bảo trì ứng dụng: Chúng ta dễ dàng sốt lỗi của View hơn là sốt

9.3.2 Khơi phụ dữ liệu

Trong khi khơi phụ, dữ liệu sao lưu được sao chép trở lại CSDL, khơng giống như quá trình sao lưu, quá trình khơi phục khơng thể được thực hiện trong khi SQL Server đang thực thi. Ngồi ra bảng khơng thể được khơi phục riêng biệt. Nếu một người dùng bị mất dữ liệu, dữ liệu bị mất khơng dễ dàng được khơi phục bởi vì hoạt động khơi phục sẽ khơi phục tồn bộ CSDL hoặc một phần của nĩ. Sự phân biệt dữ liệu của người dùng đơn với tất cả dữ liệu trong CSDL cĩ thể rất khĩ.

Việc khơi phục một bản sao lưu CSDL sẽ trả về CSDL cùng trạng thái của CSDL khi ta thực hiện việc sao lưu. Giao dịch (transaction) nào khơng hồn thành trong khi sao lưu (backup) CSDL được roll back để đảm bảo tính nhất quán CSDL.

Khơi phục một bản sao lưu transaction log là áp dụng lại tất cả giao dịch (transaction) hồn thành trong transaction log đối với CSDL. Khi áp dụng bản sao lưu transaction log, SQL Server đọc trước transaction log, roll forward tất cả các transaction . Khi đến cuối bản sao lưu transaction log, SQL Server roll back tất cả transaction mà khơng hồn thành khi ta bắt đầu thực hiện sao lưu, tạo lại trạng thái

chính xác của CSDL tại thời điểm bắt đầu thực hiện sao lưu.

Ví dụ minh họa sao lưu (backup) và khơi phục (restore) một CSDL cĩ xảy ra giao dịch

(transaction) khi thực hiện sao lưu:

1. Bắt đầu backup: Giả sử CSDL gồm cĩ các dữ liệu ABC, DEF, GHI, JKL, transaction log file khơng cĩ dữ liệu vì khơng cĩ giao dịch nào xảy ra. Khi đang thực hiện sao lưu (backup) được một phần dữ liệu thì xảy ra giao dịch, SQL Server 2000 sẽ ưu tiên cho việc giao dịch trước, việc sao lưu (backup) tạm thời dừng lại.

2. Xảy ra giao dịch (transaction), dữ liệu ABC được thay bằng 123, GHI được thay bằng 456.

3. Khi thực hiện giao dịch (transaction) xong, SQL Server thực hiện tiếp việc sao lưu (backup), sẽ chép phần cịn lại của dữ liệu nhưng dữ liệu đã thay đổi do xảy ra giao dịch.

4. Khi sao lưu xong phần dữ liệu thì sẽ chép tiếp phần transaction log

5. Khi cĩ yêu cầu khơi phục (restore) CSDL , CSDL được khơi phục trước, chép lại tồn bộ CSDL của bản sao lưu CSDL đĩ.

6. Sau đĩ SQL Server sẽ khơi phục tiếp phần transaction log. Trước tiên sẽ roll forward nhưng khi đọc đến dữ liệu thứ ba thì nĩ thấy dữ liệu này đã được thay đổi rồi do đĩ nĩ sẽ roll back ( trả về dữ liệu ban đầu khi chưa thực hiện giao dịch) để nhất quán dữ liệu.

Các phương pháp khơi phục dữ liệu

Loại sao lưu dữ liệu được thực hiện ảnh hưởng đến cách khơi phục.

+ Khơi phục từ sao lưu đầy đủ:khơi phục từ sao lưu đầy đủ là một quá trình khá

đơn giản: bạn chỉ việc khơi phục các tập tin sao lưu bằng Enterprise hoặc T-SQL.

+ Khơi phục từ sao lưu những thay đổi: Để khơi phục từ sao lưu những thay đổi, trước hết bạn phải khơi phục từ sao lưu đầy đủ, sau đĩ khơi phục tất cả những sao lưu những thay đổi đã được tạo từ lần sao lưu đầy đủ gần nhất. Nên nhớ sao lưu những thay đổi được dùng để sao lưu dữ liệu thay đổi từ lần sao lưu đầy đủ gần nhất hoặc sao lưu những thay đổi gần nhất. Phải dùng tùy chọn NORECOVERY trừ phi bạn đang thực hiện khơi phục từ sao lưu đầy đủ gần nhất. Nếu bạn đang khơi phục từ tập tin log giao dịch tiếp tục từ khi sao lưu những thay đổi, bạn cũng phải sao lưu tập tin log hiện thời và áp dụng tất cả những tập tin log thay đổi.

+ Khơi phục từ sao lưu tập tin log giao dịch

Để thực hiện phụ hồi CSDL đưa về trạng thái trước khi bị hư hỏng, trước hết bạn phải khơi phục các tập tin dữ liệu từ sao lưu đầy đủ mới nhất và sau đĩ khơi phục từ sao lưu những thay đổi từ lần sao lưu đầy đủ đĩ. Bạn sao lưu những thay đổi này bằng cách khơi phục tất cả những sao lưu tập tin log giao dịch đã xảy ra từ trước khi hư hỏng hệ thống.

Để đảm bảo bạn khơng bị mất bất kỳ giao dịch mới nhất nào khi bạn khơi phục tập tin log, bạn phải lưu log hiện thời. Nếu bạn quên sao lưu log hiện thời, bạn sẽ mất những thay đổi mới nhất đã được ghi trong log bởi vì hoạt động khơi phục sẽ ghi đè tập tin log giao dịch.

Để sử dụng tập tin log giao dịch khơi phục CSDL về trạng thái trước khi nĩ xảy ra hư hỏng, thực hiện các bước sau:

1. Sao lưu tập tin log giao dịch hiện đang hoạt dộng, sử dụng tùy chọn NO_TRUNCATE.

2. Khơi phục sao lưu đầy đủ mới nhất

3. Khơi phục từ bất kỳ sao lưu những thay đổi nào để đưa CSDL về trạng thái mà khi sao lưu mới nhất được thực hiện.

4. Khơi phục tất cả tập tin log giao dịch từ sao lưu những thay đổi mới nhất để thực hiện lại bất kỳ giao dịch đã xảy ra từ lần sao lưu gần nhất.

5. Khơi phục sao lưu log giao dịch đã thực hiện ở bước 1 để đưa CSDL về trạng thái trước khi xảy ra hư hỏng

Thực hiện khơi phục dữ liệu

Bạn cĩ thể khơi phục dữ liệu bằng cách sử dụng Enterprise Manager hoặc R-SQL, cả 2 phương pháp đều cho cùng kết quả.

Dùng Enterprise Manager

Để khơi phục dữ liệu bằng Enterprise Manager bạn thực hiện các bước sau:

Khơi phục Full database backup bằng EM Thực hiện các bước sau:

1. Kích vào server group, và kích vào server chứa Database muốn backup.

2. Kích Databases, kích phải chuột vào database, trỏ chuột vào All Tasks, sau đĩ kích

Hình 9.8 Cửa sổ Restore database

3. Trong Restore as database box, soạn thảo hoặc chọn tên database nếu muốn thay đổi tên Database mặc định khơng.

4. Kích Database.

5. Trong danh sách First backup to restore, kích vào bản sao lưu muốn được phục hồi(vì cĩ thể cĩ nhiều bản đã được Backup).

6. Trong danh sách Restore, kích vào database muốn được phục hồi.

Mơ tả quá trình thực hiện:

Khơi phục lại database backup là trả về trạng thái của CSDL khi lệnh backup được thực thi. SQL Server tạo lại CSDL theo các bước sau:

o Chép tất cả dữ liệu trong bản sao vào CSDL khơi phục.

o Bất kỳ giao dịch nào khơng hồn thành trong database backup thì được roll back để bảo đảm tính nhất quán dữ liệu.

Quá trình này bảo đảm CSDL sau khi khơi phục là một bản sao của CSDL khi thực hiện sao lưu, trừ những giao dịch khơng hồn thành được roll back. Điều này đảm bảo tính tồn vẹn dữ liệu.

Ngồi ra, để tránh việc cố tình viết đè lên CSDL đã tồn tại, quá trình khơi phục thực hiện kiểm tra an tồn một cách tự động. Quá trình khơi phục khơng thực hiện nếu:

- Tên CSDL khơi phục đã tồn tại trên server và tên CSDL cần khơi phục khơng tương ứng với tên CSDL ghi trong backup set.

- Tên CSDL khơi phục đã tồn tại trên server nhưng dữ liệu bên trong khơng giống với dữ liệu bản sao database backup. Ví dụ: CSDL khơi phục cĩ cùng tên với CSDL đã cĩ trong SQL Server nhưng dữ liệu thì khác ví dụ như cĩ những bảng dữ liệu khác.

- Một hoặc nhiều file yêu cầu tạo tự động bằng thao tác khơi phục (khơng để ý đến CSDL đĩ tồn tại hay chưa) nhưng những file này cĩ cùng tên với CSDL đã tồn tại rồi.

Tuy nhiên việc kiểm tra an tồn cĩ thể khơng cĩ tác dụng nếu cĩ mục đích viết đè.

Khơi phục transaction log backup bằng EM

Thực hiện tương tự như cách Khơi phục Full database backup.

Tuy nhiên, ta cĩ thể xác định được thời điểm nào đĩ muốn khơi phục dữ liệu trong quá khứ.

Khơi phục file hoặc filegroup backup:

File hoặc file group cĩ thể được khơi phục từ database backup hoặc file hoặc file group. Ta khơng cần thiết backup transaction log nếu khơng cĩ thay đổi từ khi sao lưu file hoặc file group.

Ví dụ: Nếu filegroup_b cần khơi phục vì 1 bảng trong filegroup bị hư, ta sẽ: - Khơi phục filegroup_b backup tạo vào ngày thứ năm.

- Áp dụng transaction log backup của filegroup_b.

Dùng T-SQL

Để khơi phục CSDL dùng T-SQL, bạn dùng lệnh RESTORE, tương tự như lệnh BACKUP. Nĩ cĩ thể khĩ dùng lúc đầu nhưng bạn cĩ thể đưa các thủ tục quản trị vào các script để cĩ thể dùng lại nhiều lần sau đĩ.

Ví dụ để khơi phục CSDL Northwind từ thietbi_saoluu_1 bạn đã thực hiện ở trên,

bạn thực hiện như sau:

RESTORE DATABASE Northwind FROM thietbi_saoluu_1

Một phần của tài liệu Giáo trình quản trị cơ sở dữ liệu (Trang 145 - 152)