Automatyczne tworzenie kopii zapasowych postgres

20

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

Liam
źródło

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.

Ali Mezgani
źródło
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.

Bill Weiss
źródło
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.


źródło
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 .

Magnus Hagander
źródło
4

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

Adam Matan
źródło
2

Wypróbuj bezpieczny dla astrails . Wie, jak wykonać kopię zapasową mysql (mysqldump), postgres (pg_dump) lub po prostu zwykłych plików (tar) z szyfrowaniem (gnupg) i przesłać do S3 / Sftp.

Witalij Kushner
źródło
1

pg_dump to dobre rozwiązanie, ale jeśli próbujesz wykonać kopię zapasową dużej ilości danych, być może może to pomóc:

http://www.postgresql.org/docs/8.1/static/backup-online.html

co w rzeczywistości jest rodzajem „surowego” rejestrowania, ale może być przydatne jako metoda przyrostowej kopii zapasowej ...

Javier Novoa C.
źródło
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 :(

Silverfire
źródło
1

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

Giovanni Toraldo
źródło
Pozwolę moderatorom zdecydować, ale wierzę, że wskrzeszenie 5-letnich pytań o podłączenie komercyjnych produktów jest tutaj złe.
gparent
ehm, to open source: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo
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