MySQL
Configuration et réglage
Recherche…
Remarques
La configuration se fait de trois manières différentes:
- options de ligne de commande
- le fichier de configuration
my.cnf
- définir des variables depuis le serveur
Les options de la ligne de commande prennent la forme mysqld --long-parameter-name=value --another-parameter
. Les mêmes paramètres peuvent être placés dans le fichier de configuration my.conf
. Certains paramètres sont configurables à l'aide de variables système provenant de MySQL. Consultez la documentation officielle pour une liste complète des paramètres.
Les variables peuvent avoir trait -
ou souligner _
. Des espaces peuvent exister autour du =
. Les grands nombres peuvent être suffixés par K
, M
, G
pour kilo-, mega et giga-. Un réglage par ligne.
Drapeaux: Habituellement, ON
et 1
sont synonymes, idem pour OFF
et 0
. Certains drapeaux n'ont rien après eux.
Lorsque vous placez les paramètres dans my.cnf
, tous les paramètres du serveur doivent se trouver dans la section [mysqld]
donc pas aveuglément des paramètres à la fin du fichier. (Remarque: Pour les outils permettant à plusieurs instances de mysql de partager un fichier my.cnf, les noms de section peuvent être différents.)
Performance InnoDB
Des centaines de paramètres peuvent être placés dans my.cnf. Pour l'utilisateur "lite" de MySQL, cela n'aura pas beaucoup d'importance.
Une fois que votre base de données devient non triviale, il est conseillé de définir les paramètres suivants:
innodb_buffer_pool_size
Cela devrait être réglé à environ 70% de la RAM disponible (si vous avez au moins 4 Go de RAM, un pourcentage plus petit si vous avez une petite VM ou une machine ancienne). Le paramètre contrôle la quantité de cache utilisée par InnoDB ENGINE. Par conséquent, il est très important pour la performance d'InnoDB.
Paramètre permettant l'insertion de données volumineuses
Si vous avez besoin de stocker des images ou des vidéos dans la colonne, nous devons modifier la valeur en fonction de votre application.
max_allowed_packet = 10M
M est Mb, G en Gb, K en Kb
Augmenter la limite de chaîne pour group_concat
group_concat
permet de concaténer des valeurs non nulles dans un group
. La longueur maximale de la chaîne résultante peut être définie à l'aide de l'option group_concat_max_len
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
La définition de la variable GLOBAL
assurera un changement permanent, tandis que la définition de la variable SESSION
définira la valeur pour la session en cours.
Configuration minimale d'InnoDB
C'est une configuration minimale pour les serveurs MySQL utilisant des tables InnoDB. En utilisant InnoDB, le cache de requêtes n'est pas requis. Récupérer de l'espace disque lorsqu'une table ou une base de données est DROP
ed. Si vous utilisez des disques SSD, le vidage est une opération redondante (les SDD ne sont pas séquentiels).
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
Concurrence
Assurez-vous de pouvoir créer plus que les 4 threads par défaut en définissant innodb_thread_concurrency
à l'infini (0); Cela permet à InnoDB de décider en fonction d'une exécution optimale.
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
Utilisation du disque dur
Définissez la capacité (charge normale) et la capacité_max (maximum absolu) d'IOPS pour MySQL. La valeur par défaut de 200 est correcte pour les disques durs, mais ces jours-ci, avec des disques SSD capables de milliers d'IOPS, vous souhaiterez probablement ajuster ce nombre. Il existe de nombreux tests que vous pouvez exécuter pour déterminer les IOPS. Les valeurs ci-dessus devraient être presque la même si vous utilisez un serveur MySQL dédié . Si vous exécutez d'autres services sur le même ordinateur, vous devez les répartir comme il convient.
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
Utilisation de la RAM
Définissez la RAM disponible pour MySQL. Bien que la règle de base soit 70-80%, cela dépend vraiment de la question de savoir si votre instance est dédiée ou non à MySQL et de la quantité de mémoire vive disponible. Ne gaspillez pas la RAM (c.-à-d. Les ressources) si vous en avez beaucoup.
innodb_buffer_pool_size = 10G
Sécurisation du cryptage MySQL
Le chiffrement par défaut aes-128-ecb
utilise le mode ECB (Electronic Codebook), qui n'est pas sécurisé et ne devrait jamais être utilisé. Ajoutez plutôt ce qui suit à votre fichier de configuration:
block_encryption_mode = aes-256-cbc