1611
Comment: converted to 1.6 markup
|
← Revision 3 as of 2012-03-07 12:15:40 ⇥
1657
|
Deletions are marked like this. | Additions are marked like this. |
Line 16: | Line 16: |
# dove metto i backup: DIR=/var/backups/postgres |
# dove metto i backup DIR=/backupdisk/postgres |
Line 19: | Line 19: |
# creo la directory se manca | |
Line 22: | Line 21: |
# creo un elenco dei database da dumpare LIST=$(psql -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]|^\([0-9]*') |
# rotate dei vecchi dump savelog -l -c 7 $DIR/*.dump |
Line 25: | Line 24: |
# salvo i vecchi dump con savelog savelog -c 2 -l $DIR/*.dump.gz > /dev/null savelog -c 2 -l $DIR/globals.dump > /dev/null |
# dump degli utenti echo `date` Dumping global data pg_dumpall -g -c > $DIR/dumpall_data.dump |
Line 29: | Line 28: |
# dumpo i database | # dump dei database, uno alla volta, escludendo template0 che non e` accessibile # e in ogni caso non serve LIST=$(psql -t -c "select datname from pg_database order by datname" -d template1 | grep -vE 'template0') |
Line 32: | Line 35: |
pg_dump $d | gzip -c > $DIR/$d.dump.gz | echo `date` Dumping database $d pg_dump --create --compress=6 --file=$DIR/$d.dump $d |
Line 34: | Line 38: |
# dumpo i dati degli utenti, permessi, eccetera pg_dumpall -g > $DIR/globals.dump |
echo `date` Done |
Documentazione su Postgres
E` poca, ma io non sono un grosso esperto di postgres. Speriamo almeno che sia corretta.
Backup dei database
Scopiazzando un po`, ho messo assieme questo scriptino di backup che dovrebbe funzionare con Postgres 7 e 8. Lo scopo e` fare dei dump delle tables singolarmente, in modo da poterne restorare una sola in caso non di disastro totale (perdita del disco) ma di corruzione di un singolo database. Comunque, siccome nel backup ci sono tutte le tables e anche i dati degli utenti e dei permessi, questo puo` anche essere usato per un restore "da zero", credo. Comunque vale la pena, per un restore da zero programmato (per dire, cambio di server) vedere pg_dumpall.
Questo script deve essere eseguito dall'utente postgres, il quale deve avere il permesso di scrivere files nella directory di backup. Perche` funzioni in automatico occorre che in locale l'utente postgres non abbia bisogno di password ("ident sameuser" o simili). Altrimenti occorre modificarlo un po`.
# dove metto i backup DIR=/backupdisk/postgres [ ! $DIR ] && mkdir -p $DIR || : # rotate dei vecchi dump savelog -l -c 7 $DIR/*.dump # dump degli utenti echo `date` Dumping global data pg_dumpall -g -c > $DIR/dumpall_data.dump # dump dei database, uno alla volta, escludendo template0 che non e` accessibile # e in ogni caso non serve LIST=$(psql -t -c "select datname from pg_database order by datname" -d template1 | grep -vE 'template0') for d in $LIST do echo `date` Dumping database $d pg_dump --create --compress=6 --file=$DIR/$d.dump $d done echo `date` Done