Réparation de Corrompre la base de données postgresql
J'ai plusieurs erreurs avec mon postgresql db, ce qui a abouti après une coupure de courant:
Je ne peux pas accéder à la plupart des tables de ma base de données. Lorsque j'essaie par exemple select * from ac_cash_collection
, je reçois le foolowing erreur:
ERREUR: manque de numéro de segment 0 pour le toast de la valeur 118486855 dans pg_toast_2619
quand j'essaie de pg_dump j'obtiens l'erreur suivante:
Message d'erreur du serveur: ERREUR: la relation "public.st_stock_item_newlist" n'existe pas pg_dump: La commande a été: VERROUILLER la TABLE public.st_stock_item_newlist DANS l'ACCÈS en MODE de PARTAGE
Je suis allé de l'avant et a essayé de courir de réindexation de la base de données entière, je l'ai fait, je l'ai laissé runnng, est allé dormir, et j'ai trouvé qu'il n'avait pas fait quelque chose le matin, donc j'ai dû l'annuler.
J'ai besoin d'aide pour résoudre ce dès que possible, s'il vous Plaît aider.
Je suppose que la panne d'alimentation endommagé le disque dur, en quelque sorte, vous aurez très probablement besoin de restaurer votre sauvegarde
Avez-vous essayé de Google?
La surtension d'alimentation endommagé l'arrière de l'onduleur trop...
Peut-être que ceci peut être utile.
Avez-vous essayé de Google?
La surtension d'alimentation endommagé l'arrière de l'onduleur trop...
Peut-être que ceci peut être utile.
OriginalL'auteur Jeff Lee Ngotho | 2012-06-14
Vous devez vous connecter pour publier un commentaire.
Avant de vous faire rien d'autre, http://wiki.postgresql.org/wiki/Corruption et de la loi sur les instructions. À défaut de le faire risque de rendre le problème encore pire.
Il y a deux paramètres de configuration figurant dans le Beaux-Manuel qui pourrait être utile:
ignore_system_indexes
etzero_damaged_pages
. Je n'ai jamais utilisé, mais je voudrais si j'étais désespérée ...Je ne sais pas si elles aider à lutter contre le toast-tables. En tout cas, si l'établissement d'eux les causes de votre base de données(s) pour devenir utilisable encore, j' {sauvegarde + drop + restaurer} pour obtenir toutes les tables et les catalogues dans des nouveau-nés forme à nouveau. Succès!
zero_damaged_pages
t affecter TOAST tables (et les indices et tout le reste). Il fonctionne par effacer les données, pas de le récupérer. Pense très, très soigneusement avant de l'utiliser, oupg_resetxlog
, ou l'un des autres "gros marteau" outils de récupération.D'excellents conseils, à mon humble avis. Une relecture de l'OQ, il semble qu'il ya aussi endommagé les catalogues en cause.
La sauvegarde peut ne pas être possible ici. Attendre
pg_dump
échoue avec des erreurs commecompressed data is corrupt
si votre utilisation de tables de stockage prolongée.C'est très probablement l'une des moins utiles pages wiki dans l'existence. Votre réponse ici donne plus de détails que n'importe quoi sur cette page.
Pour moi la seule façon de résoudre la question était de supprimer les données à partir de tables (qui n'était pas critique pour l'application).
OriginalL'auteur wildplasser
Si vous avez des sauvegardes, il suffit de restaurer à partir d'eux.
Si ce n'est pas que vous avez tout juste d'apprendre pourquoi vous avez besoin de sauvegardes régulières. Il n'y a rien de PostgreSQL peut le faire si le matériel se comporte mal.
En plus, si jamais vous vous trouvez dans cette situation, tout d'abord arrêter de PostgreSQL et de prendre un dossier complet de sauvegarde au niveau de tous les tablespaces, WAL etc. De cette façon, vous avez un point de départ connu.
Donc - si vous souhaitez récupérer certaines données.
C'est beaucoup de travail, et puis vous aurez besoin d'aller à travers et vérifier ce que vous avez récupéré et essayer de comprendre ce qu'est manquant/incorrect.
Il ya plus de choses que vous pouvez faire (création de blocs vides, dans certains cas, vous permettent de vidage des données partielles), mais ils sont tous plus compliqué et fastidieux et moins que les données sont particulièrement utiles n'en vaut pas la peine.
Message clé à retenir de cette - assurez-vous de prendre des sauvegardes régulières, et assurez-vous qu'ils travaillent.
OriginalL'auteur Richard Huxton
Avant de faire QUOI que ce soit d'AUTRE, un dossier complet-système de la copie au niveau de la base de données endommagée.
http://wiki.postgresql.org/wiki/Corruption
Échec détruit des preuves sur ce qui a provoqué la corruption, et signifie que si vos efforts de réparation vont mal et de faire empirer les choses que vous ne pouvez pas annuler.
Copier maintenant!
OriginalL'auteur Craig Ringer