Automatyczne tworzenie kopii zapasowych postgres


20

Jaki jest najlepszy sposób automatycznego tworzenia kopii zapasowej bazy danych Postgres w systemie Linux każdego dnia?

Odpowiedzi:


11

Możesz użyć w pg_dumpten sposób:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Najpierw zastanów się nad ustawieniem .pgpasspliku zawierającego hasła, które będą używane, jeśli połączenie wymaga hasła. Ten plik powinien mieć wiersze w następującym formacie:

hostname:port:database:username:password

I każde z pierwszych czterech pól może być wartością dosłowną lub *, która pasuje do czegokolwiek. Na przykład: *:*:*:postgres:pg_password.

Ten .pgpassplik musi znajdować się w katalogu domowym ~ /, a uprawnienia do niego muszą uniemożliwiać dostęp do świata lub grupy; osiągnąć to przez polecenie chmod 0600 ~/.pgpass.


czy codziennie tworzy kopie zapasowe automatycznie?
Anuj Patel

@indyaah: nie, będziesz musiał uruchamiać to codziennie z crona (lub podobnego).
Bill Weiss,

12

Uruchom pg_dumpall z crona.


7
pg_dumpall jest lepszy niż inne odpowiedzi, ponieważ tworzy kopię zapasową obiektów globalnej bazy danych. (Np .: użytkownicy itp.) Będziesz ich potrzebować, aby całkowicie odzyskać swoją bazę danych, a jeśli masz ich dużą liczbę, odtworzenie ich może nie być trywialne. Jednak pg_dumpall może być dla Ciebie nadmierną mocą, jeśli chcesz po prostu wykonać kopię zapasową pojedynczej instancji bazy danych w klastrze wielu baz danych, ponieważ pg_dumpall utworzy kopię zapasową każdej instancji. Więc ... jak w przypadku większości technicznych pytań i odpowiedzi, to zależy.
KevinRae

1
Mam tendencję do łączenia „bazy danych” i „serwera bazy danych”, co jest dobrym przykładem. Zakładałem, że plakat będzie chciał zrobić kopię zapasową. Dobra uwaga.
Bill Weiss,

6

Wypróbuj AutoPostgreSQLBackup . Jest to pojedynczy plik skryptu, można go łatwo skonfigurować do swoich potrzeb, wykonuje harmonogram dzienny, tygodniowy i miesięczny, dzienniki na e-mail, plik dziennika lub standardowe wyjście itp.


Używam również AutoPostgreSQLBackup i działa dla mnie bardzo dobrze ;-)
Matthieu

4

Jeśli jest to stosunkowo mała baza danych i tak niskie wymagania dotyczące kopii zapasowej, jak tylko raz dziennie, po prostu uruchom pg_dump z crona, aby zrzucić plik lokalny, a następnie użyj dowolnej kopii zapasowej plików na komputerze, aby zarchiwizować zrzut .


4

pg_rman to nowe narzędzie, oferujące przyrostowe kopie zapasowe, które działa dla PostgreSQL 8.4 lub nowszego.




1

Jest to skrypt, który utworzy kopię zapasową każdej bazy danych osobno, a także często zapomniane, ale ważne PostgreSQL GLOBALS i dane logowania użytkownika.

Ważne jest, aby skorzystać z kompresji, której pg_dumpall nie zapewnia, a zapomniane dane, które pg_dump ignoruje.

Będzie to wymagało pgpass lub podobnej konfiguracji, jak opisano tutaj http://wiki.postgresql.org/wiki/Pgpass

Jest to konfiguracja dla OSX, ale po prostu zmień ścieżki programu i będzie działać dobrze.

Kopie zapasowe do / sqlbackups Skrypt zwróci rozmiar katalogu / katalog i ma punkty przerwania, które zwrócą niezerowy status, jeśli się nie powiedzie. Użyłem go w połączeniu z pgAgent do codziennych kopii zapasowych.

Skrypt zredagowany, przepraszam za to :(


1

Po co zadowalać się codzienną kopią zapasową, skoro możesz łatwo odzyskać siły w czasie dzięki barmanowi ?


Pozwolę moderatorom zdecydować, ale wierzę, że wskrzeszenie 5-letnich pytań o podłączenie komercyjnych produktów jest tutaj złe.
gparent


Masz rację, przejrzałem niewłaściwą rzecz. Moim głównym zmartwieniem nie było to, że w każdym razie chodziło o zasugerowanie odpowiedzi, która tak naprawdę nie była pytaniem użytkownika 5 lat później. Jednak po przeczytaniu innych odpowiedzi wydają się sugerować podobne rozwiązania tworzenia kopii zapasowych, więc myślę, że nie jest tak źle. Moja flaga prawdopodobnie zostanie odrzucona i nazwiemy ją dniem: D
gparent

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.