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:
- 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.
- 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.
- 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.
- 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.
GO TO FULL VERSION