Rincón Informático

Un rincon para hablar sobre GNU/Linux, seguridad informatica, y mas!!

Optimizando el servidor Mysql

Publicado por Epsilon En enero - 9 - 2010

Trabajando en un proyecto personal (que pronto les contare en que consiste),  me surgió la necesidad de optimizar al máximo el servidor MySQL, es decir, necesitaba configurar el servidor MySQL  de una forma adecuada para que soportara todo el trabajo necesario.  Navegando en la red, me encontré con este articulo,  en el cual nos comparten una configuración óptima para nuestro servidor  MySQL (lo que estábamos buscando).  Implemente este archivo de configuración,  y desde ese momento mi servidor ha mejorado en cuanto a rendimiento, disponibilidad y eficiencia.

Por esta razón comparto el archivo de configuración por si  alguno tiene el mismo problema, en este archivo se hacen modificaciones principalmente, en el tamaño de la memoria,  conexiones concurrentes y otros aspectos:

[mysqld]
 socket=/path/to/mysql.sock
 datadir=/var/lib/mysql
 skip-locking
 skip-innodb
 # MySQL 4.x has query caching available.
 # Enable it for vast improvement and it may be all you need to tweak.
 query_cache_type=1
 query_cache_limit=1M
 query_cache_size=32M
 # max_connections=500
 # Reduced to 200 as memory will not be enough for 500 connections.
 # memory=key_buffer+(sort_buffer_size+read_buffer_size)*max_connections
 # which is now: 64 + (1 + 1) * 200 = 464 MB
 # max_connections = approx. MaxClients setting in httpd.conf file
 # Default set to 100.
 #max_connections=200
 #interactive_timeout=180
 interactive_timeout=100
 #wait_timeout=180
 #wait_timeout=100
 # Reduced wait_timeout to prevent idle clients holding connections.
 #wait_timeout=30
 wait_timeout=15
 connect_timeout=10
 # max_connect_errors is set to 10 by default
 #max_connect_errors=10
 #table_cache=256
 #table_cache=1024
 # Checked opened tables and adjusted accordingly after running for a while.
 table_cache=512
 #tmp_table_size=32M by default
 #thread_cache=128
 # Reduced it to 32 to prevent memory hogging. Also, see notes below.
 thread_cache=32
 # key_buffer=258M
 # Reduced it by checking current size of *.MYI files, see notes below.
 key_buffer=128M
 # Commented out the buffer sizes and keeping the default.
 # sort_buffer_size=2M by default.
 #sort_buffer_size=1M
 # read_buffer_size=128K by default.
 #read_buffer_size=1M
 # read_rnd_buffer_size=256K by default.
 #read_rnd_buffer_size=1M
 # myisam_sort_buffer_size=8M by default.
 #myisam_sort_buffer_size=64M
 # thread_concurrency = 2 * (no. of CPU)
 thread_concurrency=2
 # log slow queries is a must. Many queries that take more than 2 seconds.
 # If so, then your tables need enhancement.
 log_slow_queries=/var/log/mysqld.slow.log
 long_query_time=2
 [mysql.server]
 user=mysql
 basedir=/var/lib
 [safe_mysqld]
 err-log=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
 open_files_limit=8192

[mysqldump]
 quick
 max_allowed_packet=16M
 [mysql]
 no-auto-rehash
 # Remove the next comment character if you are not familiar with 
 #safe-updates
 [isamchk]
 key_buffer=64M
 sort_buffer=64M
 read_buffer=16M
 write_buffer=16M
 [myisamchk]
 key_buffer=64M
 sort_buffer=64M
 read_buffer=16M
 write_buffer=16M
 [mysqlhotcopy]
 interactive-timeout 
 [client]
 socket=/path/to/mysql.sock

Para  aplicar esta configuración,  lo podemos hacer de varias formas:

  • Abrimos el archivo /etc/mysql/my.cnf borramos todo su contenido y por ultimo pegamos el contenido de esta configuracion. ( No sobra decir que debemos guardar).
  • Por otro lado  podemos borrar el archivo /etc/mysql/my.cnf, descargamos el nuevo archivo desde aca y lo copiamos en la misma ubicacion.

nota: cabe aclarar que no soy un experto en el tema, simplemente doy mis comentarios apartir de la experiencia que tuve usando esta configuracion,   si alguien tiene un archivo my.cnf mas optimizado seria esplendido que lo compartiera con todos nosotros

Para mas informacion pueden ir a este enlace

Si te gusto la entrada, compartela!!!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • Live
  • Meneame
  • MySpace
  • Yigg
  • email
  • Identi.ca
  • MSN Reporter
  • RSS
  • Socialogs
  • Technorati
  • Yahoo! Bookmarks
  • Twitter

Entradas relacionadas

9 Responses to “Optimizando el servidor Mysql”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Trabajando en un proyecto personal (que pronto les contare en que consiste),  me surgió la necesidad de optimizar al máximo el servidor MySQL, es decir, necesitaba configurar el servidor MySQL  de una forma adecuada para qu…

  2. Hieluki dice:

    Aplica para un servidor de hosting compartido?

  3. Epsilon dice:

    @hieluki todo depende del uso que se el este dando al servidor mysql, no me atreveria a decirte que serviria en tu caso, ya que como lo comente en la entrada no soy muy experto en el tema, sin embargo, si te animas a probarlo, me gustaria saber tu experiencia….

    un saludo..

  4. d5ck dice:

    A mi me gusta ver las ventajas que traen estos scripts optimizados, pero mas que eso me gusta ver también las desventajas que puedan tener, Que peros le has visto hasta el momento??

  5. Epsilon dice:

    @d5ck mmm ps no le he visto problema alguno, aunque solo lo llevo probando 2 dias, apenas vea alguna desventaja les contare…

    un saludo

  6. Jordi Prats dice:

    Cada servidor tiene una carga diferente por lo que no se puede generalizar sino ya vendría todo por defecto.

    Para tablas innodb creo que en general es bueno el:

    innodb_flush_method=O_DIRECT

    De esta forma evitas el problema del doble buffer: Tanto el SO como el MySQL cachea, por lo que realmente tienes la mitad de memoria para cache (ya que la doble cache no sirve de nada)

    saludos!

  7. Epsilon dice:

    @jordi muchas gracias por el aporte!! alguien mas tiene esos tips de todo sysadmin?

  8. JoeCoolSv dice:

    Y esta configuración te ha funcionado con el MySQL 5.2.42? porque según veo esa configuración es para la rama 4.

Deja un comentario