L'index d'erreur Postgres 9.1.6 contient une page zéro inattendue au bloc 0

8

J'ai configuré la réplication en streaming sur Postgres 9.1.6 fonctionnant sur un serveur Debian et ça se passe bien.

Lorsque j'essaie d'exécuter une requête sur la base de données de réplicas, j'obtiens l'erreur ci-dessous:

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

Quelle pourrait être la cause de cette erreur?

La question est également publiée dans /programming/17865135/postgres-9-1-6-error-index-contains-unexpected-zero-page-at-block-0

McKibet
la source
Pouvez-vous exécuter d'autres requêtes: SELECT version()ou SELECT now()?
1
Obtenez-vous cette erreur lorsque vous vous connectez à la base de données? Pouvez-vous vous connecter du tout? Si oui, pouvez-vous émettre des requêtes avec succès? Sinon, cela ne semble pas très bon. Quels sont vos paramètres liés à fsync sur la réplique? Que savons-nous du système de stockage là-bas?
dezso

Réponses:

7

Je viens de rencontrer le même problème sur Postgres 8.3.11. Bien que je n'aie pas pu identifier la cause première, le correctif était assez simple:

REINDEX INDEX tbl_cust_id_idx;

Cette page contient des conseils sur la cause possible de l'erreur, bien qu'ils soient vagues:

Un index de table indiqué a été corrompu (peut être le résultat de postgres récents ou d'une défaillance du système, il y avait un manque d'espace libre sur le périphérique, etc.).

Idéalement, il serait utile que quelque chose puisse être mis en place pour prévenir ou corriger ces erreurs de manière proactive. Du bon côté, c'est la première fois que nous voyons ce problème depuis plusieurs années et sur des centaines de machines.

Justin Ethier
la source