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/01/18 07:47] 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 99: | Ligne 118: | ||
Pour ne pas afficher le nom des colonnes : | Pour ne pas afficher le nom des colonnes : | ||
mysql --skip-column-names < select.sql | mysql --skip-column-names < select.sql | ||
+ | |||
+ | Pour faire un requête en mode non intéractif : | ||
+ | mysql --user=root --password='*******' -e "SHOW DATABASES;" | ||
Ligne 106: | 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 126: | 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 175: | 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 184: | 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 : | ||
+ | mysqldump -u root -p database | gzip -c | ssh root@192.168.1.1 'cat > /tmp/export.sql.gz' | ||
===== SSL ===== | ===== SSL ===== | ||
Ligne 293: | 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 ===== |