Kopia (backup) i odtworzenie bazy danych w PostgreSQL (pg_dump i psql)

Jeżeli chcemy wykonać kopię bazy danych (backup) PostgreSQL możemy skorzystać z dedykowanego do tego programu/polecenia – pg_dump. Jego składnia jest następująca:

pg_dump -p numer_portu -d nazwa_bazy -U nazwa_uzytkownika > nazwa_bazy.sql

Dla przykładowej bazy: informatyk dostępnej na porcie 1234 dla użytkownika: admin polecenie będzie wyglądał następująco:

pg_dump -p 1234 -d informatyk -U admin> nazwa_bazy.sql

Jeżeli dla użytkownika admin ustawione jest hasło zostaniemy poproszeni o jego podanie.

Dobrą nawykiem jest nazewnictwo plików z kopiami nazwą bazy danych wraz z datą i godziną utworzenia backupu, np:

pg_dump -p 1234 -d informatyk -U admin > informatyk_$(date +"%Y%m%d_%H%M%S").sql

Powyższe polecenie spowoduje zapisanie kopii bazy informatyk do pliku np. informatyk_20231121_215915.sql, gdzie zapis: 20231121_215915 wskazuje datę i godzinę zrzutu bazy.

Wiemy już jak wykonać kopię bazy danych. Teraz zajmiemy się jej odtworzeniem (przywróceniem).
Skorzystamy do tego z komendy psql, której składnia wygląda tak:

psql -p numer_portu -d nazwa_bazy -U nazwa_uzytkownika < nazwa_bazy.sql

Zatem dla naszej bazy informatyk na porcie 1234 dla użytkownika admin i pliku kopii: informatyk_20231121_215915.sql polecenie będzie następujące:

psql -p 1234 -d informatyk -U admin < informatyk_20231121_215915.sql