Paramètres optimaux pour MySQL / MariaDB

Paramètres optimaux pour MySQL / MariaDB

Pour créer un environnement MariaDB harmonieux où la joie et l'allégrèsse cohabite sans laisser de place aux erreurs de types *SQLSTATE[HY000][2002] Connection refused in lock_may_be_available()`, voici nos meilleures pratiques.

Les commandes suivantes sont adaptées pour un environnement CentOS 7.

1. Créer un fichier limacharlie.cnf dans /etc/my.cnf.d avec le contenu suivant (requiert sudo) :

[mysqld]

max_allowed_packet             = 32M
max_connect_errors             = 1000000

tmp_table_size                 = 32M
max_heap_table_size            = 32M
query_cache_type               = 0
query_cache_size               = 0
max_connections                = 10000
thread_cache_size              = 100
open_files_limit               = 1000000
table_definition_cache         = 1024
table_open_cache               = 2048

innodb_flush_method            = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table          = 1
innodb_buffer_pool_size        = 1G
innodb_buffer_pool_instances   = 8

Tous les fichiers de ce dossier sont lus pour créer la configuration finale, et ils sont lus en ordre alphabétique.

2. Redémarrer MariaDB

sudo service mariadb restart

3. Pour valider les configurations facilement, se connecter avec Sequel sur une base de données du serveur et faire la query:

SHOW VARIABLES;

4. Augmenter le max open files global:

sudo /usr/local/psa/admin/sbin/websrv_ulimits --set 94000 --no-restart

Note: --no-restart est important ici sinon tous les configurations des sites vont être rebuildés et ça peut causer un gros downtime si on en a beaucoup sur le serveur

5. Redémarer Apache et Nginx

sudo service httpd restart
sudo service nginx restart

6. Valider les configurations en entrant:

sudo grep 'Max open files' /proc/$(cat /var/run/nginx.pid)/limits