mercredi 19 août 2009

Crash innodb sur mysql

Si vous avez un joli log d'erreur avec des lignes suivantes :
mysqld: InnoDB: Error: page 59 log sequence number 11 407566276
mysqld: InnoDB: is in the future! Current system log sequence number 0 8214.
mysqld: InnoDB: Your database may be corrupt or you may have copied the InnoDB
mysqld: InnoDB: tablespace but not the InnoDB log files. See

Et mysql ne redémarre pas ...


Voilà la procédure pour réussir à récupérer les données et redémarrer le tout : (Pensez à couper toutes vos applications qui se connecte sur mysql avant)


1 - ajouter dans la configuration /etc/mysql/my.cnf la ligne suivante dans la section innodb :
innodb_force_recovery=8

2 - démarrer le serveur
/etc/init.d/mysql start

(Normalement il devrait démarrer avec pleins de lignes dans les logs !)


3 - réaliser un dump de vos bases :

Je vous conseille de faire base par base, et voir table par table si certains de vos volumes vous semble anormaux.
mysqldump --force --compress --triggers --routines --create-options -p mysql > /home/mysql.sql
mysqldump --force --compress --triggers --routines --create-options -p ma_base > /home/ma_base.sql
4 - arrêter mysql + tout dégager
/etc/init.d/mysql stop
mv /home/mysql /home/mysql-crashed
mkdir /home/mysql
chown mysql:mysql /home/mysql -R
5 - réinstallation de mysql
#commenter la ligne : innodb_force_recovery dans la configuration
nano /etc/mysql/my.cnf

#lance l'install
mysql_install_db
/etc/init.d/mysql start
/etc/init.d/mysql stop
chown mysql:mysql /home/mysql -R
/etc/init.d/mysql start
(Attention votre mot de passe root redeviens vierge)

6 - remettre les données
# mysql mysql < /home/mysql.sql # mysql ma_base < /home/ma_base.sql # mysql > flush privileges;
> exit;

// un peu de tunning
# echo "192000" > /proc/sys/net/nf_conntrack_max
# echo "2048" > /proc/sys/fs/epoll/max_user_instances
# echo 'cfq' > /sys/block/sda/queue/scheduler

7 - reboot pour être sur qu'il rebootera à l'avenir sans problème
# /etc/init.d/mysql restart

Enjoy :)

0 commentaires:

Enregistrer un commentaire