Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
sysadmin:tips:mysql [2011/05/23 16:03] james créée |
sysadmin:tips:mysql [2015/07/17 17:15] (Version actuelle) james ajout commande fragmentation |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>mysql prompt export csv innodb}} | ||
+ | |||
====== Mysql ====== | ====== Mysql ====== | ||
Ligne 7: | Ligne 9: | ||
Le plus simple est de modifier le prompt pour afficher par exemple : utilisateur, serveur, base de donnée. | Le plus simple est de modifier le prompt pour afficher par exemple : utilisateur, serveur, base de donnée. | ||
- | Pour ce faire, ajouter dans la section [mysql] du fichier /etc/mysql/my.cnf la directive suivante :<code>prompt = "\\u@\\h \\d > "</code> | + | Pour ce faire, ajouter dans la section [mysql] du fichier /etc/mysql/my.cnf la directive suivante :<code>prompt = "\u@\h \d > "</code> |
Si vous n'etes pas admin du serveur, vous pouvez placer cette option dans le fichier .my.cnf de votre répertoire personnel, comme par exemple avec la commande suivante :<code> | Si vous n'etes pas admin du serveur, vous pouvez placer cette option dans le fichier .my.cnf de votre répertoire personnel, comme par exemple avec la commande suivante :<code> | ||
cat << EOF >> ~/.my.cnf | cat << EOF >> ~/.my.cnf | ||
[mysql] | [mysql] | ||
- | prompt = "\\u@\\h \\d > " | + | prompt = "\u@\h \d > " |
EOF</code> | EOF</code> | ||
+ | |||
+ | Dans le cas ou cela ne marcherait pas (hostname a localhost par exemple), il existe une autre possibilité : exporter la variable suivant en bash | ||
+ | <code>export MYSQL_PS1="\u@`hostname` (\d) > "</code> | ||
+ | Vous pouvez par exemple rajouter cette commande dasn votre ~/.bashrc ou ~/.bash_variables | ||
+ | |||
+ | ===== Avoir rapidement le nombre d'entrées dans une GROSSE table (valable en innodb uniquement) ===== | ||
+ | |||
+ | Cela donne uniquement une valeur approximative, le nombre d'enregistrements n'etant pas mis a jour pour des raisons de perf : | ||
+ | <code>show table status like 'MaGrosseTable';</code> | ||
+ | |||
+ | ===== Exporter des données dans un fichier csv ===== | ||
+ | |||
+ | Pour exporter des données dnas un fichier CSV, utiliser un "SELECT ... INTO OUTFILE" comme par exemple dans l'exemple ci dessous : | ||
+ | <code>SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'</code> | ||
+ | |||
+ | <note>Il vous faudra un acces au serveur mysql pour récupérer le fichier csv obtenu</note> | ||
+ | <note>Il faudra aussi que l'utilisateur MySQL que vous utilisez ait le droit "FILE" sous pein d'obtenir une erreur "ERROR 1045 (28000): Access denied for user 'monUser'@'%' (using password: YES)" | ||
+ | |||
+ | Pour lui affecter si vous le pouvez, utiliser une syntaxe similaire a: "GRANT FILE ON maBase.* TO 'monUser'@'%';" | ||
+ | |||
+ | </note> | ||
+ | |||
+ | ====== Savoir quelles tables sont fragmentées ===== | ||
+ | Pour savoir quelles tables sont fragmentées, on peut utiliser la commande suivante :<code>SELECT engine, table_schema, table_name, data_free*100/data_length AS percent_frag FROM information_schema.tables where data_free IS NOT NULL and data_free <> 0 order by percent_frag ;</code> | ||
+ | Il suffit ensuite de lancer un "OPTIMIZE table MaTable" sur ces tables pour réduire la fragmentation | ||
+ | <note>Il doit y avoir mieux cette commande donne des faux positifs et/ou quelques valeurs bizarres, mais ca marche (tm)</note> | ||
+ |