Icono del sitio Blog personal de Guido Cutipa

Cómo optimizar el rendimiento de MariaDB/Mysql – Parte 2

Amigos, en este post veremos como mejorar el rendimiento de los servidores de bases de datos MariaDB/Mysql, utilizando la herramienta mysqltuner podremos adecuar la configuración de MariaDB/Mysql en función de los recursos de hardware disponibles.

Este artículo asume que posees los conocimientos mínimos de Linux, sabes cómo usar la terminal, y lo más importante, conoces tu servidor. La configuración es simple y se asume que estás ejecutando la terminal con la cuenta de root, si no es así, deberás adicionar ‘sudo’ a los comandos para obtener los privilegios de root.

Instalación de MysqlTuner

MysqlTuner es un script que analiza la instalación de MariaDB/Mysql, como resultado de su ejecución, muestra en la pantalla diferentes sugerencias para mejorar el rendimiento y la seguridad del servidor de base de datos.

Primero debemos descargar el script desde la página oficial:

wget http://mysqltuner.pl/ -O mysqltuner.pl

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv

Conceder el permiso de ejecución al script:

# chmod +x mysqltuner.pl 

Instalación opcional de Sysschema para MySQL

Sysschema se instala de forma predeterminada en MySQL 5.7 y MySQL 8 de Oracle. De forma predeterminada, en MySQL 5.6/5.7/8, el esquema de rendimiento está habilitado de forma predeterminada. Para la versión anterior de MySQL 5.6, puede seguir este comando para crear un nuevo sistema de base de datos que contenga una vista muy útil del esquema de rendimiento:

curl "https://codeload.github.com/mysql/mysql-sys/zip/master" > sysschema.zip

# check zip file
unzip -l sysschema.zip
unzip sysschema.zip
cd mysql-sys-master
mysql -uroot -p < sys_56.sql

Esquema de rendimiento opcional e instalación de Sysschema para MariaDB < 10.6

Sysschema no está instalado de forma predeterminada en MariaDB antes de 10.6 MariaDB sys

De forma predeterminada, en MariaDB, el esquema de rendimiento está deshabilitado de forma predeterminada. considere activar el esquema de rendimiento en su archivo de configuración my.cnf:

[mysqld]
performance_schema = on

Puede seguir este comando para crear un nuevo sistema de base de datos que contenga una vista muy útil del esquema de rendimiento:

curl "https://codeload.github.com/FromDual/mariadb-sys/zip/master" > mariadb-sys.zip

# check zip file
unzip -l mariadb-sys.zip

unzip mariadb-sys.zip
cd mariadb-sys-master/
mysql -u root -p < ./sys_10.sql

Errores y soluciones para la instalación del esquema de rendimiento

ERROR at line 21: Failed to open file './tables/sys_config_data_10.sql -- ported', error: 2

ERROR 1054 (42S22) at line 78 in file: './views/p_s/metrics_56.sql': No se reconoce la columna 'STATUS' en field list

Modo de uso

Para ejecutar el script escribiremos el siguiente comando:

# perl mysqltuner.pl

El script fue probado en una instalación existente de Mariadb con una configuración por defecto, los resultados variarán de acuerdo a la versión de la base de datos instalada. En mi caso, el resultado obtenido fue el siguiente:

El resultado más importante se encuentra al final de la pantalla, en esta sección veremos las recomendaciones para mejorar el rendimiento y seguridad de nuestro servidor.

Tuning MariaDB/Mysql

Antes de realizar cualquier cambio es muy recomendable obtener un backup de la configuración actual, en el caso de MariaDB el archivo de configuración se encuentra ubicado en /etc/mysql/mariadb.conf.d/50-server.cnf, para mysql el archivo de configuración se encuentra en /etc/mysql/my.cnf

Para generar el backup de la configuración solo copiaremos el archivo de configuración actual, en caso de que algo salga mal o que los cambios no generen los resultados esperados, solo será necesario restaurar el archivo de configuración anterior.

# cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.backup

Para editar la configuración ejecutaremos el siguiente comando:

# nano /etc/mysql/mariadb.conf.d/50-server.cnf

A continuación analizaremos algunas modificaciones sugeridas por MysqlTuner para una instalación por defecto de MariaDB.

query_cache_size (=0)

Aunque está habilitado en versiones anteriores a MariaDB 10.1.7, el query_cache_size es por defecto 0KB, lo que efectivamente desactiva el caché de consulta.

query_cache_type (=0)

A partir de MariaDB 10.1.7, query_cache_type se establece automáticamente en ON si el servidor se inicia con el query_cache_size establecido en un valor distinto de cero.

performance_schema = ON enable PFS

El esquema de rendimiento es una característica para monitorear el rendimiento del servidor que se introdujo en MariaDB 5.5.

Para instalarlo se deben ejecutar los siguientes comandos:

# wget https://github.com/good-dba/mariadb-sys/archive/master.zip
# unzip master.zip
# cd mariadb-sys-master/
# mysql -u root -p < ./mariadb_sys_install.sql

innodb_log_file_size should be (=16M)

El tamaño combinado no puede ser más de 4GB antes de MariaDB 10.0, y no más de 512GB en MariaDB 10.0 y posteriores. Los valores más altos significan menos E / S de disco debido a una menor actividad de punto de control de vaciado, pero también una recuperación más lenta de un bloqueo.

innodb_buffer_pool_instances (=1)

Si innodb_buffer_pool_size se establece en más de 1 GB, innodb_buffer_pool_instances divide la agrupación de almacenamiento intermedio InnoDB en esta cantidad de instancias. Cada instancia administra sus propias estructuras de datos y toma una porción igual del tamaño total de la agrupación de almacenamiento intermedio, por ejemplo, si innodb_buffer_pool_size es de 4GB e innodb_buffer_pool_instances se establece en 4, cada instancia será de 1GB. Cada instancia idealmente debería tener al menos 1 GB de tamaño.

Finalmente ejecutamos nuevamente el script de mysqltuner para verificar que los cambios se realizaron correctamente.

# perl mysqltuner.pl 
Salir de la versión móvil