![10 najlepszych aplikacji Health & Fitness na iOS (bezpłatne i płatne) na rok 2021](/f/0dd61ee1e26bcb5e11d005f8bc1a678e.png?width=100&height=100)
W środowisku produkcyjnym, bez względu na to, jak duże lub małe jest Twoje PostgreSQL baza danych może być, regularny powrót jest istotnym aspektem zarządzania bazą danych. W tym artykule dowiesz się, jak wykonać kopię zapasową i przywrócić bazę danych PostgreSQL.
Zakładamy, że masz już działającą instalację systemu bazodanowego PostgreSQL. Jeśli nie, przeczytaj nasze poniższe artykuły, aby zainstalować PostgreSQL w twojej dystrybucji Linuksa.
Zacznijmy…
PostgreSQL zapewnia pg_dump narzędzie ułatwiające tworzenie kopii zapasowych baz danych. Generuje plik bazy danych z poleceniami SQL w formacie, który można łatwo przywrócić w przyszłości.
Aby wykonać kopię zapasową, PostgreSQL bazy danych, zacznij od zalogowania się do serwera bazy danych, a następnie przejdź do Postgres konto użytkownika i uruchom
pg_dump w następujący sposób (zamieńtecmintdb
z nazwą bazy danych, którą chcesz wykonać kopię zapasową). Domyślnie formatem wyjściowym jest zwykły tekstowy plik skryptu SQL.
$ pg_dump tecmintdb > tcmintdb.sql
ten 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 w formacie niestandardowym, D
oznacza archiwum w formacie katalogu i T
oznacza plik archiwum w formacie tar: wszystkie formaty nadają się do wprowadzania do pg_restore.
Na przykład:
$ pg_dump -F c tecmintdb > tecmintdb.dump. LUB. $ pg_dump -F t tecmintdb > tecmintdb.tar.
Aby zrzucić dane wyjściowe w formacie katalogu wyjściowego, użyj -F
flaga (która jest używana do określenia pliku wyjściowego), aby określić katalog docelowy zamiast pliku. Katalog, który zostanie utworzony przez pg_dump nie może istnieć.
$ pg_dump -F d tecmintdb -f tecmintdumpdir
Aby wykonać kopię zapasową wszystkich PostgreSQL baz 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.
$ pgsql -f all_pg_dbs.sql postgres.
Aby przywrócić PostgreSQL bazy 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 przywracania bazy danych PostgreSQL z archiwum utworzonego przez pg_dump w jednym z formatów innych niż zwykły tekst (niestandardowy, smoła lub katalog).
Oto przykład przywracania zrzutu zwykłego pliku tekstowego:
$ psql tecmintdb < tcmintdb.sql
Jak wspomniano powyżej, zrzut w niestandardowym formacie nie jest skryptem dla pgsql, więc musi zostać przywrócony za pomocą pg_restore jak pokazano.
$ pg_restore -d tecmintdb tecmintdb.dump. LUB. $ pg_restore -d tecmintdb tecmintdb.tar. LUB. $ pg_restore -d tecmintdb tecmintdumpdir
Jeśli baza danych, której kopię zapasową tworzysz, jest duża i chcesz wygenerować dość mniejszy plik wyjściowy, możesz uruchomić skompresowany zrzut, w którym musisz przefiltrować dane wyjściowe pg_dump za pomocą narzędzia do kompresji, takiego jak gzip lub którykolwiek z twoich ulubionych:
$ pg_dump tecmintdb | gzip > tcmintdb.gz
Jeśli baza danych jest bardzo duża, możesz wykonać równolegle zrzuty liczba_zadań stoły jednocześnie używając -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 serwera bazy danych.
pg_dump jest zwykłym klientem PostgreSQL, obsługuje operacje na zdalnych serwerach baz danych. Aby określić zdalny serwer bazy danych pg_dump powinien się skontaktować, użyj opcji wiersza poleceń -h
aby określić zdalnego hosta i -P
określa port zdalny, na którym nasłuchuje serwer bazy danych. Poza tym użyj -U
flaga, aby określić nazwę roli bazy danych, z którą chcesz się połączyć.
Pamiętaj o wymianie 10.10.20.10 oraz 5432 oraz tecmintdb z adresem IP zdalnego hosta lub nazwą hosta, portem bazy danych i nazwą bazy danych.
$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql.
Upewnij się, że użytkownik łączący się zdalnie ma wymagane uprawnienia dostępu do bazy danych i odpowiedniej bazy danych metoda uwierzytelniania jest skonfigurowana na serwerze bazy danych, w przeciwnym razie otrzymasz błąd podobny do pokazanego poniżej zrzut ekranu.
Możliwe jest również zrzucenie bazy danych bezpośrednio z jednego serwera na drugi, użyj pg_dump oraz psql narzędzia, jak pokazano.
$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb.
Możesz wykonywać kopie zapasowe w regularnych odstępach czasu za pomocą cron Oferty pracy. Cron zadania są powszechnie używanym sposobem planowania różnego rodzaju zadań uruchamianych na serwerze.
Możesz skonfigurować zadanie crona do automatyzacji PostgreSQL kopii zapasowej bazy danych w następujący sposób. Zauważ, że musisz uruchomić następujące polecenia jako superużytkownik 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 opisanych powyżej formatów zrzutu.
0 0 * * * pg_dump -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql.
Zapisz plik i wyjdź.
Usługa cron automatycznie uruchomi to nowe zadanie bez restartu. A to zadanie cron będzie uruchamiane codziennie o północy, jest to minimalne rozwiązanie zadania kopii zapasowej.
Aby uzyskać więcej informacji na temat planowania zadań cron, zobacz: Jak tworzyć i zarządzać zadaniami Cron w systemie Linux?
Na razie to wszystko! Dobrym pomysłem jest, aby tworzenie kopii zapasowych danych stało się częścią procedury zarządzania bazą danych. Aby skontaktować się z nami w sprawie jakichkolwiek pytań lub komentarzy, skorzystaj z poniższego formularza opinii. Aby uzyskać więcej informacji, zobacz pg_dump oraz pg_restore strony referencyjne.