Article ID: 6586, created on Aug 18, 2009, last review on Mar 31, 2016

  • Applies to:
  • Plesk

Symptômes

1) L'erreur suivante s'affche dans Parallels Plesk Panel :

Erreur : PleskMainDBException
MySQL query failed: Incorrect information in file: './psa/misc.frm'

0: /usr/local/psa/admin/plib/common_func.php3:211
        db_query(string 'select param, val from misc')
1: /usr/local/psa/admin/plib/common_func.php3:490
        get_param(string 'login_timeout')
2: /usr/local/psa/admin/plib/class.Session.php:120
        Session->Session()
3: /usr/local/psa/admin/auto_prepend/auth.php3:155


2) mysqldump et mysqlcheck échouent avec un message d'erreur, qui indique qu'un tableau n'existe pas. Par exemple :

~# mysqlcheck -uadmin -p`cat /etc/psa/.psa.shadow` psa
psa.BackupTasks
error    : Can't find file: 'BackupTasks.MYD' (errno: 2)
psa.BackupsObjects
error    : Can't find file: 'BackupsObjects.MYD' (errno: 2)
psa.BackupsRunning
error    : Incorrect information in file: './psa/BackupsRunning.frm'
psa.BackupsScheduled
error    : Incorrect information in file: './psa/BackupsScheduled.frm'
psa.BackupsSettings
...


3) Un tableau ne peut pas être interrogé correctement avec les déclarations "SELECT". Par exemple :

mysql> select * from psa.misc;
ERROR 1033 (HY000): Incorrect information in file: './psa/misc.frm'

mysql>


4. Le tableau ne peut pas être réparé car le moteur InnoDB ne prend pas en charge la réparation.

mysql> repair table misc;
+-------------------------+--------+----------+---------------------------------------------------------+
| Table                   | Op     | Msg_type | Msg_text                                                |
+-------------------------+--------+----------+---------------------------------------------------------+
| psa.APSApplicationItems | repair | note     | The storage engine for the table doesn't support repair |
+-------------------------+--------+----------+---------------------------------------------------------+
1 row in set (0.01 sec)

mysql>

Cause

La corruption d'un moteur de base de données InnoDB s'est produite. 

Résolution

Pour résoudre ce problème, nous vous conseillons de restaurer le moteur InnoDB. Cependant, notez que la restauration peut échouer. Dans ce cas, nous vous conseillons de restaurer les bases de données à partir de la sauvegarde. Pour restaurer le moteur InnoDB, nous vous conseillons de dumper toutes les bases de données, de supprimer les bases de données et les fichiers InnoDB corrompus, de recréer un moteur MySQL de base et de restaurer les bases de données à partir du dump.

Utilisez les commandes ci-dessous pour procéder à la restauration :

1) Arrêtez mysqld et sauvegardez tous les fichiers des bases de données localisés dans /var/lib/mysql/ :

~# /etc/init.d/mysqld stop
~# mkdir /root/mysql_backup
~# cp -r /var/lib/mysql/* /root/mysql_backup/


2) Ajoutez l'option innodb_force_recovery dans la section [mysqld] du fichier de configuration MySQL. Cette option vous permettra de démarrer MySQL et de créer un dump de la base de données. Par exemple dans /etc/my.cnf :

 /etc/my.cnf
---8<---
[mysqld]
innodb_force_recovery = 4
--->8---


REMARQUE  Vous pouvez augmenter l'option de 1 à 2, 3 et 6, jusqu'à ce que vous receviez le dump correct. Pour en savoir plus, consultez cette page.

3) Démarrez le service mysqld :

~# /etc/init.d/mysqld start

4) Dumpez toutes les bases de données, par ex. :

~# mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` -A > dump.sql

Si le dumping échoue avec une erreur (par exemple « Incorrect information in file: './psa/APSApplicationItems.frm' when using LOCK TABLES"), essayez d'augmenter innodb_force_recovery et de dumper une nouvelle fois les bases de données.

5) Recréez la principale base de données « mysql » et le moteur InnoDB. Pour ce faire, arrêtez mysqld :

~# /etc/init.d/mysqld stop

6) Supprimez les contenus de /var/lib/mysql/. (assurez-vous que vous avez tous les dumps réels ou la copie récente du répertoire. Le répertoire est sauvegardé dans la section 1) :

~# rm -rf /var/lib/mysql/*

7) Supprimez l'option innodb_force_recovery dans /etc/my.cnf.

8) Démarrez mysqld :

~# /etc/init.d/mysqld start

Cela recréera la principale base de données MySQL « mysql » et la base de données du moteur InnoDB. Vous pouvez voir que les fichiers de bases de données ont été créés dans /var/lib/mysql/. Cependant notez que seule la configuration MySQL par défaut a été recréée. Toutes les bases de données doivent être recréées à partir du dump.

9) Restaurez les bases de données à partir du dump :

~# mysql -uadmin -p`cat /etc/psa/.psa.shadow` < dump.sql

Si la corruption n'a pas pu être restaurée avec la plus haute valeur de innodb_force_recovery, et si le dump a été créé, les bases de données doivent être restaurées à partir de la sauvegarde.

La sauvegarde quotidienne de la base de données Parallels Plesk Panel est enregistrée dans le répertoire de sauvegarde, DUMP_D. Par exemple :

~# ls -l /var/lib/psa/dumps
total 1444
-rw------- 1 root   root   141960 Aug  8 01:03 mysql.daily.dump.0.gz
-rw------- 1 root   root   141925 Aug  7 01:03 mysql.daily.dump.1.gz
-rw------- 1 root   root   141883 Aug  6 01:03 mysql.daily.dump.2.gz
-rw------- 1 root   root   141990 Aug  5 01:04 mysql.daily.dump.3.gz
-rw------- 1 root   root   142114 Aug  4 01:03 mysql.daily.dump.4.gz
-rw------- 1 root   root   142113 Aug  3 01:03 mysql.daily.dump.5.gz
-rw------- 1 root   root   142350 Aug  2 01:03 mysql.daily.dump.6.gz
-rw------- 1 root   root   143188 Aug  1 01:03 mysql.daily.dump.7.gz
-rw------- 1 root   root   143208 Jul 31 01:03 mysql.daily.dump.8.gz
~#


Utilisez la commande suivante pour restaurer la base de données à partir de la toute dernière sauvegarde mysql.daily.dump.0.gz :

~# zcat /var/lib/psa/dumps/mysql.daily.dump.0.gz | mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa

Informations supplémentaires

Il se peut que cela dure trop longtemps lorsque vous restaurez les bases de données. Ajoutez l'option wait_timeout dans /etc/my.cnf< :

/etc/my.cnf
---8<---
[mysqld]
wait_timeout = 1800
--->8---


et redémarrez le service mysqld :

~# /etc/init.d/mysqld restart

Informations supplémentaires

Consultez également l'article Parallels Plesk Panel cannot be opened with error "MySQL query failed: Incorrect information in file: './psa/misc.frm'"

56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c caea8340e2d186a540518d08602aa065 e0aff7830fa22f92062ee4db78133079 400e18f6ede9f8be5575a475d2d6b0a6

Email subscription for changes to this article
Save as PDF