Espero que alguien pueda ofrecer alguna ayuda para optimizar un archivo my.cnf para un servidor de base de datos mysql de gran volumen.MySQL my.cnf recomendaciones de ajuste del rendimiento
Our architecture is as follows:
Memory : 96GB
CPUs : 12
OS & Mysql : 64-bit
Disk Space : 1.2 TB
DB Engine : MyISAM
Nuestra aplicación web es utilizada por aproximadamente 300 clientes simultáneamente. Necesitamos nuestro our.cnf sintonizado para ofrecer el mejor rendimiento posible para esta infraestructura.
Soy consciente de que los índices y las consultas optimizadas son un factor importante en esto, pero nos gustaría comenzar con un sistema que está configurado correctamente y luego seguir con la reingeniería sistemática de nuestras consultas en consecuencia.
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
¿Alguna sugerencia? Gracias amigos.
Editar por RolandoMySQLDBA
Dado que todos los datos que es MyISAM, ejecute esta consulta y mostrar la salida
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 - Gracias ... los resultados de esa consulta fue 4G.
¿Usted está experimentando lentitud específico basado en la configuración actual? – Randy
Es una máquina bastante buena para solo 300 usuarios de la web, más aún si solo se trata de un servidor de bases de datos ... ¿Es esto Windows o Linux? De cualquier forma, generalmente recomiendo tener discos/LUN separados para OS/Swap y el volumen de datos (donde reside el datadir). Manténgase alejado de incursiones de software, etc. Existe una herramienta llamada 'mk-query-advisor' que podría ayudarlo a ajustar esta configuración. A menos que su aplicación 'front-end' esté haciendo lo 'correcto' (almacenamiento en caché de datos estáticos, solo consultas cuando sea necesario, etc.), la optimización podría no serle de mucha ayuda. – JMC
También puede agregar un guión de mantenimiento (después de una copia de seguridad del curso) que llame 'OPTIMIZE TABLE tbl_name' cada semana para ayudar a mantener las cosas optimizadas. También busco particionar tablas grandes, etc. – JMC