Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
informatique:linux:mysql [2013/03/13 08:41] benoit |
informatique:linux:mysql [2020/11/03 13:32] (Version actuelle) benoit [Sauvegarde] |
||
|---|---|---|---|
| Ligne 45: | Ligne 45: | ||
| use my_database | use my_database | ||
| show table status; | show table status; | ||
| - | | + | |
| + | Voici quelques syntaxes qui donnent un résultat équivalent à ''show table status'' mais qui permet de filtrer : | ||
| + | SELECT * FROM information_schema.tables WHERE table_schema = DATABASE(); | ||
| + | SELECT TABLE_NAME,TABLE_ROWS FROM information_schema.tables WHERE table_schema = DATABASE(); | ||
| + | SELECT TABLE_NAME,TABLE_ROWS FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY TABLE_ROWS; | ||
| + | SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY TABLE_ROWS; | ||
| + | |||
| + | Exporter un tables vers un fichier CSV : | ||
| + | SELECT * FROM my_table | ||
| + | INTO OUTFILE '/tmp/my_table.csv' | ||
| + | FIELDS TERMINATED BY ',' | ||
| + | ENCLOSED BY '"' | ||
| + | LINES TERMINATED BY '\n'; | ||
| ==== USE ==== | ==== USE ==== | ||
| Ligne 58: | Ligne 70: | ||
| ou | ou | ||
| desc users; | desc users; | ||
| + | |||
| + | Pour voir le nombre de ligne par tables : | ||
| + | SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'ma_base'; | ||
| ==== GRANT ==== | ==== GRANT ==== | ||
| Ligne 89: | Ligne 104: | ||
| Lancer la requête : | Lancer la requête : | ||
| mysql < select.sql | mysql < select.sql | ||
| + | |||
| + | ou bien : | ||
| + | mysql -u root -p dbperso | ||
| + | source select.sql | ||
| :!: En cas de problème d'accent, insérer la ligne suivante en tête du script SQL pour que l'import se fasse avec un encodage en UTF-8 | :!: En cas de problème d'accent, insérer la ligne suivante en tête du script SQL pour que l'import se fasse avec un encodage en UTF-8 | ||
| Ligne 109: | Ligne 128: | ||
| ===== Monitoring ===== | ===== Monitoring ===== | ||
| - | Pour voir les process mysql : | + | Pour voir les process mysql (dans la console MySQL) : |
| + | SHOW PROCESSLIST | ||
| + | |||
| + | Pour voir les process mysql avec les requêtes détaillées (dans la console MySQL) : | ||
| + | SHOW FULL PROCESSLIST | ||
| + | |||
| + | Pour voir les process mysql sans la console MySQL : | ||
| mysqladmin processlist | mysqladmin processlist | ||
| Ligne 129: | Ligne 154: | ||
| Note :!: : Si aucun chemin de fichier n'a été précisé pour la variable **set-variable = log** le fichier log se trouvera par défaut dans ''/var/lib/mysql/HOSTNAME.log''. | Note :!: : Si aucun chemin de fichier n'a été précisé pour la variable **set-variable = log** le fichier log se trouvera par défaut dans ''/var/lib/mysql/HOSTNAME.log''. | ||
| + | Obtenir la taille des bases de données : | ||
| + | SELECT table_schema AS "Database", | ||
| + | ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" | ||
| + | FROM information_schema.TABLES | ||
| + | GROUP BY table_schema; | ||
| + | |||
| + | Obtenir la taille de chacunes des tables : | ||
| + | use ma_table; | ||
| + | SELECT | ||
| + | table_schema as `Database`, | ||
| + | table_name AS `Table`, | ||
| + | round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` | ||
| + | FROM information_schema.TABLES | ||
| + | ORDER BY (data_length + index_length) DESC; | ||
| ===== Maintenance et réparation ===== | ===== Maintenance et réparation ===== | ||
| Pour vérifier s'il y a des corruptions sur toutes les tables des bases de données : | Pour vérifier s'il y a des corruptions sur toutes les tables des bases de données : | ||
| Ligne 178: | Ligne 217: | ||
| Pour sauvegarder une base et insérer les DROP de base et de table : | Pour sauvegarder une base et insérer les DROP de base et de table : | ||
| mysqldump -u root -p ma_base --add-drop-database --add-drop-table -p > dump_ma_base.sql | mysqldump -u root -p ma_base --add-drop-database --add-drop-table -p > dump_ma_base.sql | ||
| + | |||
| + | Pour exporter uniquement le schémas de la base (pas les données): | ||
| + | mysqldump --no-data -u root -p ma_base | ||
| Pour sauvegarder et compresser un export de base : | Pour sauvegarder et compresser un export de base : | ||
| Ligne 187: | Ligne 229: | ||
| Pour exporter certaines tables : | Pour exporter certaines tables : | ||
| mysqldump -u root -p ma_base table1 table2 > dump_mes_tables.sql | mysqldump -u root -p ma_base table1 table2 > dump_mes_tables.sql | ||
| + | | ||
| + | Pour exporter selon un critère "WHERE" dans une table : | ||
| + | mysqldump --where "country = 'France'" ma_base table1 > dump_where_France.sql | ||
| Pour exporter une base de données à travers SSH : | Pour exporter une base de données à travers SSH : | ||
| Ligne 298: | Ligne 343: | ||
| Pour connaître le statut de la réplication : | Pour connaître le statut de la réplication : | ||
| show slave status\G; | show slave status\G; | ||
| + | |||
| + | ===== Optimisations ===== | ||
| + | |||
| + | Quantité de mémoire que MySQL peut mettre des requêtes en buffer. La valeur recommandé est 25% de la mémoire disponible. | ||
| + | Exemple si le serveur dispose de 4 Go de mémoire dédié à MySQL : | ||
| + | |||
| + | Editer ''/etc/mysql/my.cnf'' et ajouter/modifier : | ||
| + | |||
| + | key_buffer 1G | ||
| + | |||
| + | Exemple pour augmenter le nombre de table en mémoire cache : | ||
| + | |||
| + | table_cache = 2000 | ||
| ===== Pour plus de détails ===== | ===== Pour plus de détails ===== | ||