Postgres 9.1.6 Fehlerindex enthält unerwartete Nullseite bei Block 0

8

Ich habe die Streaming-Replikation auf Postgres 9.1.6 eingerichtet, das auf einem Debian-Server ausgeführt wird, und es läuft einwandfrei.

Wenn ich versuche, eine Abfrage in der Replikat-Datenbank auszuführen, wird der folgende Fehler angezeigt:

ERROR:  index "tbl_cust_id_idx" contains unexpected zero page at block 0
HINT:  Please REINDEX it.

Was könnte diesen Fehler verursachen?

Die Frage wird auch unter /programming/17865135/postgres-9-1-6-error-index-contains-unexpected-zero-page-at-block-0 veröffentlicht

McKibet
quelle
Können Sie andere Abfragen ausführen: SELECT version()oder SELECT now()?
1
Erhalten Sie diesen Fehler, wenn Sie eine Verbindung zur Datenbank herstellen? Kannst du überhaupt eine Verbindung herstellen? Wenn ja, können Sie erfolgreich Abfragen stellen? Ansonsten sieht das nicht sehr gut aus. Was sind Ihre fsync-bezogenen Einstellungen auf dem Replikat? Was wissen wir über das dortige Speichersystem?
Dekso

Antworten:

7

Ich bin gerade auf Postgres 8.3.11 auf dasselbe Problem gestoßen. Obwohl ich die Grundursache nicht identifizieren konnte, war die Lösung einfach genug:

REINDEX INDEX tbl_cust_id_idx;

Diese Seite enthält Hinweise darauf, was den Fehler verursacht haben könnte, obwohl sie vage sind:

Ein angegebener Tabellenindex wurde beschädigt (möglicherweise aufgrund eines kürzlich aufgetretenen Postgres oder eines Systemfehlers, es fehlte an freiem Speicherplatz auf dem Gerät usw.).

Im Idealfall wäre es hilfreich, wenn etwas eingerichtet werden könnte, um diese Fehler proaktiv zu verhindern oder zu korrigieren. Auf der positiven Seite ist dies das erste Mal seit mehreren Jahren, dass wir dieses Problem auf Hunderten von Maschinen gesehen haben.

Justin Ethier
quelle