web-dev-qa-db-fra.com

Recommandations d'optimisation des performances MySQL my.cnf

J'espère que quelqu'un pourrait être en mesure d'offrir une assistance pour optimiser un fichier my.cnf pour un serveur de base de données mysql à volume extrêmement élevé.

Our architecture is as follows:

Memory     : 96GB
CPUs       : 12
OS & Mysql : 64-bit
Disk Space : 1.2 TB
DB Engine  : MyISAM

Notre application Web est utilisée par environ 300 clients simultanément. Nous avons besoin que notre my.cnf soit réglé pour donner les meilleures performances possibles pour cette infrastructure.

Je suis pleinement conscient que les index et les requêtes optimisées sont un facteur majeur à cet égard, mais nous aimerions commencer par un système correctement configuré, puis poursuivre avec une réingénierie systématique de nos requêtes en conséquence.

Here is our current my.cnf file content:

[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
user=mysql

log-bin=mysql-bin
server-id=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=1

log-slow-queries = /var/log/mysqld_slow_queries.log
long_query_time = 10

max_connections = 500

key_buffer_size = 32768M
#max_allowed_packet = 2M
#table_open_cache = 128
#sort_buffer_size = 1024K
#net_buffer_length = 64K
#read_buffer_size = 1024K
#read_rnd_buffer_size = 1024K
#myisam_sort_buffer_size = 8M
query_cache_size = 128M
query_cache_limit = 128M

interactive_timeout = 300
wait_timeout = 300

# Added values after load testing
thread_cache_size = 8
#tmp_table_size = 256M
#max_heap_table_size = 256M
#table_cache = 512
#join_buffer_size = 512

log-error=/var/log/mysqld.log

innodb_buffer_pool_size=128M
#innodb_file_per_table
#innodb_log_file_size=250M
##innodb_buffer_pool_size=64M
#innodb_buffer_pool_size=1024M
#innodb_log_buffer_size=4M
##log-bin=mysql-bin

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#[myisamchk]
#key_buffer = 64M
#sort_buffer = 64M
#read_buffer = 16M
#write_buffer = 16M

Aucune suggestion? Merci les amis.

Édité par RolandoMySQLDBA

Étant donné que toutes vos données sont MyISAM, veuillez exécuter cette requête et afficher la sortie

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 3 PowerOf1024) B;

@ Rolando - Merci ... les résultats de cette requête ont été 4G.

21
Skittles

Essayez de démarrer avec l'assistant Percona et de comparer leurs recommandations par rapport à vos paramètres actuels un par un. Ne vous inquiétez pas, il n'y a pas autant de paramètres applicables que vous ne le pensez.

https://tools.percona.com/wizard

Tout le monde pointe vers key_buffer_size d'abord que vous avez abordé. Avec 96 Go de mémoire, je me méfierais de toute petite valeur par défaut (probablement seulement 96 Mo!).

23
KCD

J'ai essayé cet outil et cela m'a donné de bons résultats.

https://github.com/major/MySQLTuner-Perl

7
Sooraj