DBMS phân tán - Phục hồi cơ sở dữ liệu
Để phục hồi từ lỗi cơ sở dữ liệu, hệ thống quản lý cơ sở dữ liệu sử dụng một số kỹ thuật quản lý phục hồi. Trong chương này, chúng ta sẽ nghiên cứu các cách tiếp cận khác nhau để khôi phục cơ sở dữ liệu.
Các chiến lược điển hình để khôi phục cơ sở dữ liệu là:
Trong trường hợp lỗi mềm dẫn đến sự không nhất quán của cơ sở dữ liệu, chiến lược khôi phục bao gồm hoàn tác hoặc khôi phục giao dịch. Tuy nhiên, đôi khi, việc thực hiện lại giao dịch cũng có thể được áp dụng để khôi phục về trạng thái nhất quán của giao dịch.
Trong trường hợp lỗi khó dẫn đến hư hỏng nhiều đối với cơ sở dữ liệu, các chiến lược khôi phục bao gồm việc khôi phục bản sao trước đây của cơ sở dữ liệu từ bản sao lưu lưu trữ. Trạng thái hiện tại hơn của cơ sở dữ liệu có được thông qua việc thực hiện lại các hoạt động của các giao dịch đã cam kết từ nhật ký giao dịch.
Phục hồi sau khi mất điện
Mất điện làm mất thông tin trong bộ nhớ không liên tục. Khi có điện trở lại, hệ điều hành và hệ quản trị cơ sở dữ liệu khởi động lại. Trình quản lý khôi phục bắt đầu khôi phục từ nhật ký giao dịch.
Trong trường hợp chế độ cập nhật ngay lập tức, trình quản lý khôi phục thực hiện các hành động sau:
Các giao dịch nằm trong danh sách hoạt động và danh sách không thành công sẽ được hoàn tác và ghi trên danh sách hủy bỏ.
Các giao dịch nằm trong danh sách trước khi cam kết được thực hiện lại.
Không có hành động nào được thực hiện đối với các giao dịch trong danh sách cam kết hoặc hủy bỏ.
Trong trường hợp chế độ cập nhật hoãn lại, trình quản lý khôi phục thực hiện các hành động sau:
Các giao dịch nằm trong danh sách hoạt động và danh sách không thành công được ghi vào danh sách hủy bỏ. Không có thao tác hoàn tác nào được yêu cầu vì các thay đổi vẫn chưa được ghi vào đĩa.
Các giao dịch nằm trong danh sách trước khi cam kết được thực hiện lại.
Không có hành động nào được thực hiện đối với các giao dịch trong danh sách cam kết hoặc hủy bỏ.
Phục hồi sau lỗi đĩa
Lỗi đĩa hoặc sự cố cứng gây mất toàn bộ cơ sở dữ liệu. Để khôi phục sau sự cố cứng này, một đĩa mới được chuẩn bị, sau đó hệ điều hành được khôi phục và cuối cùng cơ sở dữ liệu được khôi phục bằng cách sử dụng sao lưu cơ sở dữ liệu và nhật ký giao dịch. Phương pháp khôi phục là giống nhau đối với cả chế độ cập nhật tức thì và cập nhật hoãn lại.
Trình quản lý khôi phục thực hiện các hành động sau:
Các giao dịch trong danh sách cam kết và danh sách trước khi cam kết được thực hiện lại và ghi vào danh sách cam kết trong nhật ký giao dịch.
Các giao dịch trong danh sách hoạt động và danh sách không thành công sẽ được hoàn tác và ghi vào danh sách hủy bỏ trong nhật ký giao dịch.
Kiểm tra
Checkpointlà thời điểm tại đó bản ghi được ghi vào cơ sở dữ liệu từ bộ đệm. Do đó, trong trường hợp hệ thống gặp sự cố, người quản lý khôi phục không phải thực hiện lại các giao dịch đã được cam kết trước trạm kiểm soát. Kiểm tra định kỳ rút ngắn quá trình khôi phục.
Hai loại kỹ thuật kiểm tra là:
- Kiểm tra nhất quán
- Kiểm tra mờ
Kiểm tra nhất quán
Kiểm tra nhất quán tạo ra một hình ảnh nhất quán của cơ sở dữ liệu tại điểm kiểm tra. Trong quá trình khôi phục, chỉ những giao dịch ở phía bên phải của điểm kiểm tra cuối cùng mới được hoàn tác hoặc làm lại. Các giao dịch ở phía bên trái của trạm kiểm soát nhất quán cuối cùng đã được cam kết và không cần phải xử lý lại. Các hành động được thực hiện để kiểm tra là:
- Các giao dịch đang hoạt động tạm thời bị đình chỉ.
- Tất cả các thay đổi trong bộ đệm của bộ nhớ chính đều được ghi vào đĩa.
- Bản ghi “điểm kiểm tra” được ghi vào nhật ký giao dịch.
- Nhật ký giao dịch được ghi vào đĩa.
- Các giao dịch bị tạm ngừng được tiếp tục.
Nếu trong bước 4, nhật ký giao dịch cũng được lưu trữ, thì điểm kiểm tra này hỗ trợ khôi phục từ lỗi đĩa và lỗi nguồn, nếu không, nó chỉ hỗ trợ khôi phục khi mất điện.
Kiểm tra mờ
Trong kiểm tra mờ, tại thời điểm kiểm tra, tất cả các giao dịch đang hoạt động được ghi vào nhật ký. Trong trường hợp mất điện, trình quản lý khôi phục chỉ xử lý những giao dịch đang hoạt động trong thời gian kiểm tra và sau đó. Các giao dịch đã được cam kết trước trạm kiểm soát được ghi vào đĩa và do đó không cần phải thực hiện lại.
Ví dụ về Checkpointing
Chúng ta hãy xem xét rằng trong hệ thống, thời gian kiểm tra là kiểm tra và thời gian hệ thống gặp sự cố là chậm. Giả sử có bốn giao dịch T a , T b , T c và T d sao cho -
T a cam kết trước trạm kiểm soát.
T b bắt đầu trước trạm kiểm soát và cam kết trước khi hệ thống gặp sự cố.
T c bắt đầu sau trạm kiểm soát và cam kết trước khi hệ thống gặp sự cố.
T d bắt đầu sau trạm kiểm soát và đã hoạt động tại thời điểm sụp đổ hệ thống.
Tình huống được mô tả trong sơ đồ sau:
Các hành động được thực hiện bởi trình quản lý khôi phục là:
- Không có gì được thực hiện với T a .
- Thực hiện lại giao dịch được thực hiện cho T b và T c .
- Hoàn tác giao dịch được thực hiện cho T d .
Khôi phục giao dịch bằng UNDO / REDO
Việc khôi phục giao dịch được thực hiện để loại bỏ các tác động bất lợi của các giao dịch bị lỗi chứ không phải để khôi phục sau khi bị lỗi. Các giao dịch bị lỗi bao gồm tất cả các giao dịch đã thay đổi cơ sở dữ liệu sang trạng thái không mong muốn và các giao dịch đã sử dụng các giá trị được ghi bởi các giao dịch bị lỗi.
Khôi phục giao dịch trong những trường hợp này là một quy trình gồm hai bước -
HOÀN TẤT tất cả các giao dịch bị lỗi và các giao dịch có thể bị ảnh hưởng bởi các giao dịch bị lỗi.
LÀM LẠI tất cả các giao dịch không bị lỗi nhưng đã được hoàn tác do giao dịch bị lỗi.
Các bước cho hoạt động UNDO là -
Nếu giao dịch bị lỗi đã thực hiện CHÈN, trình quản lý khôi phục sẽ xóa (các) mục dữ liệu được chèn.
Nếu giao dịch bị lỗi đã thực hiện XÓA, trình quản lý khôi phục sẽ chèn (các) mục dữ liệu đã xóa khỏi nhật ký.
Nếu giao dịch bị lỗi đã thực hiện CẬP NHẬT, trình quản lý khôi phục sẽ loại bỏ giá trị bằng cách ghi giá trị trước khi cập nhật từ nhật ký.
Các bước cho hoạt động REDO là -
Nếu giao dịch đã thực hiện CHÈN, trình quản lý khôi phục tạo một chèn từ nhật ký.
Nếu giao dịch đã thực hiện XÓA, trình quản lý khôi phục sẽ tạo xóa khỏi nhật ký.
Nếu giao dịch đã thực hiện CẬP NHẬT, trình quản lý khôi phục sẽ tạo cập nhật từ nhật ký.