Pas plus tard qu'hier, l'un de nos clients s'est plaint d'effectuer des sauvegardes dans une base de données 1C basée sur PostgreSQL. Étant donné que nous ne leur fournissons que des VPS et rien de plus, nous ne savions pas ce qui se passait à l'intérieur. Et il s'est avéré que les sauvegardes n'ont pas été écrites depuis longtemps, car elles n'ont pas non plus leur propre administrateur et personne ne regarde cela.
Ils nous ont envoyé un appel, ont regardé ce qui s'y passait et ont vu ce qui suit en essayant de faire une copie de sauvegarde :
ERREUR : page invalide dans le bloc 2196 de la relation base/349583/364737
Après avoir passé jusqu'à 15 minutes, il s'est avéré qu'il n'est pas si facile de prendre et d'appuyer sur le bouton "Bien", et il n'y a pas de solution régulière à partir du mot "Absolument". Il n'y a pas non plus de scripts prêts à l'emploi. En conséquence, après avoir décidé qu'il serait nécessaire de publier la solution trouvée pour ceux qui utilisent PostgreSQL sous Windows.
- Nous lançons pgAdmin.
- Lancez l'éditeur de requêtes et :
- Le chemin d'accès à la base de données, je pense que personne ne doutera avec quelle base de données le problème est survenu, nous allons donc omettre la méthode de recherche du nom de la base de données en sachant seulement piètement/349583
- Ensuite, pour insérer du texte :
SÉLECTIONNEZ pg_filenode_relation(0, 364737); - en conséquence, nous obtenons le nom de la table. Nous avions un tableau "_document143_vt2652" - Maintenant, nous devons commencer sa récupération :
SET zero_damaged_pages = activé ;
VIDE PLEIN _document144 ;
- A la fin de l'exécution, vous devez ré-indexer toute la base de données !
Il convient de noter que certaines données peuvent être perdues de la table !