PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

erro postgresql PANIC:não foi possível localizar um registro de ponto de verificação válido


Ele está procurando um registro de ponto de verificação no log de transações que provavelmente não existe ou está corrompido. Você pode determinar se esse é o caso executando:
# Postgres >= 10
pg_resetwal DATADIR

# Postgres < 10
pg_resetxlog DATADIR

Se o log de transações estiver corrompido, você verá uma mensagem como:

O servidor de banco de dados não foi encerrado corretamente. A redefinição do log de transações pode fazer com que os dados sejam perdidos. Se você quiser continuar de qualquer maneira, use -f para forçar a reinicialização.

Você pode seguir as instruções e executar com -f para forçar a atualização:
# Postgres >= 10
pg_resetwal -f DATADIR

# Postgres < 10
pg_resetxlog -f DATADIR 

Isso deve redefinir o log de transações, mas pode deixar seu banco de dados em um estado indeterminado, conforme explicado na documentação do PostgreSQL em pg_resetwal :

Se pg_resetwal reclama que não pode determinar dados válidos parapg_control , você pode forçá-lo a continuar de qualquer maneira especificando o-f (força) opção. Nesse caso, os valores plausíveis serão substituídos pelos dados ausentes. Espera-se que a maioria dos campos corresponda, mas a assistência manual pode ser necessária para os campos OID seguinte, ID de transação seguinte e época, ID e deslocamento de multitransação seguinte e localização inicial do WAL. Esses campos podem ser definidos usando as opções discutidas abaixo. Se você não conseguir determinar os valores corretos para todos esses campos, -f ainda pode ser usado, mas o banco de dados recuperado deve ser tratado com ainda mais suspeita do que o habitual:um dump e recarregamento imediatos são imperativos. Não execute nenhuma operação de modificação de dados no banco de dados antes de fazer o dump, pois tal ação provavelmente piorará a corrupção.