Monitoring i utrzymanie Średnio zaawansowany 65 min

Backup PostgreSQL w kontenerze

Wykonasz i zweryfikujesz logiczny zrzut ćwiczeniowej bazy PostgreSQL uruchomionej przez Compose.

Wróć do listy lekcji

1. Krótka teoria

W ćwiczeniowym Compose usługa app-db przechowuje dane na nazwanym volume. pg_dump tworzy osobny logiczny zrzut jednej bazy; format custom -Fc można później odtworzyć przez pg_restore. Wykonaj polecenie z katalogu z plikiem Compose. Opcja exec -T wyłącza TTY, co jest ważne dla strumienia binarnego kierowanego do pliku na hoście. W powłoce Linux przekierowanie > zapisuje plik po stronie hosta, nie wewnątrz kontenera. Użyj katalogu poza repozytorium, z ograniczonym dostępem. Przed zadaniem sprawdź dostępną przestrzeń oraz uprawnienia. Najpierw utwórz wyłącznie testowe rekordy w bazie orders. Po zrzucie sprawdź kod wyjścia polecenia, rozmiar i listę obiektów przez pg_restore --list. Sama lista nie potwierdza poprawnego odtworzenia; to osobna lekcja. W automatyzacji zapewnij log wyniku, alarm po błędzie, retencję i test odtwarzania. Nie wpisuj hasła do polecenia ani do pliku lekcji: korzystaj z bezpiecznego mechanizmu przekazywania danych uwierzytelniających. pg_dump jednej bazy nie obejmuje automatycznie wszystkich ról ani innych baz klastra.

2. Przykłady komend

docker compose ps app-db

Potwierdza, że ćwiczeniowa baza działa przed zrzutem.

$ docker compose ps app-db
mkdir -p ../backups

Przygotowuje lokalizację testowej kopii poza katalogiem repozytorium.

$ mkdir -p ../backups
df -h ../backups

Sprawdza miejsce w lokalizacji docelowej.

$ df -h ../backups
docker compose exec -T app-db pg_dump -U orders -d orders -Fc > ../backups/orders-test.backup

Zapisuje zrzut ćwiczeniowej bazy w formacie custom na hoście Linux.

$ docker compose exec -T app-db pg_dump -U orders -d orders -Fc > ../backups/orders-test.backup
test -s ../backups/orders-test.backup

Sprawdza, że wynikowy plik nie jest pusty.

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

Czyta katalog obiektów zrzutu bez zmiany bazy.

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

Zapisuje sumę kontrolną pliku do porównania po przeniesieniu.

$ sha256sum ../backups/orders-test.backup

3. Zadanie praktyczne

Na izolowanym środowisku Compose przygotuj w bazie orders tabelę backup_probe z dwoma fikcyjnymi wierszami i zanotuj ich liczbę. Sprawdź miejsce w ../backups, wykonaj pg_dump -Fc i sprawdź kod zakończenia, niepusty plik, spis obiektów oraz sumę kontrolną. Ustal, gdzie przechowywać kopię poza hostem, jak długo ją zachować i jaki alert wysłać po błędzie. Nie używaj danych produkcyjnych ani nie commituj pliku kopii.

4. Typowe błędy

  • Zapis pliku wewnątrz nietrwałej warstwy kontenera zamiast na chronionym hoście.
  • Użycie interaktywnego TTY przy przekierowaniu binarnego formatu custom.
  • Brak kontroli kodu zakończenia pg_dump przed uznaniem pliku za kopię.
  • Przechowywanie zrzutu w repozytorium albo bez ograniczenia dostępu.
  • Założenie, że zrzut jednej bazy obejmuje role i wszystkie bazy klastra.

5. Podsumowanie

Zrzut pg_dump w formacie custom jest oddzielny od volume. Po zapisaniu na hoście sprawdź wynik polecenia, plik i katalog obiektów, a następnie bezpieczne przechowywanie. Pełna weryfikacja wymaga jeszcze odtworzenia na danych testowych.

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