Jak tworzyć kopię zapasową i przywrócić bazę danych PostgreSQL
- 3034
- 288
- Pan Jeremiasz Więcek
W środowisku produkcyjnym, bez względu na to, jak duży lub mały PostgreSQL może być baza danych, regularne plecy jest istotnym aspektem zarządzania bazą danych. W tym artykule dowiesz się, jak tworzyć kopię zapasową i przywrócić bazę danych PostgreSQL.
Zakładamy, że masz już działającą instalację systemu bazy danych PostgreSQL. Jeśli nie, przeczytaj nasze następujące artykuły, aby zainstalować PostgreSQL w dystrybucji Linuksa.
- Jak zainstalować PostgreSQL i PGADMIN4 w Ubuntu 20.04
- Jak zainstalować PostgreSQL i PGADMIN w Centos 8
- Jak zainstalować PostgreSQL i PGADMIN w RHEL 8
Zacznijmy…
Kopia zapasowa pojedynczej bazy danych PostgreSQL
PostgreSQL zapewnia PG_DUMP narzędzie, aby pomóc w tworzeniu kopii zapasowych baz danych. Generuje plik bazy danych z poleceniami SQL w formacie, który można łatwo przywrócić w przyszłości.
Do tworzenia kopii zapasowej, a PostgreSQL baza danych, zacznij od logowania na serwerze bazy danych, a następnie przejdź do Postgres Konto użytkownika i uruchom PG_DUMP w następujący sposób (wymień Tecmintdb
z nazwą bazy danych, którą chcesz wykonać kopię zapasową). Domyślnie format wyjściowy to zwykły tekst skryptu SQL.
$ PG_DUMP Tecmintdb > Tecmintdb.SQL
PG_DUMP obsługuje również inne formaty wyjściowe. Możesz określić format wyjściowy za pomocą -F
opcja, gdzie C
oznacza plik archiwum niestandardowego formatu, D
oznacza archiwum formatu katalogu i T
oznacza plik archiwum formatu smar: wszystkie formaty są odpowiednie do wprowadzania do PG_RESTORE.
Na przykład:
$ pg_dump -f c tecMintdb> Tecmintdb.zrzut lub $ pg_dump -f t tecMintdb> Tecmintdb.smoła
Aby zrzucić wyjście w formacie wyjściowym katalogu, użyj -F
flaga (która służy do określenia pliku wyjściowego) w celu określenia katalogu docelowego zamiast pliku. Katalog, który zostanie utworzony przez PG_DUMP nie może istnieć.
$ pg_dump -f d tecMintdb -f Tecmintdumpdir
Cofnąć wszystko PostgreSQL bazy danych, użyj PG_DUMPALL narzędzie jak pokazano.
$ pg_dumpall> all_pg_dbs.SQL
Możesz przywrócić zrzut za pomocą PSQL jak pokazano.
$ psql -f all_pg_dbs.SQL Postgres
Przywracanie bazy danych PostgreSQL
Przywrócić PostgreSQL baza danych, możesz użyć PSQL Lub PG_RESTORE narzędzia. PSQL służy do przywracania plików tekstowych utworzonych przez PG_DUMP mając na uwadze, że PG_RESTORE służy do przywrócenia bazy danych PostgreSQL z archiwum utworzonego przez PG_DUMP W jednym z formatów nierównomiernych (niestandardowy, tar lub katalog).
Oto przykład, jak przywrócić zrzucenie zwykłego pliku tekstowego:
$ psql Tecmintdb < Tecmintdb.SQL
Jak wspomniano powyżej, zrzut niestandardowy nie jest skryptem dla PSQL, więc należy go przywrócić PG_RESTORE jak pokazano.
$ PG_RESTORE -D TecMintdb Tecmintdb.zrzut lub $ pG_RESTORE -D TecMintdb Tecmintdb.TAR lub $ PG_RESTORE -D Tecmintdb Tecmintdumpdir
Kopia zapasowa dużych baz danych PostgreSQL
Jeśli tworzenie kopii zapasowej bazy danych jest duże i chcesz wygenerować dość mniejszy plik wyjściowy, możesz uruchomić skompresowany zrzut, w którym musisz filtrować wyjście z PG_DUMP za pośrednictwem narzędzia kompresyjnego, takiego jak gzip lub którykolwiek z twoich ulubionych:
$ PG_DUMP Tecmintdb |. gzip> Tecmintdb.GZ
Jeśli baza danych jest wyjątkowo duża, możesz zrzucić równolegle, zrzucając numer_of_jobs tabele jednocześnie za pomocą -J
flaga, jak pokazano.
$ pg_dump -f d -J 5 -f Tecmintdumpdir
Należy zauważyć, że opcja zrzutu równoległego skraca czas zrzutu, ale z drugiej strony zwiększa również obciążenie na serwerze bazy danych.
Kopie zapasowe zdalne bazy danych PostgreSQL
PG_DUMP jest zwykłym narzędziem klienta PostgreSQL, obsługuje operacje na zdalnych serwerach bazy danych. Aby określić zdalny serwer bazy danych PG_DUMP powinien skontaktować się, użyj opcji wiersza polecenia -H
Aby określić zdalny host i -P
Określa port zdalny, na którym słucha serwer bazy danych. Poza tym użyj -U
flaga, aby określić nazwę roli bazy danych, aby połączyć się jako.
Pamiętaj, aby wymienić 10.10.20.10 I 5432 I Tecmintdb z zdalnym adresem IP hosta lub nazwa hosta, portem bazy danych i nazwy bazy danych.
$ PG_DUMP -u Tecmint -h 10.10.20.10 -p 5432 TecMintdb> Tecmintdb.SQL
Upewnij się, że użytkownik łączący zdalnie ma wymagane uprawnienia do dostępu do bazy danych, a odpowiednia metoda uwierzytelniania bazy danych jest skonfigurowana na serwerze bazy danych, w przeciwnym razie otrzymasz błąd, taki jak ten pokazany w poniższym zrzucie Screenshot.
Błąd połączenia bazy danych PostgreSQLMożliwe jest również zrzucenie bazy danych bezpośrednio z jednego serwera do drugiego, użycie PG_DUMP I PSQL narzędzia, jak pokazano.
$ PG_DUMP -u Tecmint -h 10.10.20.10 TecMintdb | PQSL -U Tecmint -h 10.10.20.30 TecMintdb
Baza danych Auto Backup PostgreSQL za pomocą zadania CRON
Możesz wykonywać kopie zapasowe w regularnych odstępach czasu za pomocą Cron Oferty pracy. Cron Zadania są powszechnie używanymi środkami do planowania różnego rodzaju zadań do uruchamiania na serwerze.
Możesz skonfigurować zadanie CRON do automatyzacji PostgreSQL Kopia zapasowa bazy danych w następujący sposób. Zauważ, że musisz uruchomić następujące polecenia jako Superuser PostgreSQL:
$ mkdir -p/srv/kopie zapasowe/bazy danych
Następnie uruchom następujące polecenie, aby edytować crontab, aby dodać nowe zadanie CRON.
$ crontab -e
Skopiuj i wklej następujący wiersz na końcu crontab. Możesz użyć dowolnego z wyjaśnieniowych formatów zrzutów.
0 0 * * * PG_DUMP -u Postgres TecMintdb>/srv/Backups/Postgres/Tecmintdb.SQL
Zapisz plik i wyjdź.
Usługa Cron automatycznie rozpocznie uruchamianie tego nowego zadania bez ponownego uruchomienia. I ta praca CRON będzie działać codziennie o północy, jest to minimalne rozwiązanie zadania tworzenia kopii zapasowych.
Aby uzyskać więcej informacji o tym, jak planować zadania CRON, zobacz: Jak tworzyć i zarządzać CRON Jobs w Linux
To wszystko na razie! Dobrym pomysłem jest tworzenie kopii zapasowych danych częścią rutyny zarządzania bazą danych. Aby skontaktować się z nami po wszelkie pytania lub komentarze, skorzystaj z poniższego formularza opinii. Aby uzyskać więcej informacji, zobacz strony referencyjne PG_DUMP i PG_RESTORE.