Differences between revisions 2 and 3
Revision 2 as of 2009-04-12 17:33:24
Size: 1611
Editor: localhost
Comment: converted to 1.6 markup
Revision 3 as of 2012-03-07 12:15:40
Size: 1657
Editor: Kurgan
Comment:
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

LinuxDebian/Postgres (last edited 2012-03-07 12:15:40 by Kurgan)