sql >> Databasteknik >  >> RDS >> PostgreSQL

postgresql-fel PANIC:kunde inte hitta en giltig kontrollpunktspost

Den letar efter en kontrollpunktspost i transaktionsloggen som förmodligen inte finns eller är skadad. Du kan avgöra om så är fallet genom att köra:

# Postgres >= 10
pg_resetwal DATADIR

# Postgres < 10
pg_resetxlog DATADIR

Om transaktionsloggen är korrupt kommer du att se ett meddelande som:

Databasservern stängdes inte av rent. Att återställa transaktionsloggen kan göra att data går förlorade. Om du ändå vill fortsätta, använd -f för att tvinga fram återställning.

Du kan sedan följa instruktionerna och köra med -f för att tvinga fram uppdateringen:

# Postgres >= 10
pg_resetwal -f DATADIR

# Postgres < 10
pg_resetxlog -f DATADIR 

Det bör återställa transaktionsloggen, men det kan lämna din databas i ett obestämt tillstånd som förklaras i PostgreSQL-dokumentationen på pg_resetwal :

Om pg_resetwal klagar på att den inte kan fastställa giltiga data för pg_control , kan du tvinga den att fortsätta ändå genom att ange -f (tvinga) alternativ. I det här fallet kommer rimliga värden att ersättas med de data som saknas. De flesta av fälten kan förväntas matcha, men manuell hjälp kan behövas för nästa OID, nästa transaktions-ID och epok, nästa multitransaktions-ID och offset, och WAL-startplatsfält. Dessa fält kan ställas in med hjälp av alternativen som diskuteras nedan. Om du inte kan fastställa korrekta värden för alla dessa fält, -f kan fortfarande användas, men den återställda databasen måste behandlas med ännu mer misstänksamhet än vanligt:​​en omedelbar dumpning och laddning är absolut nödvändig. Utför inga datamodifierande operationer i databasen innan du dumpar, eftersom en sådan åtgärd sannolikt kommer att förvärra korruptionen.



  1. MySQL felaktig nyckelfil för tmp-tabell när man gör flera joins

  2. SQL Server NÅGON operatör förklaras

  3. SQL Query Where Column ='' returnerar emoji-tecken 🎃 och 🍰

  4. Hur man anger platsen för datafiler och loggfiler när man skapar en databas i SQL Server