22
0
Fork 0

relecture [4/n]

This commit is contained in:
gcolpart 2016-12-16 01:58:41 +01:00
parent 5dd7067a47
commit 12d4fd62b4
1 changed files with 12 additions and 76 deletions

View File

@ -1,80 +1,15 @@
---
title: Howto MySQL : optimisation et configuration avancée.
title: Howto MySQL : optimisation avancée.
...
Pour le guide d'installation et d'usage courant, consultez [/HowtoMySQL]().
## Configuration
Rappel : selon les ressources de la machine, il faut optimiser les directives dans `my.cnf` (par défaut, la configuration est adaptée… pour un petit serveur !). Sous Debian, on trouvera quelques exemples dans le répertoire `/usr/share/doc/mysql-server-5.0/examples/`
Voici les paramètres essentiels :
~~~{.ini}
[mysqld]
###### Connexions
# Maximum de connexions concurrentes (defaut = 100)… provoque un "Too many connections"
max_connections = 250
# Maximum de connexions en attente en cas de max_connections atteint (defaut = 50)
back_log = 100
# Maximum d'erreurs avant de blacklister un hote
max_connect_errors = 10
# Loguer les requetes trop longues
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
###### Tailles
# Taille reservee au buffer des index MyIsam
# A ajuster selon les resultats
key_buffer = 512M
# Taille max des paquets envoyés/reçus … provoque un "Packet too large"
max_allowed_packet = 64M
# Taille de la memoire reserve pour un thread
thread_stack = 192K
# A mettre le nombre de CPU x2
thread_cache_size = 8
# Taille maximum des tables de type MEMORY
max_heap_table_size = 64M
###### Cache
# max_connections x nbre max de tables dans une jointure (defaut = 64)
table_cache = 1500
# Taille max des requetes cachees (defaut = 1M)
query_cache_limit = 8M
# Taille reservee pour le cache (defaut = 0)
query_cache_size = 256M
# Type de requetes a cacher (defaut tout peut etre cache)
query_cache_type = 1
###### InnoDB
# Si InnoDB n'est pas utilise… le desactiver
#skip-innodb
# En general, il est plus optimum d'avoir un fichier par table
innodb_file_per_table
# Taille memoire allouee pour le cache des datas et index
# A ajuster en fonction de sa RAM (si serveur dedie a MySQL, on peut aller jusqu'a 80%)
innodb_buffer_pool_size = 2G
# Taille buffer memoire pour structures internes InnoDB
innodb_additional_mem_pool_size = 16M
# Nombre maximum de threads systeme concurents
innodb_thread_concurrency = 16
# Ajuste la valeur des logs InnoDB
# (attention, il faut ensuite stopper MySQL et effacer les fichiers ib_logfile*)
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
###### Misc
# charset utf8 par defaut
default-character-set=utf8
~~~
## mysqltuner
Après quelque temps d'utilisation, il est très intéressant de regarder les résultats du script `mysqltuner.pl` téléchargeable sur http://mysqltuner.pl/
Après quelque temps d'utilisation, il est très intéressant de regarder les résultats du script `mysqltuner.pl` téléchargeable via http://mysqltuner.pl/
~~~
perl mysqltuner.pl
# perl mysqltuner.pl
>> MySQLTuner 1.0.1 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
@ -130,7 +65,7 @@ Variables to adjust:
## tunning-prime
Il y a aussi tunning-prime qui est plus verbeux, et il se complète bien avec mysql-tuner. Dispo [ici](https://launchpad.net/mysql-tuning-primer/trunk).
Il y a aussi [tunning-prime](https://launchpad.net/mysql-tuning-primer/trunk) qui est plus verbeux, il complète bien *mysqltuner*.
~~~
-- MYSQL PERFORMANCE TUNING PRIMER --
@ -320,9 +255,10 @@ Ajouter dans le `/etc/security/limits.conf` :
ulimit -l unlimited
~~~
Enfin dans la partie `[mysqld]` de `my.cf` ajouter :
Enfin dans la configuration MySQL :
~~~
~~~{.ini}
[mysqld]
large-pages
~~~
@ -345,7 +281,7 @@ $ bzr branch lp:sql-bench
Installer quelques outils nécessaires pour le benchmark :
~~~
# aptitude install libclass-dbi-perl libdbd-mysql-perl mysql-client-5.1
# apt install libclass-dbi-perl libdbd-mysql-perl mysql-client-5.1
~~~
Créer une base de données de test :
@ -426,9 +362,9 @@ Il peut être intéressant de changer le chemin du tmpdir pour le mettre sur un
# chmod 700 /ssd/mysqltmp
~~~
Puis dans /etc/mysql/my.cnf.
Puis dans la configuration MySQL :
~~~{.diff}
-tmpdir = /tmp
+tmpdir = /ssd/mysqltmp
~~~{.ini}
[mysqld]
tmpdir = /ssd/mysqltmp
~~~