Newsgroup: it.comp.software.database
Titolo: recupero dati da postgres

Ciao a tutti,
mi chiamo Marco ed è la prima volta che posto su questo gruppo.
Oggi mi è successa una cosa davvero terribile: il server sul quale
mantenevo il mio db postgres è crollato miseramente (Windows 2003
server small business) ed ovviamente ho dovuto reinstallare il sistema
operativo.
Purtroppo del mio db non avevo effettuato altro che copie della
cartella Postgres, ovvero nessun backup (che con postgres mi pare si
chiami dump) dal quale recuperare i dati.
La mia domanda è questa: esiste qualche tool, anche a pagamento, che
renda possibile il ripristino di un database Postgres (ver. 8.2) a
partire dai soli file della directory di installazione?
Grazie in anticipo :)
    Marco Bortolani
    info at 
marcobortolani.it

 [...]
Saluti  Manlio Perillo

On 16 Feb, 22:15, Manlio Perillo <manlio_perill...@SPAMlibero.it>
wrote:

La directory in cui Postgres salva i dati dovrebbe essere la classica
D:\Programmi\PostgreSQL\8.2\data, con le sue sottodirectory Base,
global, pg_clog e così via.
Ahimè però se mi dici di lanciare PG in modalità recupero mi cogli in
fallo: non so come farlo...
Ho provato a guardare sul web ma le informazioni sono davvero troppe
perchè riesca a trovare precisamente quello che mi serve: approfitto
troppo della tua gentilezza se ti chiedo qualche dritta ulteriore,
fosse anche un link ad un sito abbastanza mirato (anche in lingua
inglese)?
Grazie di nuovo :)
    Marco

 global, pg_clog e così via.
fai semplicmeente partire pgsql
pg_ctl start -D D:\Programmi\PostgreSQL\8.2\data -l logfile
prova...


Ormai mi arrendo: giuro che domattina è la prima cosa che provo (devo
prima aspettare che termini il ripristino dei file dalla cessettina
dei backup di Windows).
Nel caso, spero di poter approfittare ancora della tua disponibilità,
ma nel mentre ti ringrazio davvero tanto :)
    Marco

 chiami dump) dal quale recuperare i dati.
Indipendentemente da come finisce:
Copiare direttamente i file a fini di backup puo` essere una strategia
di backup piu` o meno valida. Nel caso dei database, questa puo` essere
veramente controproducente, in quanto l'unico modo di garantire la
corretta validita` dei dati e` fermando il servizio il tempo necessario
ad eseguire l'operazione (il cosiddetto backup a freddo).
Personalmente ritengo che eseguire un dump del database sia piu` sicuro
e semplice, in quanto non solo permette di salvare solo i dati (ed
evita, quindi, problemi di incompatibilita` tra una versione del
database ed un'altra), ma non richiede nemmeno di fermare il servizio
(cosiddetto backup a caldo)
Enrico

 pare si chiami dump) dal quale recuperare i dati.
Hum anche se il server si schianta, dal file di log si dovrebbe
ripristinare tutto senza metter mano al backup. 


Sono finalmente riuscito a recuperare i file di log e ad effettuare i
test che mi avete indicato, ma probabilmente devo avere sbagliato
qualcosa perchè non è successo assolutamente nulla.
Lo scenario è questo: sto operando su una base di dati ottenuta con il
restore di un dump del 08 gennaio ed ho a disposizione i file di log
del server originario, a partire dal 14 dicembre (una ventina giorni
prima della data del dump). Parlo di tanti file di log, più o meno uno
al giorno, come ad esempio postgresql-2009-02-10_143721.log,
postgresql-2009-02-10_151447.log e postgresql-2009-02-11_030813.log.
Opero sempre su un'installazione PostgreSQL versione 8.2 in ambiente
Windows, cofigurato per essere eseguito come servizio di windows.
Per controllare il suggerimento di Manlio, "stoppo" a mano il servizio
PostgreSQL Database Server 8.2, copio i file di log recuperati dal
backup nella cartella C:\Programmi\PostgreSQL\8.2\data\pg_log e apro
il prompt dei comandi di Windows.
Mi posiziono nella cartella C:\Programmi\PostgreSQL\8.2\bin e digito
il comando pg-ctl start -D C:\Programmi\PostgreSQL\8.2\data -l C:
\Programmi\PostgreSQL\8.2\data\pg_log\<nome primo file>.log
A video mi compare un bel "server starting" e poi di nuovo il prompt
di DOS. Se eseguo con il nome di file successivo, mi compare un bel
pg_ctl: another server might be tunning; trying to start server anyway
server starting
e così via.
Ho provato a unire tutti i file di log in uno solo (con il comando
copy -b *.log logfileunico.log) ed a sottoporre alla pg_ctl il file
creato, della dimensione di 1,5 GB, e questo parte in un nanosecondo
senza recuperare assolutamente nulla.
Approfitto quindi della vostra gentilezza per le seguenti domande:
1. devo poi attivare e fermare il servizio di windows per poter
elaborare in cascata tutti gli altri file di log? (sono in tutto 146
file)
2. come posso controllare se sto recuperando correttamente i dati?
Siccome più mi ci addentro e più capisco di non capirci, e siccome ho
parecchia premura (si tratta del database con i dati di produzione di
un mio cliente) vi chiedo se mi potete contattare personalmente, a
info @ 
marcobortolani.it
 oppure al
  tre.quattro.zero.otto.cinque.sei.tre.tre.otto.tre
(lo scrivo per esteso per non incappare in qualche malintenzionato
automatico)
Ovviamente in questo caso diventa consulenza e sono più che disposto a
trattarla come tale ;)
Grazie in anticipo.

 
Molti esperti di PostgreSQL sono presenti sulla mailing list
postgr...@lists.psql.it
Puoi provare a chiedere anche li.
Ciao  Manlio