Backup postgres automatico


20

Qual è il modo migliore per eseguire automaticamente il backup di un database Postgres su Linux ogni giorno?

Risposte:


11

Puoi usare pg_dumpcosì:

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

Pensare innanzitutto di impostare il .pgpassfile che contiene le password da utilizzare se la connessione richiede una password. Questo file dovrebbe avere linee del seguente formato:

hostname:port:database:username:password

E ciascuno dei primi quattro campi può essere un valore letterale, o *, che corrisponde a qualsiasi cosa. Ad esempio: *:*:*:postgres:pg_password.

Questo .pgpassfile deve risiedere nella home directory ~ / e le autorizzazioni su di esso devono impedire qualsiasi accesso al mondo o al gruppo; realizzare questo con il comando chmod 0600 ~/.pgpass.


esegue il backup automaticamente ogni giorno ??
Anuj Patel,

@indyaah: no, dovresti eseguirlo quotidianamente da cron (o simili).
Bill Weiss,

12

Esegui pg_dumpall da cron.


7
pg_dumpall è migliore delle altre risposte perché esegue il backup degli oggetti del database globale. (Es .: utenti, ecc.) Avrai bisogno di questi per ripristinare completamente il tuo DB e se ne hai un gran numero di questi può essere non banale ricrearli. Tuttavia, pg_dumpall potrebbe essere eccessivo per te se desideri semplicemente eseguire il backup di una singola istanza di database all'interno di un cluster di più database perché pg_dumpall eseguirà il backup di ogni istanza. Quindi ... come con la maggior parte delle domande e risposte tecnologiche, dipende.
Kevin,

1
Tendo a confondere "database" e "database server", questo è un buon esempio. Ho pensato che il poster avrebbe voluto eseguire il backup dell'intera cosa.
Bill Weiss,

6

Prova AutoPostgreSQLBackup . È un singolo file di script, può essere facilmente configurato in base alle tue esigenze, esegue la pianificazione giornaliera, settimanale e mensile, registri per e-mail, file di registro o stdout, ecc.


Uso anche AutoPostgreSQLBackup e funziona molto bene per me ;-)
Matthieu,

4

Se è un database ragionevolmente piccolo e requisiti così bassi sul backup come solo una volta al giorno, esegui semplicemente pg_dump da cron a dump in un file locale, quindi usa tutto ciò che è necessario per eseguire il backup dei file sul computer per archiviare il dump .



2

Prova astrails-safe . Sa come eseguire il backup di mysql (mysqldump), postgres (pg_dump) o solo file semplici (tar) con crittografia (gnupg) e caricarli su S3 / Sftp.



1

Questo è uno script che eseguirà il backup di ogni database singolarmente, così come i GLOBAL PostgreSQL spesso dimenticati ma importanti e le informazioni di accesso dell'utente.

L'importanza di ciò è sfruttare la compressione che pg_dumpall non fornisce e i dati dimenticati che pg_dump ignora.

Ciò richiederà una pgpass o una configurazione simile come descritto qui http://wiki.postgresql.org/wiki/Pgpass

Questo è impostato per OSX ma cambia semplicemente i percorsi del Programma e funzionerà benissimo.

Esegue il backup su / sqlbackups Lo script restituirà la dimensione / directory della directory e presenta punti di interruzione che restituiranno uno stato diverso da zero in caso di errore. L'ho usato in combinazione con pgAgent per eseguire backup giornalieri.

Script redatto, mi dispiace per quello :(


1

Perché accontentarsi di un backup giornaliero quando si può facilmente avere un ripristino temporizzato con barman ?


Lascerò decidere i moderatori, ma credo che risorgere domande di 5 anni per collegare prodotti commerciali sia una cattiva forma qui.
gparent


Hai ragione, ho cercato su Google la cosa sbagliata. La mia preoccupazione principale non era che, comunque, si trattava di suggerire una risposta che non era proprio quello che l'utente ha chiesto 5 anni dopo. Tuttavia, dopo aver letto le altre risposte, sembrano anche suggerire soluzioni di backup simili, quindi immagino che non sia poi così male. La mia bandiera sarà probabilmente rifiutata e la chiameremo un giorno: D
Gparent

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.