pg_xlog Usando Debian Wheezy, PostgreSQL 9.3Postgres non si avvia dopo l'eliminazione di file
mio database è andato giù perché la partizione in cui mantiene i file WAL ottenuto pieno. Quindi, ho eliminato tutto all'interno di ./pg_xlog/
, perché non sapevo cosa fossero (sì, incredibilmente stupido da parte mia). Ora il servizio Postgres non si avvia, anche se il problema, secondo syslog:
00000: could not open tablespace directory "pg_tblspc/16386/PG_9.3_201306121": File or directory not found
LOCAL: RelationCacheInitFileRemoveInDir, relcache.c:4895
00000: Primary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6543
00000: Secondary checkpoint record is invalid
LOCAL: ReadCheckpointRecord, xlog.c:6547
PANIC: XX000: could not locate a valid checkpoint record
LOCAL: StartupXLOG, xlog.c:5228
io non sono del tutto sicuro se il problema è che non riesce a trovare il pg_tblspc proprio o la totale mancanza di checkpoint WAL File. Il percorso effettivo in cui sono memorizzati i database è /dados/PG_9.3_201306121
. Cosa posso fare per far ripartire il servizio?
EDIT1: Ok, sono riuscito a rimettere online la cosa. Alcuni database sono corrotti. Sono riuscito a DROPDB
due di loro (non riuscivo nemmeno a connettersi a loro senza costringere un riavvio del servizio). Ho provato a farlo con un altro che è stato corrotto, ma l'errore era di nuovo collegato a xlog. Ho provato a fare un ripristino pulito su di esso, ma il ripristino era incompleto. Quindi, ho creato un nuovo database e ho provato a ripristinare un backup precedente di questo database. Inoltre è venuto incompleto.
Ora non riesco a eliminare alcun database, né crearne di nuovi, ottengo sempre un errore xlog flush request not satisfied
. Ho provato a eseguire pg_resetxlog
, ma non sembra fare nulla. Un'altra cosa che l'errore mostra è cannot write to block 1 of pg_tblspc/16385/PG_9.3_201306121/36596452/11773
, write error may be permanent
.
EDIT2: Parte del problema precedente era con quel file 11773. L'ho rinominato in 11773.corrupt e ora il database mi consente di creare e rilasciare nuovamente.
Nonono, non continuare ad usarlo! Eseguire il backup, chiuderlo, rinominare la vecchia directory dei dati, 'initdb' uno nuovo (o usare il wrapper del pacchetto, comunque lo si è configurato per la prima volta) e quindi ripristinare i dump nella nuova istanza di PostgreSQL. –