Blog JSystems - uwalniamy wiedzę!

Szukaj

PostgreSQL

Barman - centralny backup i recovery dla PostgreSQL

W skrócie

  • Własne skrypty na pg_dump nie dają odtwarzania do punktu w czasie ani centralnego zarządzania kopiami wielu serwerów.
  • To backup logiczny bez ciągłej archiwizacji WAL, więc odtworzysz stan tylko z chwili wykonania dumpu, a nie sprzed konkretnej minuty.
  • Barman to dedykowane narzędzie, które robi kopie fizyczne, archiwizuje WAL i pozwala odtworzyć bazę do dowolnego momentu jedną komendą.

Gdy baz przybywa, a wymagania dotyczące utraty danych rosną, ręczne skrypty przestają wystarczać. Barman (Backup and Recovery Manager) to sprawdzone narzędzie open source od firmy EnterpriseDB, które centralizuje backupy PostgreSQL i daje odtwarzanie do punktu w czasie. Pokażemy, kiedy warto po nie sięgnąć i jak wygląda pełny cykl.

Jak to wygląda w praktyce

Masz kilka serwerów PostgreSQL, a backup każdego to osobny skrypt w cronie z pg_dump. Nikt nie wie na pewno, czy wszystkie kopie się wykonały i czy da się je odtworzyć. Gdy ktoś przez pomyłkę usuwa dane o 14:30, okazuje się, że najnowszy backup jest z nocy - tracisz pół dnia pracy, bo dump nie pozwala cofnąć się do 14:29. Do tego brakuje jednego miejsca, w którym widać stan wszystkich kopii, ich rozmiar i retencję. Zarządzanie tym rozłazi się w szwach.

Dlaczego tak się dzieje

Backup logiczny przez pg_dump to zdjęcie bazy z jednej chwili. Nie ma w nim ciągłego strumienia zmian, więc nie da się odtworzyć stanu między dwoma dumpami. Odtwarzanie do punktu w czasie (PITR) wymaga dwóch rzeczy naraz: kopii bazowej całego katalogu danych oraz archiwum wszystkich segmentów WAL powstałych po tej kopii. Mając jedno i drugie, można odtworzyć kopię bazową, a potem odtwarzać WAL aż do wskazanej minuty.

Barman automatyzuje dokładnie ten schemat. Wykonuje fizyczną kopię bazową (przez pg_basebackup albo rsync), na bieżąco odbiera i przechowuje segmenty WAL z monitorowanych serwerów, pilnuje retencji i weryfikuje spójność kopii. Wszystko z jednego, dedykowanego hosta backupowego, co odciąża serwery bazodanowe i daje jeden punkt kontroli.

Jak to rozwiązać krok po kroku

  1. Postaw osobny serwer backupowy i zainstaluj na nim pakiet barman. To on będzie łączył się do serwerów PostgreSQL i przechowywał kopie, więc daj mu odpowiednio dużo miejsca na dysku.
  2. Na serwerze bazodanowym utwórz rolę do backupu z atrybutem REPLICATION oraz rolę monitorującą. Barman potrzebuje połączenia do bazy oraz kanału do pobierania WAL.
  3. Skonfiguruj serwer w pliku Barmana, wskazując host, rolę i metodę - najwygodniejsza jest streaming z pg_basebackup i strumieniowaniem WAL przez pg_receivewal, bo nie wymaga dostępu SSH do plików.
  4. Sprawdź gotowość konfiguracji poleceniem barman check nazwa_serwera. Narzędzie samo zweryfikuje połączenie, uprawnienia i odbiór WAL, wypisując dla każdej pozycji OK lub FAILED z opisem.
  5. Wykonaj pierwszą kopię bazową poleceniem barman backup nazwa_serwera. Od tej chwili Barman równolegle archiwizuje WAL, więc masz komplet do PITR.
  6. Zaplanuj regularne backupy i obsługę WAL w cronie użytkownika barman, dodając wywołania barman cron oraz cykliczne barman backup. Retencję ustaw parametrem retention_policy, na przykład na ostatnie 7 dni.
  7. Przećwicz odtwarzanie zanim będzie potrzebne. Polecenie barman recover z opcją --target-time odtworzy bazę na wskazany serwer do konkretnej minuty. Odtwarzanie testuj na maszynie zapasowej, nigdy na produkcji.

Jak sprawdzić, że zadziałało

Stan wszystkich kopii podejrzysz poleceniem barman list-backup nazwa_serwera - zobaczysz identyfikatory backupów, ich daty i rozmiary. Kluczowa jest komenda barman check nazwa_serwera: dopóki wszystkie pozycje, w tym WAL archive i backup maximum age, pokazują OK, wiesz że kopie powstają i WAL jest odbierany na bieżąco. Ciągłość archiwum WAL potwierdza barman show-backup, gdzie widać zakres segmentów pokrytych daną kopią. Ostatecznym dowodem jest realne odtworzenie do punktu w czasie na maszynie testowej i sprawdzenie, że dane wyglądają jak w wybranej minucie - dopiero przetestowane odtwarzanie oznacza, że backup naprawdę chroni.

Wróć do listy: 100 najczęstszych pytań i problemów z PostgreSQL

Szkolenie Administracja, replikacja i tuning baz danych PostgreSQL

Sprawdź szkolenie: Administracja, replikacja i tuning baz danych PostgreSQL

To szkolenie może być dofinansowane z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Szkolenie Zaawansowana administracja PostgreSQL - HA, DR, monitoring, skalowanie

Sprawdź szkolenie: Zaawansowana administracja PostgreSQL (HA, DR, monitoring, skalowanie)

To szkolenie może być dofinansowane z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Do czego służy Barman w PostgreSQL?
Barman, czyli Backup and Recovery Manager, to narzędzie open source do centralnego zarządzania kopiami zapasowymi wielu serwerów PostgreSQL. Wykonuje fizyczne kopie bazowe, na bieżąco archiwizuje segmenty WAL, pilnuje retencji i pozwala odtworzyć bazę do dowolnego punktu w czasie. Działa z osobnego hosta backupowego, co odciąża serwery bazodanowe.
Czym Barman jest lepszy od zwykłego pg_dump?
pg_dump to kopia logiczna z jednej chwili, więc nie pozwala odtworzyć stanu między dwoma dumpami. Barman robi kopie fizyczne i ciągle archiwizuje WAL, dzięki czemu umożliwia odtwarzanie do punktu w czasie, na przykład do konkretnej minuty sprzed pomyłkowego usunięcia danych. Dodatkowo centralizuje zarządzanie kopiami wielu serwerów w jednym miejscu.
Jak sprawdzić, czy Barman jest poprawnie skonfigurowany?
Uruchom polecenie barman check nazwa_serwera. Narzędzie zweryfikuje połączenie do bazy, uprawnienia oraz odbiór WAL, wypisując dla każdej pozycji OK albo FAILED z opisem. Dopóki wszystkie pozycje, w tym WAL archive, pokazują OK, wiesz że kopie powstają, a dziennik jest odbierany na bieżąco.
Jak odtworzyć bazę Barmanem do konkretnego momentu?
Użyj polecenia barman recover z opcją --target-time, wskazując serwer docelowy i moment, do którego chcesz odtworzyć. Barman złoży kopię bazową i odtworzy segmenty WAL aż do podanej chwili. Odtwarzanie zawsze ćwicz na maszynie zapasowej, nigdy na produkcji, i traktuj przetestowane odtworzenie jako jedyny prawdziwy dowód, że backup chroni.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...