Przywracanie danych z kopii zapasowej

Odtwarzanie, weryfikacja backupów i planowanie RTO/RPO · INF.03

Teoria Planowanie Odzyskiwania po Awarii (DRP)

Proces przywracania danych (Recovery) jest kluczowym elementem Planu Ciągłości Działania (BCP). Brak możliwości szybkiego i poprawnego odtworzenia danych oznacza, że sam backup jest praktycznie bezużyteczny.

Odzyskiwanie obejmuje nie tylko pliki, ale także pełną funkcjonalność systemu, aplikacji oraz dostęp użytkowników do usług.

Kluczowe metryki: RTO i RPO

RTO i RPO definiują, jak bardzo organizacja może „pozwolić sobie” na przestój i utratę danych, co bezpośrednio wpływa na wybór częstotliwości oraz rodzaju kopii zapasowych.[web:8]

  • RTO (Recovery Time Objective) – maksymalny akceptowalny czas od awarii do przywrócenia działania systemu do akceptowalnego poziomu.
  • RPO (Recovery Point Objective) – maksymalny akceptowalny okres utraty danych mierzony wstecz od momentu awarii (np. 15 minut).

Weryfikacja kopii zapasowej

Regularna weryfikacja backupów jest niezbędna, aby uniknąć sytuacji, w której kopia istnieje, ale nie nadaje się do użycia.[web:6]

  1. Integralność pliku – użycie sum kontrolnych (np. MD5, SHA256) do sprawdzenia, czy plik nie został uszkodzony podczas kopiowania czy transferu.
  2. Kompletność struktury – odtworzenie bazy na serwerze testowym i sprawdzenie poprawności tabel, indeksów, procedur itp.
  3. Spójność danych – kontrola liczników rekordów, sum kontrolnych pól numerycznych lub kluczowych zestawień raportowych.

Ćwiczenie 1 Przywracanie bazy MySQL i weryfikacja danych

Przywróć bazę szkola z pliku szkola_backup.sql do testowej bazy szkola_test. Następnie zweryfikuj, czy tabela KURS_PRZEDMIOTY zawiera oczekiwaną liczbę rekordów.

Procedura odtwarzania:
  1. Utwórz bazę docelową: CREATE DATABASE szkola_test;
  2. Przywróć dane z pliku SQL do bazy szkola_test.
  3. Weryfikacja: SELECT COUNT(*) FROM KURS_PRZEDMIOTY; (np. 150 rekordów).
# Tworzenie nowej bazy docelowej
mysql -u root -p -e "CREATE DATABASE szkola_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"

# Przywracanie bazy danych z pliku
mysql -u root -p szkola_test < szkola_backup.sql

# Weryfikacja liczby rekordów
mysql -u root -p szkola_test -e "SELECT COUNT(*) AS liczba_rekordow FROM KURS_PRZEDMIOTY;"
            

Ćwiczenie 2 Planowanie strategii Backup/Recovery

System finansowy wymaga RTO = 1 godzina i RPO = 15 minut. Dobierz strategię backupu i wskaż element kluczowy dla spełnienia wymagań RPO.[web:8]

Planowanie kryteriów:
Kryterium Wymaganie Wpływ na strategię
RTO 1 godzina Wymaga automatyzacji procesu odzyskiwania i gotowego środowiska zapasowego.
RPO 15 minut Wymaga bardzo częstych backupów dzienników transakcji lub replikacji.
Strategia dla RTO = 1h i RPO = 15min:
1. Pełny backup bazy danych: raz dziennie (np. w nocy).
2. Backup logów transakcji lub backupy przyrostowe: co 10–15 minut.
3. Klucz do osiągnięcia niskiego RTO:
   - utrzymywanie serwera zapasowego (standby),
   - replikacja bazy w trybie niemal rzeczywistym,
   - zautomatyzowany skrypt przełączenia na serwer zapasowy.
            

Ćwiczenie 3 Weryfikacja integralności pliku

Plik archiwum_logi_bazy.tar.gz został przesłany przez sieć. Sprawdź, czy nie został uszkodzony, porównując jego sumę MD5 z wartością zapisaną w dokumentacji (np. 1a2b3c4d...).[web:8]

Zadanie: Wygeneruj sumę kontrolną MD5 dla pliku i porównaj z wartością referencyjną.
  1. Wykonaj polecenie: md5sum archiwum_logi_bazy.tar.gz.
  2. Jeśli suma jest identyczna z dokumentacją, plik zachował integralność.
# Generowanie sumy kontrolnej MD5
md5sum archiwum_logi_bazy.tar.gz

# Przykład wyniku:
# 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d  archiwum_logi_bazy.tar.gz
            

Quiz Sprawdź swoją wiedzę

Odpowiedz na pytania, a następnie porównaj swoje odpowiedzi z proponowanym rozwiązaniem.

  1. Jakie są dwa kluczowe testy, które należy wykonać po pomyślnym odtworzeniu bazy danych?
  2. Która metryka (RTO czy RPO) wpływa bezpośrednio na wymaganą częstotliwość tworzenia kopii zapasowych?
  3. Podaj przykład komendy systemu Linux do szybkiej weryfikacji, czy plik .sql zawiera komendy INSERT (bez wczytywania całego pliku).
  • Test integralności danych (np. COUNT(*) w kluczowych tabelach) oraz test funkcjonalny aplikacji na odtworzonej bazie.
  • Na częstotliwość tworzenia kopii zapasowych wprost wpływa metryka RPO.
  • Na przykład: grep "INSERT INTO" nazwa_pliku.sql lub head -n 100 nazwa_pliku.sql.

Checklista Podsumowanie umiejętności

Upewnij się, że potrafisz wykonać poniższe czynności samodzielnie.

  • ✅ Poprawnie wykonuję przywracanie bazy danych z pliku .sql w MySQL.
  • ✅ Weryfikuję integralność plików kopii za pomocą narzędzi kryptograficznych (np. md5sum, sha256sum).
  • ✅ Potrafię zinterpretować i zastosować metryki RTO i RPO w planowaniu strategii Disaster Recovery.