Búsqueda de sitios web

Cómo instalar, asegurar y ajustar el rendimiento del servidor de base de datos MariaDB


Un servidor de base de datos es un componente crítico de la infraestructura de red necesaria para las aplicaciones actuales. Sin la capacidad de almacenar, recuperar, actualizar y eliminar datos (cuando sea necesario), la utilidad y el alcance de las aplicaciones web y de escritorio se vuelven muy limitados.

Además, saber cómo instalar, administrar y configurar un servidor de base de datos (para que funcione como se espera) es una habilidad esencial que todo administrador de sistemas debe tener.

En este artículo revisaremos brevemente cómo instalar y asegurar un servidor de base de datos MariaDB y luego explicaremos cómo configurarlo.

Instalación y seguridad de un servidor MariaDB

En CentOS 7.x, MariaDB reemplazó a MySQL, que todavía se puede encontrar en Ubuntu (junto con MariaDB). Lo mismo ocurre con openSUSE.

Para abreviar, solo usaremos MariaDB en este tutorial, pero tenga en cuenta que, además de tener diferentes nombres y filosofías de desarrollo, ambos Sistemas de gestión de bases de datos relacionales (RDBMS para abreviar) son casi idénticos.

Esto significa que los comandos del lado del cliente son los mismos tanto en MySQL como en MariaDB, y los archivos de configuración tienen nombres y se ubican en los mismos lugares.

Para instalar MariaDB, haga:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
zypper update && zypper install mariadb mariadb-tools # openSUSE

Tenga en cuenta que, en Ubuntu, se le pedirá que ingrese una contraseña para el usuario root del RDBMS.

Una vez que se hayan instalado los paquetes anteriores, asegúrese de que el servicio de base de datos se esté ejecutando y se haya activado para iniciarse en el arranque (en CentOS y openSUSE deberá realizar esta operación manualmente , mientras que en Ubuntu el proceso de instalación ya se habrá encargado de ello):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
systemctl start mysql && systemctl enable mysql

Luego ejecute el script mysql_secure_installation. Este proceso le permitirá:

  1. establecer/restablecer la contraseña para el usuario raíz de RDBMS
  2. eliminar inicios de sesión anónimos (permitiendo así que solo los usuarios con una cuenta válida inicien sesión en el RDBMS)
  3. deshabilitar el acceso root para máquinas que no sean localhost
  4. eliminar la base de datos de prueba (a la que cualquiera puede acceder)
  5. active los cambios asociados del 1 al 4.

Para obtener una descripción más detallada de este proceso, puede consultar la sección Post instalación en Instalar la base de datos MariaDB en RHEL/CentOS/Fedora y Debian/Ubuntu.

Configurando el servidor MariaDB

Las opciones de configuración predeterminadas se leen de los siguientes archivos en el orden indicado: /etc/mysql/my.cnf, /etc/my.cnf y ~ /.mi.cnf.

La mayoría de las veces, sólo existe /etc/my.cnf. Es en este archivo donde estableceremos la configuración de todo el servidor (que se puede anular con la misma configuración en ~/.my.cnf para cada usuario).

Lo primero que debemos tener en cuenta sobre my.cnf es que las configuraciones están organizadas en categorías (o grupos) donde cada nombre de categoría está entre corchetes.

Las configuraciones del sistema del servidor se proporcionan en la sección [mysqld], donde normalmente encontrará solo las dos primeras configuraciones en la siguiente tabla. El resto son otras opciones de uso frecuente (cuando se indique, cambiaremos el valor predeterminado por uno personalizado de nuestra elección):

Setting and description

Valor predeterminado

datadir is the directory where the data files are stored.

datadir=/var/lib/mysql

socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications.

socket=/var/lib/mysql/mysql.sock

bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).

We will change this to instruct the service to listen only on its main address (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0

port represents the port where the database server will be listening.

We will replace the default value(3306) with 20500 (but we need to make sure nothing else is using that port):
port=20500

While some people will argue that security through obscurity is not good practice, changing the default application ports for higher ones is a rudimentary -yet effective- method to discourage port scans.

puerto=3306

innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.

We will replace the default value with 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728

skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.

Unless you require hostnames to determine permissions, it is advisable to disable this variable (in order to speed up connections and queries) by setting its value to 1:

skip_name_resolve=1

skip_name_resolve=0

query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.

You should choose a query cache size that matches your needs based on 1) the number of repetitive queries, and 2) the approximate number of records those repetitive queries are expected to return. We will set this value to 100 MB for the time being:

query_cache_size=100M

query_cache_size=0 (lo que significa que está deshabilitado de forma predeterminada)

max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30:
max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections.

max_connections=151

thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.

Again, this depends on the number of connections you are expecting. We can safely set this value to half the number of max_connections:

thread_cache_size=15

thread_cache_size=0 (deshabilitado por defecto)

En CentOS, necesitaremos decirle a SELinux que permita que MariaDB escuche en un puerto no estándar (20500 ) antes de reiniciar el servicio:

yum install policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 20500

Luego reinicie el servicio MariaDB.

Ajuste del rendimiento de MariaDB

Para ayudarnos a verificar y ajustar la configuración según nuestras necesidades específicas, podemos instalar mysqltuner (un script que proporcionará sugerencias para mejorar el rendimiento de nuestro servidor de base de datos y aumentar su estabilidad):

wget https://github.com/major/MySQLTuner-perl/tarball/master
tar xzf master

Luego cambie el directorio a la carpeta extraída del tarball (la versión exacta puede diferir en su caso):

cd major-MySQLTuner-perl-7dabf27

y ejecútelo (se le pedirá que ingrese las credenciales de su cuenta administrativa MariaDB)

./mysqltuner.pl

El resultado del script es de por sí muy interesante, pero vayamos al final donde se listan las variables a ajustar con el valor recomendado:

La configuración query_cache_type indica si la caché de consultas está deshabilitada (0) o habilitada (1). En este caso, mysqltuner nos aconseja desactivarlo.

Entonces, ¿por qué se recomienda desactivarlo ahora? La razón es que la caché de consultas es útil principalmente en escenarios de alta lectura/baja escritura (que no es nuestro caso, ya que acabamos de instalar el servidor de base de datos).

ADVERTENCIA: Antes de realizar cambios en la configuración de un servidor de producción, le recomendamos encarecidamente que consulte a un administrador de bases de datos experto para asegurarse de que una recomendación dada por mysqltuner no tendrá un impacto negativo. en una configuración existente.

Resumen

En este artículo hemos explicado cómo configurar un servidor de base de datos MariaDB después de haberlo instalado y asegurado. Las variables de configuración enumeradas en la tabla anterior son sólo algunas configuraciones que quizás desee considerar mientras prepara el servidor para su uso o cuando lo ajusta más adelante. Consulte siempre la documentación oficial de MariaDB antes de realizar cambios o consulte nuestros consejos de ajuste del rendimiento de MariaDB:

No te pierdas: 15 consejos útiles para optimizar y ajustar el rendimiento de MariaDB

Como siempre, no dude en hacernos saber si tiene alguna pregunta o comentario sobre este artículo. ¿Hay alguna otra configuración del servidor que le guste usar? No dudes en compartir con el resto de la comunidad utilizando el formulario de comentarios a continuación.