Búsqueda de sitios web

15 consejos útiles para optimizar y ajustar el rendimiento de MySQL/MariaDB


MySQL es un potente sistema de gestión de bases de datos relacionales o, en resumen, RDBMS de código abierto. Fue lanzado en 1995 (20 años). Utiliza un lenguaje de consulta estructurado, que es probablemente la opción más popular para administrar contenido dentro de una base de datos. La última versión de MySQL es 5.6.25 y se lanzó el 29 de mayo de 2015.

Un dato interesante sobre MySQL es el hecho de que el nombre proviene de My, la hija de Michael Widenius (creador de MySQL). Aunque hay muchos datos interesantes sobre MySQL, este artículo pretende mostrarle algunas prácticas útiles que le ayudarán a administrar su servidor MySQL.

En abril de 2009 el proyecto MySQL fue comprado por Oracle. Como resultado, se creó una bifurcación comunitaria de MySQL llamada MariaDB. La razón principal para crear la bifurcación fue mantener el proyecto libre bajo la Licencia Pública General.

Hoy en día, MySQL y MariaDB son uno de los RDBMS más utilizados (si no los más) utilizados para aplicaciones web como WordPress, Joomla, Magento y otros.

Este artículo le mostrará algunos consejos básicos pero útiles sobre cómo optimizar y ajustar el rendimiento de MySQL/MariaDB. Tenga en cuenta que este artículo supone que ya tiene instalado MySQL o MariaDB. Si todavía se pregunta cómo instalarlos en su sistema, puede seguir nuestras guías completas aquí:

  1. Instalación de LAMP en RHEL/CentOS 7
  2. Instalación de LAMP en Fedora 22
  3. Configurando LAMP en Ubuntu 15.04
  4. Instalación de MariaDB en Debian 8
  5. Instalar MariaDB en Gentoo Linux
  6. Instalar MariaDB en Arch Linux

Importante: antes de comenzar, no acepte estas sugerencias a ciegas. Cada configuración de MySQL es única y requiere una reflexión adicional antes de realizar cualquier cambio.

Cosas que necesitas saber:

  1. El archivo de configuración MySQL/MariaDB se encuentra en /etc/my.cnf. Cada vez que modifique este archivo deberá reiniciar el servicio MySQL para que los nuevos cambios puedan surtir efecto.
  2. Para escribir este artículo se ha utilizado como plantilla la versión MySQL 5.6.

1. Habilite el archivo por tabla de InnoDB

Primero es importante explicar que InnoDB es un motor de almacenamiento. MySQL y MariaDB utilizan InnoDB como motor de almacenamiento predeterminado. En el pasado, MySQL solía mantener tablas e índices de bases de datos en un espacio de tablas del sistema. Este enfoque estaba destinado a servidores cuyo único propósito es el procesamiento de bases de datos y su disco de almacenamiento no se utiliza para ningún otro propósito.

InnoDB proporciona un enfoque más flexible y la información de cada base de datos se guarda en un archivo de datos .ibd. Cada archivo .ibd representa un espacio de tabla propio. De esa manera, las operaciones de la base de datos como “TRUNCATE” se pueden completar más rápido y también puede recuperar espacio no utilizado al descartar o truncar una tabla de base de datos.

Otro beneficio de esta configuración es el hecho de que puede mantener algunas de las tablas de la base de datos en un dispositivo de almacenamiento independiente. Esto puede mejorar enormemente la carga de E/S en sus discos.

innodb_file_per_table está habilitado de forma predeterminada en MySQL 5.6 y superior. Puedes verlo en el archivo /etc/my.cnf. La directiva tiene este aspecto:

innodb_file_per_table=1

2. Almacene los datos de la base de datos MySQL en una partición separada

Nota: esta configuración solo funciona con MySQL, pero no con MariaDB.

A veces, las lecturas/escrituras del sistema operativo pueden ralentizar el rendimiento de su servidor MySQL, especialmente si está ubicado en el mismo disco duro. En su lugar, recomendaría utilizar un disco duro independiente (preferiblemente SSD) para el servicio MySQL.

Para completar esto, deberá conectar la nueva unidad a su computadora/servidor. A los efectos de este artículo, asumiré que la unidad estará en /dev/sdb.

El siguiente paso es preparar la nueva unidad:

fdisk /dev/sdb

Ahora presione “n” para crear una nueva partición. Luego presione “p” para convertir la nueva partición en primaria. Después de eso, establezca el número de partición entre 1-4. Después de eso, seleccionará el tamaño de la partición. Presione enter aquí. En el siguiente paso necesitarás configurar el tamaño de la partición.

Si desea utilizar todo el disco, presione Intro una vez más. De lo contrario, puede configurar manualmente el tamaño de la nueva partición. Cuando esté listo presione “w” para escribir los cambios. Ahora necesitaremos crear un sistema de archivos para nuestra nueva partición. Esto se puede hacer fácilmente con:

mkfs.ext4 /dev/sdb1

Ahora montaremos nuestra nueva partición en una carpeta. Llamé a mi carpeta "ssd" y la creé en el directorio raíz:

mkdir /ssd/

Estamos listos para montar la nueva partición que acabamos de crear en la nueva carpeta:

mount /dev/sdb1  /ssd/

Puede realizar el montaje al inicio agregando la siguiente línea en el archivo /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Ahora está listo para mover MySQL al nuevo disco. Primero detenga el servicio MySQL con:

service mysqld stop

También te recomendaría detener Apache/nginx para evitar cualquier intento de escribir en las bases de datos:

service httpd stop
service nginx stop

Ahora copie todo el directorio MySQL en la nueva unidad:

cp /var/lib/mysql /ssd/ -Rp

Esto puede tardar un poco dependiendo del sitio de sus bases de datos MySQL. Una vez que se complete este proceso, cambie el nombre del directorio MySQL:

mv /var/lib/mysql /var/lib/mysql-backup

A continuación crearemos un enlace simbólico.

ln -s /ssd/mysql /var/lib/mysql

Ahora está listo para iniciar MySQL y su servicio web:

service mysqld start
service httpd start
service nginx start

En este punto, se accederá a sus bases de datos MySQL desde la nueva unidad.