CodeGym /Kursy /SQL SELF /Tworzenie podstawowych backupów z pg_dump

Tworzenie podstawowych backupów z pg_dump

SQL SELF
Poziom 43 , Lekcja 2
Dostępny

pg_dump to narzędzie linii poleceń dostarczane przez PostgreSQL, które pozwala wyeksportować bazę danych do pliku backupu. Ten plik może zawierać tylko strukturę bazy, tylko dane albo jedno i drugie.

Główną zaletą pg_dump jest to, że pozwala przenosić dane między serwerami, odtwarzać bazę po awarii albo po prostu tworzyć archiwum do długoterminowego przechowywania. Warto zaznaczyć, że to narzędzie jest bardziej odpowiednie do logicznego backupu (przy użyciu zapytań SQL), niż do fizycznego kopiowania plików bazy danych.

Podstawowa składnia komendy pg_dump

Żeby zrobić backup za pomocą pg_dump, wystarczy odpalić w terminalu taką komendę:

pg_dump -U username -d database_name -f backup_file.sql

Rozbijmy składniki tej komendy:

  • -U username — podaje nazwę użytkownika PostgreSQL, którego używasz do połączenia z bazą.
  • -d database_name — określa nazwę bazy, z której robisz backup.
  • -f backup_file.sql — wskazuje, gdzie zapisać plik backupu. Może to być pełna ścieżka na dysku albo względna.

Przykład: załóżmy, że masz bazę university i chcesz zrobić jej backup do pliku university_backup.sql. Komenda będzie wyglądać tak:

pg_dump -U postgres -d university -f university_backup.sql

W tym momencie PostgreSQL poprosi o hasło użytkownika postgres, żeby dać dostęp do danych.

Wskazówka: jeśli pracujesz na lokalnym serwerze i nie chcesz za każdym razem wpisywać hasła, skonfiguruj plik .pgpass. Zajrzyj do oficjalnej dokumentacji PostgreSQL po więcej instrukcji.

Parametry i ich użycie

Narzędzie pg_dump jest mega elastyczne i możesz je ustawić do backupów z różnymi opcjami:

  1. Backup tylko struktury bazy

Jeśli chcesz zachować tylko strukturę bazy (np. żeby postawić ją na nowym serwerze), użyj flagi --schema-only. Przykład komendy:

pg_dump -U postgres -d university --schema-only -f university_schema.sql

To stworzy skrypt SQL zawierający tylko komendy CREATE TABLE, CREATE INDEX itd., bez danych.

  1. Backup tylko danych

Czasem potrzebujesz zachować tylko dane, bez struktury. Wtedy użyj flagi --data-only:

pg_dump -U postgres -d university --data-only -f university_data.sql

Otrzymany plik będzie miał komendy INSERT INTO, które odtworzą twoje dane.

  1. Kompresja backupu

Plik backupu może być całkiem spory, zwłaszcza jeśli masz dużo tabel i danych. Żeby zmniejszyć rozmiar pliku, użyj parametru --compress:

pg_dump -U postgres -d university -f university_backup.sql --compress=6

Poziom kompresji podajesz liczbą od 0 (bez kompresji) do 9 (maksymalna kompresja). Pamiętaj, że wyższy poziom kompresji to dłuższy czas robienia backupu.

  1. Eksport do formatu binarnego

Jeśli chcesz szybszego odtwarzania, możesz zapisać backup w formacie binarnym zamiast tekstowego SQL-skryptu:

pg_dump -U postgres -d university -Fc -f university_backup.dump

Opcja -Fc oznacza format Custom, który obsługuje odtwarzanie przez narzędzie pg_restore.

Przykłady tworzenia backupów

Pełny backup bazy

Załóżmy, że masz bazę company i chcesz zrobić pełny backup, razem ze strukturą i danymi:

pg_dump -U postgres -d company -f company_backup.sql

Backup jednej tabeli

Jeśli chcesz zachować tylko jedną tabelę z bazy, użyj parametru -t:

pg_dump -U postgres -d company -t employees -f employees_backup.sql

Ten plik będzie miał strukturę i dane tylko z tabeli employees.

Backup kilku tabel

Żeby zrobić backup kilku tabel, dodaj kilka parametrów -t:

pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql

Backup skompresowany

Żeby zaoszczędzić miejsce, użyj flagi --compress albo od razu stwórz plik w formacie skompresowanym:

pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump

Przydatne wskazówki

Sprawdzaj rozmiar pliku backupu. Jeśli backup jest podejrzanie mały, mogło coś pójść nie tak. Użyj parametru --verbose, żeby zobaczyć więcej szczegółów z procesu backupu.

Automatyzuj proces. Użyj cron albo pg_cron, żeby ustawić regularne backupy. Nie zapomnij o rotacji starych backupów, żeby nie zapchać dysku.

Sprawdzaj backupy pod kątem poprawności. Testuj backupy, odtwarzając bazę na serwerze testowym.

Błędy, na które możesz trafić

Błąd autentykacji. Jeśli nie podałeś poprawnego użytkownika albo zapomniałeś hasła, pg_dump wywali błąd. Upewnij się, że masz skonfigurowany plik .pgpass do automatycznego logowania.

Błąd połączenia. Jeśli serwer PostgreSQL nie działa albo źle podałeś nazwę bazy, narzędzie nie zrobi backupu. Sprawdź nazwę bazy i status serwera.

Problem z uprawnieniami. Użytkownik, na którego konto odpalasz pg_dump, musi mieć prawa do czytania struktury i danych bazy. Użyj roli administratora, jeśli możesz.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION