O índice de erros do Postgres 9.1.6 contém zero páginas inesperadas no bloco 0

8

Eu configurei a replicação de streaming no Postgres 9.1.6 em execução em um servidor debian e está indo bem.

Quando tento executar uma consulta no DB de réplica, obtenho o erro abaixo:

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

O que pode estar causando esse erro?

A pergunta também está publicada em /programming/17865135/postgres-9-1-6-error-index-contains-unexpected-zero-page-at-block-0

McKibet
fonte
Você pode executar outras consultas: SELECT version()ou SELECT now()?
11
Você recebe esse erro ao se conectar ao banco de dados? Você consegue se conectar? Se sim, você pode emitir consultas com êxito? Caso contrário, isso não parece muito bom. Quais são as configurações relacionadas ao fsync na réplica? O que sabemos sobre o sistema de armazenamento lá?
Dezso

Respostas:

7

Acabei de encontrar o mesmo problema no Postgres 8.3.11. Embora eu não tenha conseguido identificar a causa raiz, a correção foi bastante simples:

REINDEX INDEX tbl_cust_id_idx;

Esta página contém dicas sobre o que pode ter causado o erro, embora sejam vagas:

Um índice de tabela indicado foi corrompido (pode ser resultado de postgres recentes ou falha do sistema, falta de espaço livre no dispositivo etc.).

Idealmente, seria útil se houvesse algo que pudesse ser implementado para prevenir ou corrigir proativamente esses erros. Pelo lado positivo, esta é a primeira vez que vimos esse problema em vários anos e em centenas de máquinas.

Justin Ethier
fonte