Backup się wykonał. Czy to oznacza, że bazę można odtworzyć?

2026-10-20 · 2 min

Zielony status joba backupowego odpowiada na jedno pytanie:

Czy polecenie backupu zakończyło się sukcesem?

Nie odpowiada na pytanie:

Czy potrafimy odtworzyć bazę w wymaganym czasie i do właściwego punktu?

Backup z CHECKSUM

1
2
3
4
5
6
BACKUP DATABASE [TwojaBaza]
TO DISK = N'X:\Backup\TwojaBaza_FULL.bak'
WITH
    COMPRESSION,
    CHECKSUM,
    STATS = 10;

RESTORE VERIFYONLY

1
2
3
RESTORE VERIFYONLY
FROM DISK = N'X:\Backup\TwojaBaza_FULL.bak'
WITH CHECKSUM;

Polecenie jest przydatne, ale nie potwierdza kompletności łańcucha, dostępności certyfikatu TDE, czasu restore ani działania aplikacji.

Pełny test restore

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
RESTORE DATABASE [TwojaBaza_RestoreTest]
FROM DISK = N'X:\Backup\TwojaBaza_FULL.bak'
WITH
    MOVE N'TwojaBaza_Data'
        TO N'Y:\RestoreTest\TwojaBaza_RestoreTest.mdf',
    MOVE N'TwojaBaza_Log'
        TO N'Z:\RestoreTest\TwojaBaza_RestoreTest.ldf',
    RECOVERY,
    CHECKSUM,
    STATS = 10;

Po odtworzeniu:

1
2
DBCC CHECKDB (N'TwojaBaza_RestoreTest')
WITH NO_INFOMSGS;

TDE i certyfikaty

Backup zaszyfrowanej bazy może być poprawny, ale niemożliwy do odtworzenia bez certyfikatu i klucza prywatnego.

Plan DR powinien obejmować eksport, bezpieczne przechowywanie i test importu.

RPO i RTO

RPO określa maksymalną akceptowalną utratę danych.

RTO określa maksymalny czas przywrócenia działania.

Backup może być technicznie poprawny, ale strategia nadal może nie spełniać wymagań.

Co mierzyć podczas testu?

  • czas odnalezienia plików,
  • czas kopiowania,
  • czas restore,
  • czas recovery,
  • czas DBCC CHECKDB,
  • czas testu aplikacji,
  • całkowity czas procedury.

Podsumowanie

Backup nie jest potwierdzeniem gotowości.

Gotowość potwierdza dopiero przetestowany restore.

Spokojny DBA regularnie udowadnia, że potrafi odtworzyć dane i zmieścić się w RPO oraz RTO.


Tagi: SQLServer , Backup , Restore , DisasterRecovery , DBA

Marcin Pytlik
LinkedIn · GitHub

Marcin Pytlik

LinkedIn · GitHub