sql >> Database teknologi >  >> RDS >> PostgreSQL

postgresql fejl PANIC:kunne ikke finde en gyldig kontrolpunktpost

Den leder efter en kontrolpunktpost i transaktionsloggen, som sandsynligvis ikke eksisterer eller er beskadiget. Du kan afgøre, om dette er tilfældet ved at køre:

# Postgres >= 10
pg_resetwal DATADIR

# Postgres < 10
pg_resetxlog DATADIR

Hvis transaktionsloggen er korrupt, vil du se en meddelelse som:

Databaseserveren blev ikke lukket helt ned. Nulstilling af transaktionsloggen kan medføre, at data går tabt. Hvis du vil fortsætte alligevel, brug -f for at tvinge nulstilling.

Du kan derefter følge instruktionerne og køre med -f for at gennemtvinge opdateringen:

# Postgres >= 10
pg_resetwal -f DATADIR

# Postgres < 10
pg_resetxlog -f DATADIR 

Det burde nulstille transaktionsloggen, men det kan efterlade din database i en ubestemt tilstand som forklaret i PostgreSQL-dokumentationen på pg_resetwal :

Hvis pg_resetwal klager over, at den ikke kan bestemme gyldige data for pg_control , kan du tvinge den til at fortsætte alligevel ved at angive -f (tvinge) mulighed. I dette tilfælde vil plausible værdier blive erstattet af de manglende data. De fleste af felterne kan forventes at matche, men der kan være behov for manuel assistance til næste OID, næste transaktions-ID og epoke, næste multitransaktions-ID og offset og WAL-startplaceringsfelter. Disse felter kan indstilles ved hjælp af mulighederne beskrevet nedenfor. Hvis du ikke er i stand til at bestemme korrekte værdier for alle disse felter, -f kan stadig bruges, men den gendannede database skal behandles med endnu mere mistænksomhed end normalt:en øjeblikkelig dump og indlæsning er bydende nødvendigt. Udfør ikke nogen data-modificerende operationer i databasen, før du dumper, da enhver sådan handling sandsynligvis vil gøre korruptionen værre.



  1. ORACLE og TRIGGERS (indsat, opdateret, slettet)

  2. Hvordan installeres PostgreSQL's pg gem på Ubuntu?

  3. Objektet 'DF__*' er afhængig af kolonne '*' - Ændring af int til dobbelt

  4. Hold PostgreSQL fra nogle gange at vælge en dårlig forespørgselsplan