En este artículo consideraré la instalación, configuración básica y optimización del rendimiento del servidor de base de datos MariaDB en Linux CentOS 7. Al final del artículo mostraré algunos ejemplos de archivos de configuración de MariaDB para que pueda elegir el mejor parámetros para su servidor de base de datos.
Instalar MariaDB en CentOS
Recientemente, MariaDB se ha agregado al repositorio base estándar de CentOS 7, pero su versión en el repositorio es 5.5. Esta versión no está actualizada, tiene algunos problemas de rendimiento y no proporciona búsqueda de texto completo en InnoDB. Para instalar la versión actual de MariaDB, primero debe agregar el repositorio de desarrolladores de mariadb.org.
Instala el nano editor usando yum:
yum install nano -y
Luego abra el archivo del repositorio para editarlo:
nano /etc/yum.repos.d/mariadb.repo
Agregue el siguiente texto allí:
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Guarde el archivo de configuración mariadb.repo e instale el servidor y el cliente MariaDB:
yum --disablerepo=AppStream install MariaDB-server MariaDB-client -y
La instalación está completa, ahora necesita agregar el servicio mariadb al inicio:
systemctl start mariadb
systemctl enable mariadb
Verifique el estado del servicio:
systemctl status mariadb
El servicio mariadb está activo y en ejecución, por lo que puede continuar con la configuración.
Asegurar el servidor MariaDB
Una vez que hayamos instalado y ejecutado el servidor MariaDB, podemos pasar a la configuración de seguridad. Ejecute el script integrado:
/usr/bin/mysql_secure_installation
En primer lugar, le pedirá que ingrese la contraseña de root (después de la instalación inicial de mariadb no se ha establecido ninguna contraseña), por lo que presionamos ENTER y establecemos una contraseña compleja en el siguiente paso. Luego, puede presionar ENTER hasta el final de la ejecución del escenario. Se eliminarán los usuarios anónimos, un inicio de sesión raíz remoto y las tablas de prueba, y se actualizarán los privilegios.
Para conectarse de forma remota al servidor mariadb, debe crear algunas reglas para el firewall de Linux usando iptables:
iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables-save > /etc/sysconfig/iptables
Opcionalmente, puede permitir conexiones salientes a bases de datos remotas de MariaDB:
iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
Prueba de conexión MariaDB
Debe asegurarse de que MariaDB se haya instalado correctamente.
Vamos a conectarnos al servidor de base de datos usando la herramienta mysqladmin incorporada:
mysqladmin version
El comando devuelve lo siguiente:
mysqladmin Ver 9.1 Distrib 10.4.7-MariaDB, for Linux on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.4.7-MariaDB Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 59 min 35 sec Threads: 10 Questions: 24 Slow queries: 0 Opens: 28 Flush tables: 1 Open tab
Significa que MariaDB se ha instalado correctamente, la base de datos está en funcionamiento.
Puede conectarse a la consola del servidor mariadb para ejecutar comandos SQL de forma interactiva:
mysql -u root -p
Archivo de configuración MariaDB – my.cnf
Por lo general, después de instalar MariaDB, agrego mi configuración estándar al archivo de configuración /etc/my.cnf que funciona en la mayoría de los servidores y no ha causado ningún problema hasta ahora. Borre my.cnf y agregue el siguiente texto:
[mysqld] local-infile=0 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 max_allowed_packet = 128M sql_mode = "" log-error = /var/log/mysql-error.log # Cache parameters query_cache_size = 16M table_open_cache = 4096 thread_cache_size = 16 key_buffer_size = 8M thread_stack = 256K join_buffer_size = 2M sort_buffer_size = 2M # Parameters for temporary tables tmpdir = /tmp max_heap_table_size = 32M tmp_table_size = 32M # InnoDB parameters innodb_file_per_table innodb_buffer_pool_size = 32M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_use_native_aio = 0 transaction-isolation = READ-COMMITTED character-set-server = utf8 collation-server = utf8_unicode_ci init-connect = "SET NAMES utf8 COLLATE utf8_unicode_ci" skip-name-resolve [mysqldump] quick quote-names max_allowed_packet = 128M default-character-set = utf8 [mysql] [isamchk] key_buffer = 16M [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid
Detengámonos en los parámetros principales de my.cnf con más detalle:
- datadir es el directorio en el que se almacenan los archivos DB;
- tmpdir es el directorio para almacenar archivos temporales;
- omitir-nombre-resolver desactiva la resolución de nombres DNS;
- max_allowed_packet es el tamaño máximo de paquete permitido. Si su base de datos utiliza campos de blobs, su valor no puede ser menor que el tamaño del campo más grande;
- max_connections es el número máximo de conexiones abiertas; el parámetro establece cuántos clientes pueden trabajar con el servidor mariadb simultáneamente;
- # Parámetros de caché La sección incluye todo lo relacionado con la caché de consultas. No se recomienda establecer valores demasiado altos ya que su servidor de base de datos consumirá más recursos;
- # Parámetros InnoDB la sección incluye todo lo relacionado con las tablas innodb;
- innodb_buffer_pool_size es el búfer de caché para datos e índices. Si se encuentran 1-2 proyectos en su servidor, establezca el valor en 70-80% de RAM disponible;
- innodb_flush_method establezca el valor O_DIRECT para Linux, deshabilitará el almacenamiento en caché a nivel del sistema operativo;
- innodb_flush_log_at_trx_commit este parámetro afecta la velocidad de escritura de las tablas innoDB. Tome este parámetro en serio: si establece 0 aquí, tendrá un mayor rendimiento, pero aumenta el riesgo de pérdida de datos. Prefiero establecer el valor 2 aquí, ya que no he visto ninguna ganancia obvia en el rendimiento del servidor de base de datos, mientras que la seguridad es una prioridad.
Optimización y ajuste del rendimiento para MariaDB
Me gustaría agregar que no es necesario copiar mi archivo de configuración: cada servidor y cada proyecto necesitan sus propios parámetros. Aconsejo usar algunos scripts que verifiquen la configuración de MariaDB automáticamente y brinden algunas recomendaciones sobre la optimización del servidor.
Para optimizar sus parámetros mariadb puede utilizar el Secuencia de comandos Tuning-Primer.sh. Primero, instale herramientas adicionales:
yum install bc net-tools -y
Descargue el script de optimización:
wget https://launchpadlibrarian.net/78745738/tuning-primer.sh
Asigne los permisos de ejecución a un archivo .sh:
chmod +x tuning-primer.sh
Ejecute el script:
./tuning-primer.sh
Después de ejecutarlo, el script le mostrará la información útil que necesita. Las cosas más importantes se resaltarán en rojo. Estas son las cosas que se recomienda corregir.
Por ejemplo, el script mostró que el número de conexiones es mucho menor de lo que he establecido.

