A database server is an critical component of the network infrastructure necessary for today’s applications. Without the ability to store, retrieve, update, and delete data (when needed), the usefulness and scope of web and desktop apps becomes very limited.

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 aún se puede encontrar en Ubuntu (junto con MariaDB). Lo mismo ocurre con openSUSE.
Por brevedad, solo usaremos MariaDB en este tutorial, pero tenga en cuenta que, además de tener nombres y filosofías de desarrollo diferentes, ambos Sistemas de Gestión de Bases de Datos Relacionales (RDBMSs 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 ubicaciones similares.
Para instalar MariaDB, haga lo siguiente:
--------------- 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 base de datos esté en ejecución 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á:
- establecer / restablecer la contraseña para el usuario root del RDBMS
- eliminar inicios de sesión anónimos (permitiendo así solo a los usuarios con una cuenta válida iniciar sesión en el RDBMS)
- desactivar el acceso root para máquinas que no sean localhost
- eliminar la base de datos de prueba (a la que cualquiera puede acceder)
- activar los cambios asociados con 1 al 4.
Para obtener una descripción más detallada de este proceso, puede consultar la sección de Post 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 dado: /etc/mysql/my.cnf
, /etc/my.cnf
y ~/.my.cnf
.
Muy a menudo, solo existe /etc/my.cnf
. Es en este archivo donde configuraremos los ajustes para todo el servidor (los cuales pueden ser anulados con los mismos ajustes en ~/.my.cnf
para cada usuario).
Lo primero que debemos tener en cuenta acerca de my.cnf
es que los ajustes están organizados en categorías (o grupos) donde cada nombre de categoría está encerrado entre corchetes.
Las configuraciones del sistema del servidor se dan en la sección [mysqld]
, donde típicamente solo encontrará los primeros dos ajustes en la tabla a continuación. El resto son otras opciones utilizadas con frecuencia (donde se indique, cambiaremos el valor predeterminado por uno personalizado de nuestra elección):
Setting and description | Default value |
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).
Cambiar esto para instruir al servicio para escuchar solo en su dirección principal (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.
Reemplazaremos el valor predeterminado (3306) con 20500 (pero debemos asegurarnos de que ningún otro servicio esté utilizando ese puerto): Aunque 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 números más altos es un método rudimentario -aunque efectivo- para desalentar los escaneos de puerto. |
port=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.
Reemplazaremos el valor predeterminado con 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.
A menos que necesite nombres de host para determinar 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 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.
Debería elegir un tamaño de caché de consultas que se ajuste a sus necesidades basado en 1) el número de consultas repetitivas y 2) el número aproximado 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 (which means it is disabled by default) |
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.
Nuevamente, esto depende del número de conexiones que espera. Podemos establecer este valor de forma segura en la mitad del número de max_connections: thread_cache_size=15 |
thread_cache_size=0 (disabled by default) |
En CentOS, necesitaremos indicar a SELinux que permita a MariaDB 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 de MariaDB.
Ajuste de 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 al directorio en la carpeta extraída del archivo 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
La salida del script es muy interesante en sí misma, pero pasemos al final donde se enumeran las variables a ajustar con el valor recomendado:

La configuración query_cache_type
indica si la caché de consultas está desactivada (0) o activada (1). En este caso, mysqltuner nos está aconsejando desactivarla.
Entonces, ¿por qué se nos aconseja desactivarla ahora? La razón es que la caché de consultas es útil principalmente en escenarios de alta lectura / baja escritura (lo cual 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, se recomienda encarecidamente consultar a un experto administrador de bases de datos para asegurarse de que una recomendación dada por mysqltuner no afectará negativamente 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 configuraciones que puede considerar al preparar el servidor para su uso o al ajustarlo más tarde. Siempre consulte la documentación oficial de MariaDB antes de realizar cambios o consulte nuestros consejos de ajuste de rendimiento de MariaDB:
No te pierdas: 15 Consejos útiles de ajuste y optimización de rendimiento de MariaDB
Como siempre, no dudes en hacernos saber si tienes alguna pregunta o comentario sobre este artículo. ¿Hay alguna otra configuración de servidor que te gustaría usar? Siéntete libre de compartirla con el resto de la comunidad utilizando el formulario de comentarios a continuación.
Source:
https://www.tecmint.com/install-secure-performance-tuning-mariadb-database-server/