Maintenance
Maintenance et sauvegarde du serveur MySQL
Requête de maintenance
Pour réaliser une opération de maintenance sur une table, on exécute aussi une requête.
Requête de maintenancemysql> CHECK TABLE mabase.clients;
Suivant la réponses de la requête de maintenance, on réalisera ces requêtes:
Si message type est "une table pas fermée" dans un CHECK TABLE, faire unmysql> FLUSH TABLES;
Note: la commande FLUSH vide les caches de MySQL
Par exemple, lors d'un changement d'adresse IP faire un FLUSH HOSTS; ou encore un FLUSH LOGS; pour fermer les fichiers de suivis actifs et en ouvrir de nouveaux.
Pour vider les caches des tables en lecturemysql> FLUSH TABLES WITH READ LOCK;
Après avoir verrouiller les tables en lecture "LOCK TABLES;" - "UNLOCK TABLES;" pour déverrouiller. Voir la syntaxe de la commande FLUSH
Si message type est "erreur" dans un CHECK TABLE, faire un
mysql> REPAIR TABLE clients;
Commande TEE
La commande "TEE" enregistre tout ce qui est affiché à l'écran (commandes et résultats)
Pour arrêter la sauvegarde des informations, on utilise la commande NOTEE (mysql> NOTEE;)mysql> TEE C:/Program Files/MySQL/monfichier.txt;
Attention: commande sans guillemets!
Sauvegarde
Pour réaliser une sauvegarde on exécute une requête qui copie 2 fichiers :
• clients.frm (structure de la table)
• clients.myd (soit mydata: fichiers d'extension)
-> Notez que le fichier correspondant à la table index (clients.myi) n'est pas sauvegardée car il sera restauré à partir des deux autres fichiers.
mysql> BACKUP TABLE mabase.clients TO "C:/";
mysql> RESTORE TABLE mabase.clients FROM "C:/";
Autre requête de maintenance
"Défragmenter" une tablemysql> OPTIMIZE TABLE clients;
mysql> ANALYZE TABLE clients;
mysql> DESCRIBE articles;
mysql> TRUNCATE Table articles;
mysql> KILL 8;
Attention: un kill user ou threads sur un utilisateur déjà connecté depuis son invite de commande (...bin> mysql -h 10.33.100.46 -u root2 -p) sera déconnecté. Mais si celui ci refait une requête aussitôt, il est reconnecté automatiquement.
Modifier une option du serveur (voir les options avec un mysql> SHOW VARIABLES; et mysqladmin
mysql> SET max_connections=100;
mysql>EXPLAIN SELECT * FROM clients;
mysql>SELECT BENCHMARK(1000000, "SELCT * FROM articles");
mysql>SHOW OPEN TABLES;
mysql>SHOW GRANTS FOR root@localhost;
mysql>SHOW CREATE TABLE clients;