Khác biệt giữa các tùy chọn RECOVERY, NORECOVERY, STANDBY khi phục hồi...

Khác biệt giữa các tùy chọn RECOVERY, NORECOVERY, STANDBY khi phục hồi SQL Server

Lệnh RESTORE DATABASE (và RESTORE LOG) khi thực thi kết hợp với một trong ba tùy chọn RECOVERY, NORECOVERY hoặc STANDBY sẽ tạo ra kết quả phục hồi khác nhau. Tùy tình huống bạn có thể sử dụng một trong ba tùy chọn này khi phục hồi SQL Server.

Bài viết bên dưới giúp bạn nắm rõ sự khác biệt và cách sử dụng 3 tùy chọn này.

RECOVERY

Khi phục hồi với tùy chọn RECOVERY, sau khi tiến hành rollforward các commited transaction, SQL Server sẽ tiến hành rollback các uncommited transaction đang có trong bản sao lưu hiện tại (bản sao lưu mà bạn đang tiến hành phục hồi). Vì thế, sau khi lệnh RESTORE DATABASE/LOG với tùy chọn RECOVERY kết thúc, bạn không thể phục hồi thêm bất kỳ bản sao lưu nào sau đó. Nghĩa là quá trình phục hồi hoàn tất hoàn toàn nên người dùng có thể truy xuất như một database bình thường.

Database sau khi phục hồi nếu chưa phải là database bạn cần, và do đó bạn muốn tiếp tục phục hồi từ các bản sao lưu Differential/Transaction Log kế tiếp sau đó, bạn phải tiến hành lại quá trình phục hồi từ đầu (bắt đầu lại từ bản sao lưu Full trước đó).

  • Database có thể sử dụng sau khi phục hồi
  • Rollback các uncommited transaction
  • Không thể tiếp tục phục hồi sau đó

Bạn sử dụng tùy chọn RECOVERY theo cú pháp sau:

RESTORE DATABASE zBackupLabERP
FROM DISK = ‘C:\SQLBackup\zBackupLabERP_Full.bak’
WITH RECOVERY
GO
Lưu ý; RECOVERY là tùy chọn mặc định của lệnh RESTORE DATABASE (và RESTORE LOG). Nên nếu bạn không chỉ định rõ NORECOVERY hay STANDBY thì tùy chọn được sử dụng là RECOVERY.

NORECOVERY

Với tùy chọn này,  sau khi rollfoward các commited transaction, SQL Server không tiến hành rollback các uncommited transaction. Do đó, bạn có thể tiếp tục phục hồi từ các bản sao lưu Differential/Transaction Logkế tiếp sau đó. Sau khi phục hồi với tùy chọn này, database ở Restore Mode nên người dùng không thể truy cập database. Chỉ đến khi bạn tiến hành thao tác phục hồi cuối cùng với tùy chọn RECOVERY thì quá trình phục hồi mới hoàn tất và database có thể sử dụng.

  • Database không thể sử dụng sau khi phục hồi (vẫn ở Restore Mode)
  • Không rollback các uncommited transaction
  • Có thể tiếp tục phục hồi bằng các bản sao lưu Differential/Transaction Log kế tiếp

Bạn sử dụng tùy chọn NORECOVERY theo cú pháp sau:

RESTORE DATABASE zBackupLabERP
FROM DISK = ‘C:\SQLBackup\zBackupLabERP_Full.bak’
WITH NORECOVERY
GO

STANDBY

Tùy chọn STANDBY hoạt động tương tự NORECOVERY trong cách phục hồi dữ liệu. Nhưng có điểm khác biệt là có thể truy cập database với chế độ READONLY. Nghĩa là người dùng có thể thực thi lệnh SELECT để truy xuất dữ liệu.

Ở tùy chọn này, các uncommited transaction sẽ được rollback, nhưng đồng thời cũng được lưu vào Standby file (thường được bằng đuôi .TUF – Transaction Undo File) để SQL Server có thể tiếp tục phục hồi database từ các bản sao lưu kế tiếp. Tuy nhiên, bạn chỉ có thể tiến hành thao tác phục hồi nếu không có người dùng nào kết nối đến database.

Tùy chọn STANDBY rất hữu ích khi bạn cần phục hồi database trở về một thời điểm nào đó (Point-in-Time Recovery) nhưng không nhớ chính xác đó là thời điểm nào. Bạn có thể dùng tùy chọn STANDBY (cùng STOPAT) để phục hồi database trở về một thời điểm. Sau đó truy xuất database để xem đã đúng thời điểm bạn cần chưa. Nếu chưa thì tiếp tục phục hồi.

  • Database có thể sử dụng sau khi phục hồi (ReadOnly Mode)
  • Rollback các uncommited transaction và lưu vào Stanby File
  • Có thể tiếp tục phục hồi bằng các bản sao lưu Differential/Transaction Log kế tiếp

Bạn sử dụng tùy chọn STANDBY theo cú pháp sau:

RESTORE DATABASE zBackupLabERP
FROM DISK = ‘C:\SQLBackup\zBackupLabERP_Full.bak’
WITH STANDBY = ‘C:\SQLBackup\TempFiles\zBackupLabERP_Rollback.tuf’
GO

Free eBook: Download ebook 8 lưu ý quan trọng khi sao lưu & phục hồi SQL Server. Những kinh nghiệm hữu ích giúp bạn sao lưu an toàn và đảm bảo khả năng phục hồi khi sự cố mất dữ liệu xảy ra với database SQL Server.