sql >> Base de Datos >  >> RDS >> MariaDB

Cómo instalar, proteger 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 repasaremos brevemente cómo instalar y asegurar un servidor de base de datos MariaDB y luego explicaremos cómo configurarlo.

Instalación y protección 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 es cierto para openSUSE .

Por brevedad, 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 en ambos MySQL y MariaDB , y los archivos de configuración se nombran 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 de RDBMS.

Una vez que se hayan instalado los paquetes anteriores, asegúrese de que el servicio de la 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 mysql_secure_installation texto. Este proceso le permitirá:

  1. establecer/restablecer la contraseña para el usuario root de RDBMS
  2. eliminar los 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 raíz para máquinas que no sean localhost
  4. eliminar la base de datos de prueba (a la que cualquiera puede acceder)
  5. activar los cambios asociados con 1 a 4.

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

Configuración del 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 ~/.my.cnf .

La mayoría de las veces, solo /etc/my.cnf existe 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á encerrado entre corchetes.

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

Configuración y descripción Valor predeterminado
directorio de datos es el directorio donde se almacenan los archivos de datos. dirección de datos=/var/lib/mysql
socket indica el nombre y la ubicación del archivo de socket que se utiliza para las conexiones de clientes locales. Tenga en cuenta que un archivo de socket es un recurso que se utiliza para pasar información entre aplicaciones. socket=/var/lib/mysql/mysql.sock
bind_address es la dirección donde el servidor de la base de datos escuchará las conexiones TCP/IP. Si necesita que su servidor escuche en más de una dirección IP, omita esta configuración (0.0.0.0, lo que significa que escuchará en todas las direcciones IP asignadas a este host específico).

Cambiaremos esto para indicarle al servicio que escuche solo en su dirección principal (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0
port representa el puerto donde escuchará el servidor de la base de datos.

Reemplazaremos el valor predeterminado (3306) con 20500 (pero debemos asegurarnos de que nada más esté usando ese puerto):
port=20500

Si bien algunas personas argumentarán que la seguridad a través de la oscuridad no es una buena práctica, cambiar los puertos de aplicación predeterminados por puertos superiores es un método rudimentario, pero efectivo, para desalentar los escaneos de puertos.

puerto=3306
innodb_buffer_pool_size es el grupo de búfer (en bytes) de memoria que se asigna para datos e índices a los que se accede con frecuencia cuando se usa Innodb (que es el predeterminado en MariaDB) o XtraDB como motor de almacenamiento.

Reemplazaremos el valor predeterminado con 256 MB:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve indica si los nombres de host se resolverán o no en las conexiones entrantes. Si se establece en 1, como haremos en esta guía, solo direcciones IP.

A menos que necesite nombres de host para determinar los permisos, es recomendable deshabilitar esta variable (para acelerar las conexiones y consultas) estableciendo su valor en 1:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size representa el tamaño (en bytes) disponible para la caché de consultas en el disco, donde los resultados de las consultas SELECT se almacenan para uso futuro cuando una consulta idéntica (para misma base de datos y utilizando el mismo protocolo y el mismo juego de caracteres).

Debe elegir un tamaño de caché de consulta que coincida con sus necesidades en función de 1) la cantidad de consultas repetitivas y 2) la cantidad aproximada de registros que se espera que devuelvan esas consultas repetitivas. Estableceremos este valor en 100 MB por el momento:

query_cache_size=100M

query_cache_size=0 (lo que significa que está deshabilitado de forma predeterminada)
max_connections es el número máximo de conexiones simultáneas de clientes al servidor. Estableceremos este valor en 30:
max_connections=30Cada conexión utilizará un subproceso y, por lo tanto, consumirá memoria. Tenga en cuenta este hecho al configurar max_connections.
max_connections=151
thread_cache_size indica la cantidad de subprocesos que el servidor asigna para su reutilización después de que un cliente se desconecta y libera los subprocesos que estaban en uso anteriormente. En esta situación, es más económico (desde el punto de vista del rendimiento) reutilizar un subproceso que crear una instancia de uno nuevo.

Nuevamente, esto depende de la cantidad de conexiones que espera. Podemos establecer con seguridad este valor en la mitad del número de max_connections:

thread_cache_size=15

thread_cache_size=0 (deshabilitado por defecto)

En CentOS , necesitaremos decirle a SELinux para permitir MariaDB para escuchar 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 de MariaDB)

# ./mysqltuner.pl

El resultado del script es en sí mismo muy interesante, pero saltemos al final donde se enumeran las variables a ajustar con el valor recomendado:

El query_cache_type la configuración indica si la caché de consultas está deshabilitada (0) o habilitado (1) . En este caso, mysqltuner nos aconseja que lo deshabilitemos.

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

ADVERTENCIA :Antes de realizar cambios en la configuración de un servidor de producción, le recomendamos que consulte a un administrador de base 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 solo algunas de las configuraciones que puede considerar al preparar el servidor para su uso o al ajustarlo más adelante. Consulte siempre la documentación oficial de MariaDB antes de realizar cambios o consulte nuestros consejos de ajuste de rendimiento de MariaDB:

Don' Señorita: 15 consejos útiles de ajuste y optimización del 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 de servidor que le gustaría usar? Siéntase libre de compartir con el resto de la comunidad utilizando el formulario de comentarios a continuación.

Conviértase en un administrador de sistemas certificado de Linux