Wenn ich den Postgres-Server (v9.0.1) lade, bekomme ich eine Panik, die den Start verhindert:
PANIC: Es konnte kein gültiger Prüfpunktdatensatz gefunden werden
Wie kann ich das beheben?
postgresql
postgresql-9.0
nathan_scott
quelle
quelle
Antworten:
Es wird nach einem Prüfpunktdatensatz im Transaktionsprotokoll gesucht, der wahrscheinlich nicht vorhanden oder beschädigt ist. Sie können feststellen, ob dies der Fall ist, indem Sie Folgendes ausführen:
# Postgres >= 10 pg_resetwal DATADIR # Postgres < 10 pg_resetxlog DATADIR
Wenn das Transaktionsprotokoll beschädigt ist, wird folgende Meldung angezeigt:
Sie können dann den Anweisungen folgen und mit ausführen
-f
, um das Update zu erzwingen:# Postgres >= 10 pg_resetwal -f DATADIR # Postgres < 10 pg_resetxlog -f DATADIR
Das sollte das Transaktionsprotokoll zurücksetzen, es könnte jedoch dazu führen, dass Ihre Datenbank in einem unbestimmten Zustand bleibt, wie in der PostgreSQL-Dokumentation zu folgenden Themen
pg_resetwal
erläutert :quelle
pg_resetwal /usr/local/var/postgres/
dann laufende Postgres wiepostgres -D /usr/local/var/postgres
bei mir funktioniert.Ich verwende 9.1.7 und finde, dass Folgendes erfolgreich ausgeführt wurde:
Ihr letztes Argument für den
pg_resetxlog
Befehl sollte der Speicherort auf der Festplatte sein, an dem postgres Ihre Datenbankdaten speichert.quelle
Wie hier angegeben, sollte pg_resetxlog nicht ausgeführt werden. Die Antworten, die sich darauf beziehen, sind schlechte Ratschläge. Unter der Annahme, dass der Fehler in einem Kontext der Kopier- / Replikationsinstanz aufgetreten ist, bietet der Link eine prägnantere Möglichkeit zum Kopieren / Replizieren mit
pg_basebackup
quelle
Führen Sie eine kontinuierliche Archivierung durch? Wenn Sie zu diesem Zeitpunkt ein Backup erstellen, ist es möglicherweise vorsichtiger, backup_label zu entfernen.
pg_resetxlog
ist eine schwere Sache.quelle
Genau wie das Protokoll mit der Aufschrift: Es konnte kein gültiger Prüfpunktdatensatz gefunden werden. Postgres kann im Verzeichnis $ PGDATA / pg_xlog / keine ordnungsgemäße WAL finden. Versuchen Sie, pg_resetxlog zu verwenden
quelle