Monitoring i utrzymanie Średnio zaawansowany 70 min

Odtworzenie PostgreSQL i test kopii

Odtworzysz zrzut do osobnej bazy testowej i sprawdzisz dane bez naruszania źródła.

Wróć do listy lekcji

1. Krótka teoria

Test odtwarzania ma odpowiedzieć na pytanie, czy kopia pozwala odzyskać użyteczne dane w założonym czasie. Pracuj wyłącznie na fikcyjnych rekordach i w odizolowanym środowisku Compose. Nie kieruj pg_restore do działającej bazy orders. Utwórz nową, pustą bazę orders_restore z szablonu template0; nazwa jednoznacznie odróżnia cel od źródła. Przed odtworzeniem odczytaj spis archiwum pg_restore --list. Format custom z poprzedniej lekcji wymaga pg_restore, a nie psql. Opcja --exit-on-error zatrzymuje proces po błędzie SQL, a --no-owner pomija odtwarzanie właściciela obiektów w teście z innymi rolami. Uprawnienia i rozszerzenia mogą wymagać osobnej kontroli w prawdziwym planie odzyskiwania. Po odtworzeniu sprawdź listę tabel, liczbę i treść przygotowanych wcześniej rekordów backup_probe oraz prosty odczyt aplikacji skierowanej na bazę testową. Zanotuj czas od rozpoczęcia do potwierdzenia działania i porównaj go z RTO. Jeżeli zapisane dwa rekordy nie wracają, test jest nieudany nawet przy kodzie 0 procesu. Ćwiczenie nie obejmuje nadpisania produkcji; taki krok wymaga osobnego runbooka, kontroli uprawnień i decyzji podczas rzeczywistego incydentu.

2. Przykłady komend

test -s ../backups/orders-test.backup

Potwierdza dostępność przygotowanego pliku testowego.

$ test -s ../backups/orders-test.backup
docker compose exec -T app-db pg_restore --list < ../backups/orders-test.backup

Sprawdza spis obiektów przed odtworzeniem.

$ docker compose exec -T app-db pg_restore --list < ../backups/orders-test.backup
docker compose exec -T app-db createdb -U orders -T template0 orders_restore

Tworzy osobną pustą bazę testową bez dotykania orders.

$ docker compose exec -T app-db createdb -U orders -T template0 orders_restore
docker compose exec -T app-db pg_restore --exit-on-error --no-owner -U orders -d orders_restore < ../backups/orders-test.backup

Odtwarza archiwum custom wyłącznie do nowej bazy testowej.

$ docker compose exec -T app-db pg_restore --exit-on-error --no-owner -U orders -d orders_restore < ../backups/orders-test.backup
docker compose exec -T app-db psql -U orders -d orders_restore -c '\dt'

Pokazuje tabele utworzone w bazie testowej.

$ docker compose exec -T app-db psql -U orders -d orders_restore -c '\dt'
docker compose exec -T app-db psql -U orders -d orders_restore -c 'SELECT count(*) FROM backup_probe;'

Porównuje liczbę fikcyjnych rekordów z liczbą przed zrzutem.

$ docker compose exec -T app-db psql -U orders -d orders_restore -c 'SELECT count(*) FROM backup_probe;'
docker compose exec -T app-db psql -U orders -d orders_restore -c 'SELECT id, label FROM backup_probe ORDER BY id;'

Potwierdza treść dwóch przygotowanych rekordów testowych.

$ docker compose exec -T app-db psql -U orders -d orders_restore -c 'SELECT id, label FROM backup_probe ORDER BY id;'

3. Zadanie praktyczne

W lekcji o backupie przygotowano tabelę backup_probe(id, label) z dwoma fikcyjnymi wierszami. Odczytaj archiwum, utwórz wyłącznie nową bazę orders_restore i odtwórz do niej zrzut. Porównaj liczbę oraz treść rekordów z notatką sprzed kopii. Skieruj osobną instancję ćwiczeniowej aplikacji na bazę testową i sprawdź jeden odczyt; nie zmieniaj połączenia działającej instancji. Zapisz czas testu, wynik i ewentualne błędy. Jeśli baza docelowa już istnieje, przerwij ćwiczenie i użyj innej nowej nazwy zamiast czyścić lub nadpisywać dane.

4. Typowe błędy

  • Odtwarzanie do tej samej bazy, z której wykonano kopię.
  • Użycie psql do archiwum custom zamiast pg_restore.
  • Ignorowanie błędów pg_restore i ocenianie tylko obecności tabel.
  • Sprawdzenie liczby rekordów bez porównania ich treści.
  • Testowanie aplikacji przez zmianę połączenia działającej instancji.

5. Podsumowanie

Sprawdzony backup da się odtworzyć do pustej, odizolowanej bazy. Wynik ocenia się przez błędy procesu, schemat, oczekiwane rekordy, odczyt aplikacji i czas potrzebny na cały test. Źródłowa baza pozostaje nietknięta.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie