Wyobraź sobie, że twoja baza danych to ogromne archiwum biblioteczne z tysiącami książek. Pełny backup to jakbyś każdej nocy wysyłał kuriera, żeby skopiował wszystkie książki. A jeśli prawie nic się nie zmieniło? To nie tylko wolne, ale też mocno obciąża transport i zabiera dużo miejsca. I tu właśnie wchodzą przyrostowe i różnicowe podejścia. Pracujemy sprytniej, a nie ciężej, kopiując tylko to, co faktycznie się zmieniło.
Dzisiaj ogarniemy następujące typy backupów:
- Pełny backup: pełna kopia bazy danych.
- Backup przyrostowy: kopiowanie tylko zmian od ostatniego backupu.
- Backup różnicowy: kopiowanie zmian od ostatniego pełnego backupu.
Każde z tych podejść ma swoje plusy, minusy i zastosowania. Sprawdźmy to razem.
Pełny backup
Pełny backup (czyli Full Backup) to kopia zapasowa całej bazy danych w danym momencie. Zawiera zarówno strukturę bazy (tabele, indeksy, schematy), jak i wszystkie dane. Mówiąc prościej, to taki "momentowy snapshot" całej bazy.
Przykład komendy do pełnego backupu:
pg_dump -U username -d database_name -F c -f full_backup.dump
Tutaj:
-U username— nazwa użytkownika PostgreSQL.-d database_name— nazwa bazy danych.-F c— format backupu (custom, wygodny do odtwarzania przezpg_restore).-f full_backup.dump— nazwa pliku, do którego zapisuje się kopia zapasowa.
Więcej o komendzie pg_dump i jej parametrach dowiesz się w kolejnych lekcjach :P
Zalety pełnego backupu:
- Prostota odtwarzania. jeśli coś pójdzie nie tak, pełny backup pozwala szybko przywrócić całą bazę.
- Pełny snapshot danych. można go użyć do przeniesienia całej bazy na inny serwer lub środowisko.
Wady pełnego backupu:
- Rozmiar danych: pełny backup może być bardzo duży, zwłaszcza jeśli masz sporo danych.
- Długi czas wykonania: im więcej danych, tym więcej czasu potrzeba na zrobienie kopii.
- Miejsce na dysku: każdy pełny backup zajmuje osobne miejsce, co może zjadać zasoby storage'u.
Pełny backup warto robić:
- Przy tworzeniu pierwszej kopii zapasowej.
- Przed dużymi zmianami w bazie danych.
- Do długoterminowego archiwum (robisz pełny backup i wrzucasz go do "zimnego" storage'u).
Backupy przyrostowe
Backup przyrostowy (Incremental Backup) zapisuje tylko te pliki, które zmieniły się od ostatniego backupu — czy to pełnego, czy przyrostowego. Dzięki temu można mocno zaoszczędzić miejsce na dysku i przyspieszyć proces backupu.
W PostgreSQL backupy przyrostowe można ogarnąć przez narzędzie pgBackRest — to mocna utilka do robienia i zarządzania backupami PostgreSQL z obsługą pełnej, przyrostowej i różnicowej strategii.
Jak działa pgBackRest?
pgBackRestużywa metadanych i sum kontrolnych plików, żeby wykryć zmiany.- Tylko pliki, które faktycznie się zmieniły, trafiają do backupu przyrostowego.
- Obsługiwane jest automatyczne archiwizowanie plików WAL, co pozwala na odtwarzanie do wybranego punktu w czasie.
Przykład komendy do backupu przyrostowego:
pgbackrest --stanza=main --type=incr backup
Gdzie:
--stanza=main— nazwa konfiguracji (zestaw parametrów dla konkretnej bazy).--type=incr— wskazuje, że robimy backup przyrostowy.
Przed pierwszym backupem przyrostowym musi być zrobiony pełny (--type=full).
Zalety backupów przyrostowych z pgBackRest:
- Oszczędność miejsca: kopiowane są tylko zmienione pliki.
- Szybkie wykonanie: szczególnie przy małej liczbie zmian.
- Automatyczne zarządzanie WAL: pgBackRest sam archiwizuje i stosuje pliki WAL.
- Elastyczność odtwarzania: możesz wybrać punkt przywracania (PITR).
Wady i niuanse:
- Potrzeba początkowej konfiguracji: trzeba skonfigurować
stanza, katalog repozytorium, uprawnienia. - Trudniejsze dla początkujących: wymaga ogarnięcia WAL i architektury PostgreSQL.
- Zależność od repozytorium: wszystkie backupy są trzymane centralnie — ważne jest zarządzanie storage'em.
Kiedy używać backupów przyrostowych:
- Jeśli baza danych jest często aktualizowana.
- Kiedy pełny backup jest za ciężki albo trwa za długo.
- Jeśli chcesz ustawić niezawodną i automatyczną strategię odtwarzania przy minimalnych kosztach.
Backupy różnicowe
Backup różnicowy (Differential Backup) zapisuje wszystkie zmiany, które zaszły od ostatniego pełnego backupu. Różnica względem backupu przyrostowego jest taka, że każdy backup różnicowy zawiera pełny zestaw zmian od ostatniego pełnego backupu. Więc do odtworzenia bazy potrzebny jest tylko ostatni pełny backup i ostatni backup różnicowy.
Przykład procesu:
- Pierwszy wieczór: robisz pełny backup (A).
- Drugi wieczór (B): robisz backup różnicowy — zawiera zmiany od A.
- Trzeci wieczór (C): robisz backup różnicowy — też zawiera zmiany od A.
Zalety:
- Prostota odtwarzania: Do przywrócenia bazy potrzebny jest tylko pełny backup i ostatni backup różnicowy.
- Szybszy niż pełny backup: Backup różnicowy robi się szybciej niż pełny, bo kopiowane są tylko zmiany.
Wady:
- Rozmiar pliku backupu: Z każdym nowym backupem różnicowym jego rozmiar rośnie, bo zapisuje wszystkie zmiany od pełnego backupu.
- Miejsce na dysku: Na dłuższą metę może wymagać więcej miejsca niż backupy przyrostowe.
Backup różnicowy przydaje się, gdy chcesz uprościć odtwarzanie bazy: trzyma wszystkie zmiany od ostatniego pełnego backupu. To szczególnie wygodne, jeśli dane często się zmieniają, ale robienie pełnych kopii za każdym razem jest zbyt czasochłonne lub kosztowne. W takich sytuacjach podejście różnicowe to fajny kompromis między szybkością a niezawodnością.
Porównanie typów backupów
| Typ backupu | Pełny | Przyrostowy | Różnicowy |
|---|---|---|---|
| Rozmiar danych | Maksymalny | Minimalny | Średni |
| Czas wykonania | Długi | Szybki | Umiarkowany |
| Odtwarzanie | Proste | Trudne (zależność od wszystkich backupów) | Średnie (potrzebny ostatni pełny i różnicowy) |
| Kiedy stosować | Pierwsza kopia, migracje | Częste backupy w czasie rzeczywistym | Regularne backupy zapasowe |
Wybór typu backupu zależy od twoich wymagań co do bezpieczeństwa danych, częstotliwości aktualizacji i dostępnych zasobów. Dla małych baz wystarczy regularny pełny backup. Jeśli baza rośnie, backupy przyrostowe pomogą zaoszczędzić miejsce. A jeśli zależy ci na szybkim odtwarzaniu danych, backupy różnicowe mogą być najlepszym wyborem. Najważniejsze — nie zapominaj o regularności i automatyzacji!
GO TO FULL VERSION