aujourd'hui, mon site était en panne toute la journée, j'ai vérifié les journaux (je journalise manuellement toutes les mauvaises requêtes SQL) et j'ai eu peur:
SELECT MIN(DATEAT),MAX(DATEAT) FROM table = Table "./table"
est marqué comme planté et la dernière réparation (automatique?) a échoué
cela ne s'est jamais produit en 3 ans. J'ai réparé la table de phpMyAdmin, le résultat était:
db.table repair warning Number of rows changed from 0 to 3279
db.table repair status OK
ça a l'air bien maintenant mais je ne suis pas détendu - je pourrais perdre des données? Et comment prévenir pour que cela ne se reproduise plus à l'avenir? Cette table est une table myIsam habituelle.
Réponses:
2 pour la réponse № 1MyISAM est connu pour corrompre les données lors d'un crash. C'est une bonne raison de convertir toutes vos tables importantes en InnoDB. Voir aussi MyISAM contre InnoDB.
Les seules tables MyISAM que vous conservez doivent être cellesque vous pouvez recréer facilement à partir de données stockées en toute sécurité dans les tables InnoDB (certaines personnes le font pour utiliser les index de texte intégral de MyISAM, mais conservent les données canoniques dans InnoDB).
Pour des outils pour comparer les données, je recommande pt-table-sync --print.
Voir Comparer deux bases de données MySQL pour d'autres options.