Puede cambiar este parámetro tanto en el archivo my.cnf como en la consola. Establecí un valor más bajo (10) y el script lo aprobó:

Con estas comprobaciones, puede hacer que el rendimiento de su servidor mariadb sea perfecto.
Me gustaría señalar que el tiempo de funcionamiento continuo recomendado del servidor de base de datos es de al menos 48 horas, entonces la información será más precisa y podrá sintonizar su servidor.
Puede agregar una sección para activar un registro de consultas lento. Ayudará a analizar el desempeño de sus proyectos. Agregue lo siguiente a mysqld sección:
slow_query_log = 1 # enable the log of slow queries
long_query_time = 5 # set the time in seconds
slow_query_log_file = /var/log/slow-query.log # the name of your slow query log file and the path to it
log_queries_not_using_indexes # whether to write queries that do not use indexes to the log file
También debe crear archivos de registro para MariaDB y un registro de errores de consulta lento:
touch /var/log/mysql-error.log
touch /var/log/slow-query.log
Reinicie el servicio db:
systemctl restart mariadb
Puede ver su registro de consultas lentas si abre /var/log/slow-query.log o lo verifica en tiempo real:
tail -f /var/log/slow-query.log
De esta forma, podrá analizar las consultas que su proyecto envía a su base de datos y realizar una auditoría.
Si cambia alguna configuración de la base de datos, verifique que no haya errores en la configuración. Después de realizar cualquier cambio en la configuración de my.cnf, debe verificar si hay errores en la configuración:
systemctl status mariadb -l
Comandos básicos de MariaDB Shell
Los comandos cli principales que un administrador tiene que usar con frecuencia en la consola mariadb se muestran a continuación.
Para iniciar sesión localmente en su consola MariaDB, ejecute este comando:
mysql -u root -p
Para conectarse de forma remota a su servidor MariaDB:
mysql -u root -p -h 192.168.1.20
Comandos útiles de MariaDB (MySQL):
create database db1; – crea una base de datos con el nombre db1
show databases; – muestra la lista de bases de datos en el servidor
use db1; – inicie sesión en una base de datos con el nombre db1
show tables; – enumera todas las tablas en la base de datos actual
create user 'project'@'localhost' identified by '$sup#erP@ss1'; – crea un usuario (proyecto) y establece su contraseña en $ sup # erP @ ss1
grant all privileges on database_name.* to project@'localhost'; – otorga todos los privilegios al proyecto del usuario
flush privileges; – actualiza todos los privilegios
show processlist; – ver conexiones DB activas. También puede utilizar este comando:
show status where `variable_name` = 'Threads_connected';
En su consola mysql, puede ver o cambiar algunas variables, como:
SHOW VARIABLES LIKE 'max_error_count';

Cambiar:
SET max_error_count=256;

En conclusión, me gustaría decir que cuando configura un servidor de base de datos, debe considerar que los proyectos se ubicarán en el servidor. Lo que es aplicable para proyectos menores definitivamente no será adecuado para uno grande. Pruebe, experimente y vea siempre sus registros. En el siguiente artículo, mostraremos cómo proporcionar alta disponibilidad y aumentar el rendimiento de la aplicación mediante la replicación entre servidores de bases de datos MariaDB.




