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.
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!).
J'ai essayé cet outil et cela m'a donné de bons résultats.