Création section config mem
This commit is contained in:
parent
72bf84b10f
commit
ff3db0a0cd
|
@ -96,6 +96,7 @@ Sur Debian 8, c'est le paquet `libmysqlclient-dev`.
|
||||||
|
|
||||||
Sur Debian 9 (et Debian 8 avec backports), c'est le meta-paquet `default-libmysqlclient-dev` qui permet de facilement installer la paquet adapté à votre base de données.
|
Sur Debian 9 (et Debian 8 avec backports), c'est le meta-paquet `default-libmysqlclient-dev` qui permet de facilement installer la paquet adapté à votre base de données.
|
||||||
|
|
||||||
|
|
||||||
### MySQL 5.7
|
### MySQL 5.7
|
||||||
|
|
||||||
<https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/>
|
<https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/>
|
||||||
|
@ -117,6 +118,7 @@ On peut ensuite installer les paquets :
|
||||||
|
|
||||||
> *Note* : il faudra alors installer *mytop* en récupérant le package de Debian 8
|
> *Note* : il faudra alors installer *mytop* en récupérant le package de Debian 8
|
||||||
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Le fichier de configuration principal est `/etc/mysql/my.cnf` qui inclue notamment les fichiers `.cnf` présents dans les sous-répertoires `conf.d/` et `mariadb.conf.d/`.
|
Le fichier de configuration principal est `/etc/mysql/my.cnf` qui inclue notamment les fichiers `.cnf` présents dans les sous-répertoires `conf.d/` et `mariadb.conf.d/`.
|
||||||
|
@ -129,9 +131,9 @@ Le fichier `/etc/mysql/mariadb.conf.d/z-evolinux-defaults.cnf` contient nos opti
|
||||||
[mysqld]
|
[mysqld]
|
||||||
|
|
||||||
###### Connexions
|
###### Connexions
|
||||||
# Maximum de connexions concurrentes (defaut = 100)... provoque un "Too many connections"
|
# Maximum de connexions concurrentes (défaut = 100)... provoque un "Too many connections"
|
||||||
max_connections = 250
|
max_connections = 250
|
||||||
# Maximum de connexions en attente en cas de max_connections atteint (defaut = 50)
|
# Maximum de connexions en attente en cas de max_connections atteint (défaut = 50)
|
||||||
back_log = 100
|
back_log = 100
|
||||||
# Maximum d'erreurs avant de blacklister un hote
|
# Maximum d'erreurs avant de blacklister un hote
|
||||||
max_connect_errors = 10
|
max_connect_errors = 10
|
||||||
|
@ -141,12 +143,12 @@ slow_query_log_file = /var/log/mysql/mysql-slow.log
|
||||||
long_query_time = 10
|
long_query_time = 10
|
||||||
|
|
||||||
###### Tailles
|
###### Tailles
|
||||||
# Taille reservee au buffer des index MyIsam
|
# Taille réservée au buffer des index MyIsam
|
||||||
# A ajuster selon les resultatsutilisateurs
|
# A ajuster selon les résultats utilisateurs
|
||||||
key_buffer_size = 512M
|
key_buffer_size = 512M
|
||||||
# Taille max des paquets envoyés/reçus … provoque un "Packet too large"
|
# Taille max des paquets envoyés/reçus … provoque un "Packet too large"
|
||||||
max_allowed_packet = 64M
|
max_allowed_packet = 64M
|
||||||
# Taille de la memoire reserve pour un thread
|
# Taille de la mémoire réservée pour un thread
|
||||||
thread_stack = 192K
|
thread_stack = 192K
|
||||||
# A mettre le nombre de threads CPU alloues pour MySQL
|
# A mettre le nombre de threads CPU alloues pour MySQL
|
||||||
thread_cache_size = 1
|
thread_cache_size = 1
|
||||||
|
@ -154,28 +156,28 @@ thread_cache_size = 1
|
||||||
max_heap_table_size = 64M
|
max_heap_table_size = 64M
|
||||||
|
|
||||||
###### Cache
|
###### Cache
|
||||||
# max_connections x nbre max de tables dans une jointure (defaut = 64)
|
# max_connections x nombre max de tables dans une jointure (défaut = 64)
|
||||||
table_open_cache = 4096
|
table_open_cache = 4096
|
||||||
table_definition_cache = 4096
|
table_definition_cache = 4096
|
||||||
# Taille max des requetes cachees (defaut = 1M)
|
# Taille max des requêtes cachées (défaut = 1M)
|
||||||
query_cache_limit = 8M
|
query_cache_limit = 8M
|
||||||
# Taille reservee pour le cache (defaut = 0)
|
# Taille réservée pour le cache (défaut = 0)
|
||||||
query_cache_size = 256M
|
query_cache_size = 256M
|
||||||
# Type de requetes a cacher (defaut = 1 : tout peut etre cache)
|
# Type de requêtes à cacher (défaut = 1 : tout peut être caché)
|
||||||
query_cache_type = 1
|
query_cache_type = 1
|
||||||
# Cache tables
|
# Cache tables
|
||||||
max_heap_table_size = 128M
|
max_heap_table_size = 128M
|
||||||
tmp_table_size = 128M
|
tmp_table_size = 128M
|
||||||
|
|
||||||
###### InnoDB
|
###### InnoDB
|
||||||
# Si InnoDB n'est pas utilise... le desactiver
|
# Si InnoDB n'est pas utilisé... le désactiver
|
||||||
#skip-innodb
|
#skip-innodb
|
||||||
# En general, il est plus optimum d'avoir un fichier par table
|
# En général, il est plus optimum d'avoir un fichier par table
|
||||||
innodb_file_per_table
|
innodb_file_per_table
|
||||||
# Taille memoire allouee pour le cache des datas et index
|
# Taille mémoire allouée 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%)
|
# A ajuster en fonction de sa RAM (si serveur dédié à MySQL, on peut aller jusqu'à 70%)
|
||||||
innodb_buffer_pool_size = 512M
|
innodb_buffer_pool_size = 512M
|
||||||
# Nombre maximum de threads systeme concurents
|
# Nombre maximum de threads système concurrents
|
||||||
innodb_thread_concurrency = 16
|
innodb_thread_concurrency = 16
|
||||||
# Ajuste la valeur des logs InnoDB
|
# Ajuste la valeur des logs InnoDB
|
||||||
# (attention, il faut ensuite stopper MySQL et effacer les fichiers ib_logfile*)
|
# (attention, il faut ensuite stopper MySQL et effacer les fichiers ib_logfile*)
|
||||||
|
@ -183,7 +185,7 @@ innodb_thread_concurrency = 16
|
||||||
#innodb_log_files_in_group = 2
|
#innodb_log_files_in_group = 2
|
||||||
|
|
||||||
###### Misc
|
###### Misc
|
||||||
# charset utf8 par defaut
|
# Charset utf8 par défaut
|
||||||
character-set-server=utf8
|
character-set-server=utf8
|
||||||
collation-server=utf8_general_ci
|
collation-server=utf8_general_ci
|
||||||
# Patch MySQL 5.5.53
|
# Patch MySQL 5.5.53
|
||||||
|
@ -212,21 +214,57 @@ Pour activer les connexions réseau à distance, il faut ajouter la configuratio
|
||||||
bind-address = 0.0.0.0
|
bind-address = 0.0.0.0
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
Pour plus d'informations sur l'optimisation avancée de MySQL, consultez le guide [/HowtoMySQL/Optimize]().
|
||||||
|
|
||||||
|
> *Note* : Sous Debian 8, nous mettons notre configuration dans `/etc/mysql/conf.d/evolinux.cnf`
|
||||||
|
|
||||||
|
|
||||||
|
### Configuration de la mémoire (InnoDB)
|
||||||
|
|
||||||
Selon les ressources de la machine, il faut optimiser davantage les options (par défaut, la configuration est adaptée pour une machine avec très peu de mémoire vive !).
|
Selon les ressources de la machine, il faut optimiser davantage les options (par défaut, la configuration est adaptée pour une machine avec très peu de mémoire vive !).
|
||||||
|
|
||||||
On conseille au minimum d'ajuster *thread_cache_size* et *innodb_buffer_pool_size* :
|
On conseille au minimum d'ajuster `thread_cache_size` et `innodb_buffer_pool_size` :
|
||||||
|
|
||||||
~~~{.ini}
|
~~~{.ini}
|
||||||
[mysqld]
|
[mysqld]
|
||||||
# Nombre de threads CPU alloués pour MySQL
|
# Nombre de threads CPU alloués pour MySQL
|
||||||
thread_cache_size = 2
|
thread_cache_size = 2
|
||||||
# Mémoire allouée pour le cache InnoDB (si serveur dédié, on peut aller jusqu'à 80% de la RAM)
|
# Mémoire allouée pour le cache InnoDB (si serveur dédié à MySQL, on peut aller jusqu'à 70% de la RAM)
|
||||||
innodb_buffer_pool_size = 2G
|
innodb_buffer_pool_size = 2G
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Pour plus d'informations sur l'optimisation avancée de MySQL, consultez le guide [/HowtoMySQL/Optimize]().
|
**Attention :** MySQL consomme plus de mémoire que ce qui est indiqué dans la variable `innodb_buffer_pool_size`. Celle-ci n'est que la taille totale du tampon mémoire utilisable par les instances des « workers » de InnoDB.
|
||||||
|
|
||||||
> *Note* : Sous Debian 8, nous mettons notre configuration dans `/etc/mysql/conf.d/evolinux.cnf`
|
Si MySQL utilise trop de mémoire, le système va swapper, et on peut observer une importante baisse des performances. Pour vérifier que MySQL ne swappe pas, il faut que les valeurs `si` et `so` de la commande suivante soient égales à zéro :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# vmstat
|
||||||
|
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
|
||||||
|
r b swpd free buff cache si so bi bo in cs us sy id wa st
|
||||||
|
0 0 976884 3301840 200564 1540540 0 0 6 53 0 0 2 1 96 1 0
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Il est possible d'ajuster dynamiquement (= sans redémarrer) la variable `innodb_buffer_pool_size`. Elle doit être un multiple de `innodb_buffer_pool_chunk_size` x `innodb_buffer_pool_instances` (par défaut 128M x 8), en octets (1 Go = 1073741824 octets).
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# Afficher la valeur de innodb_buffer_pool_size :
|
||||||
|
mysql > SELECT @@innodb_buffer_pool_size;
|
||||||
|
|
||||||
|
# Redimensionner dynamiquement innodb_buffer_pool_size :
|
||||||
|
mysql > SET GLOBAL innodb_buffer_pool_size=...; # en octets
|
||||||
|
|
||||||
|
# Afficher l'avancement du redimensionnement dynamique :
|
||||||
|
mysql > SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status';
|
||||||
|
+----------------------------------+----------------------------------------------------+
|
||||||
|
| Variable_name | Value |
|
||||||
|
+----------------------------------+----------------------------------------------------+
|
||||||
|
| Innodb_buffer_pool_resize_status | Completed resizing buffer pool at ... |
|
||||||
|
+----------------------------------+----------------------------------------------------+
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Il faut ensuite penser à ajuster aussi la valeur de `innodb_buffer_pool_size` dans `/etc/mysql/mariadb.conf.d/zzz-evolinux-custom.cnf` comme indiqué ci-dessus.
|
||||||
|
|
||||||
|
Pour aller plus loin : <https://mariadb.com/kb/en/mariadb-memory-allocation/>
|
||||||
|
|
||||||
|
|
||||||
## datadir / tmpdir
|
## datadir / tmpdir
|
||||||
|
@ -252,6 +290,7 @@ Par défaut il utilise `/tmp` mais vu qu'il est parfois nécessaire d'avoir plus
|
||||||
tmpdir = /srv/mysql-tmpdir
|
tmpdir = /srv/mysql-tmpdir
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
### Liste toutes les permissions utilisateurs
|
### Liste toutes les permissions utilisateurs
|
||||||
|
|
||||||
Si vous avez installé le paquet `percona-toolkit` vous pouvez utiliser la commande `pt-show-grants`. De nombreuses options permettent de filtrer la sortie par base, utilisateur, type de permissions…
|
Si vous avez installé le paquet `percona-toolkit` vous pouvez utiliser la commande `pt-show-grants`. De nombreuses options permettent de filtrer la sortie par base, utilisateur, type de permissions…
|
||||||
|
|
Loading…
Reference in a new issue