Réparation de tables MyISAM dans MariaDB
Le passage de MySQL à MariaDB n’est pas une franche réussite au point où je me pose des tas de questions sur la fiabilité de MariaDB. Passons. Très régulièrement, de nombreuses tables de mes schémas WordPress sont marquées crashed dans le fichier de logs /var/log/mariadb/mariadb.log sans que j’en comprenne véritablement les raisons. Je dois, à chaque fois les réparer.
L’utilitaire myisamchk
Les erreurs qui peuvent se produire au niveau des bases de données de type MyISAM concernent principalement des incohérences rencontrées entre la table des données et les index qui lui sont associées. Dans ce cadre, il convient alors de réparer et de réindexer les tables, en mode offline (service arrêté) .
Le script présenté ci-dessous est réalisé sur une CentOS 7 où est installée MariaDB 10.0.25-1 à partir des dépôts de l’éditeur de la base de données. Il est exécuté dans l’environnement de l’utilisateur root.
#!/bin/bash systemctl stop httpd /etc/init.d/mysql stop for DB in dsfc vm do for MYI in $(find /home/mysql/$DB -type f -name *.MYI|cut -d '.' -f 1) do myisamchk -r $MYI done done chown mysql:mysql /home/mysql -R find /home/mysql -type d -exec chmod 777 {} \; find /home/mysql -type f -exec chmod 666 {} \; /etc/init.d/mysql start systemctl start httpd