Mysql dump tips

De BlaxWiki
Aller à la navigationAller à la recherche

Dans le cas ou un dump mysql met beaucoup de temps il faut vérifier que :

 -  si on compresse le dump, utiliser gzip ou pxz (--threads) qui font du multithread 
 -  vérifier l'espace réellement utilisé par les bases pour voir si certaines ne sont pas vide mais prennent de l'espace, dans ce cas faire un optimize des tables :

[root@www.xxxx.com ~]# du -khs /var/lib/mysql/
173G    /var/lib/mysql/

Mais une grosse partie est de l’espace non utilisé réellement. Un check de l’espace non utilisé par les tables de cette base remonte ceci (valeurs sur la droite en Mo, une ligne par table)

mysql> SELECT round((data_length+index_length)/1024/1024,2) FROM information_schema.tables WHERE   table_schema='seafoodesfe';
+-----------------------------------------------+
| round((data_length+index_length)/1024/1024,2) |
+-----------------------------------------------+
|                                         13.09 |
|                                         11.69 |
|                                         16.25 |

Plusieurs des tables contiennent plusieurs Go de datas vides. A vue de nez il y a 40Go à récupérer pour cette base, ce qui devrait grandement faciliter le dump.

Compte-tenu du fait que la variable innodb_file_per_table est activée, il suffit de faire un OPTIMIZE des tables de cette base

mysql> show variables like "innodb_file_per_table";
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)


A ne faire toutefois qu’en HNO, puisque ça va locker en lecture/ecriture la table source : mysql va créer une table temporaire, y copier les datas, puis la rename et supprimer la source (pour chaque table).