WORDPRESS

¿Cómo instalar y configurar MariaDB para obtener el mejor rendimiento en Ubuntu y CentOS?

Aprendamos cómo instalar y configurar MariaDB, un popular sistema de gestión de bases de datos relacionales MySQL (RDBMS) de código abierto.

Está desarrollado por la comunidad con soporte comercial opcional. MariaDB está diseñado para seguir siendo altamente compatible con MySQL, aunque existen algunas desviaciones.

En este artículo, cubriremos la instalación y configuración de MariaDB en Ubuntu 20.x y CentOS 7.x/8.x, y concluiremos revisando algunas de las mejores prácticas para asegurar y mejorar su rendimiento.

Maria DB en Ubuntu

En Ubuntu 20.x, MariaDB está disponible directamente desde sus repositorios predeterminados. Usaremos apt para esta tarea.

Primero actualice los datos del repositorio apt por:

$ sudo apt update

Después de actualizar los datos del repositorio, ejecute:

$ sudo apt install mariadb-server

Esto instalará MariaDB y los paquetes necesarios. Confirme cualquier indicación que haya recibido durante el comando anterior con «Y».

Do you want to continue? [Y/n] Y

MariaDB en CentOS 7.x

Para CentOS 7.x, la versión de MariaDB disponible en el repositorio predeterminado de CentOS es 5.x. Instalaremos la última versión disponible de MariaDB.

Para hacer esto, primero debemos configurar un repositorio yum adicional. MariaDB proporciona una manera fácil de usar mariadb_repo_setup texto. Para obtener la configuración del repositorio, ejecute el siguiente comando en un sistema CentOS 7.x:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

Este script configurará el repositorio yum requerido para instalar automáticamente la última versión de MariaDB. Al escribir estas líneas, es 10.x.

Alternativamente, si desea seguir el camino manual, puede configurar un repositorio yum manual creando un nuevo archivo de repositorio:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

Luego agregue los siguientes detalles al archivo de repositorio y guárdelo:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Ahora para instalar MariaDB, ejecute el siguiente comando:

$ sudo yum install MariaDB-server

Confirme cualquier indicación durante la instalación ingresando «y»:

Is this ok [y/d/N]: y

Esto completa la instalación del servidor MariaDB y las dependencias.

MariaDB en CentOS 8.x

Para CentOS 8.x, la versión disponible en el repositorio predeterminado es 10.3 o superior. Podemos instalar MariaDB directamente usando el comando DNF:

sudo dnf install mariadb-server

De lo contrario, para obtener la última versión disponible, puede seguir la forma manual proporcionada en la sección anterior para CentOS 7.x, que debería ayudarlo a trabajar.

Iniciar MariaDB

En una máquina Ubuntu, tendrá el servicio MariaDB ejecutándose inmediatamente después de la instalación, mientras que para CentOS tenemos que habilitar e iniciar manualmente los servicios relacionados.

En cualquier caso, para Ubuntu y CentOS, ejecute los siguientes comandos para iniciar el servicio MariaDB, habilítelo y verifíquelo en el arranque:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

producción:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

Asegurar MariaDB

Como primer paso después de instalar MariaDB, debemos asegurar su implementación configurando una contraseña de root, deshabilitando los inicios de sesión de root remotos, eliminando la base de datos de prueba y los usuarios anónimos y, finalmente, recargando los permisos.

Ejecute los siguientes comandos para fortalecer MariaDB:

$ sudo mysql_secure_installation

A menos que tenga requisitos de desviación específicos, puede seguir las indicaciones predeterminadas para las acciones sugeridas.

producción:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

Aquí usaremos la autenticación del sistema, por lo que no hay una contraseña raíz separada para MariaDB, ya que ya es segura. También puede establecer una contraseña raíz separada en cualquier momento si lo desea.

Configurar la autenticación

Para verificar su configuración de MariaDB, ejecute (especifique la contraseña que configuró en tiempo de ejecución mysql_secure_installation O, si se omite en ese momento, use las credenciales de raíz del sistema):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Puede configurar una nueva cuenta de administrador en lugar de raíz de la siguiente manera (cambiar password con el que pretendes establecer admin cuenta):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

Usar el nuevo acceso autenticado admin El usuario es (entrada password como se establece en el paso anterior):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

optimización del sistema operativo

Después de instalar y asegurar su configuración de MariaDB, debe tomar medidas para ajustar su sistema operativo y base de datos para un rendimiento óptimo. Este ajuste variará según la configuración de su sistema, el tipo de uso, la cantidad de usuarios y muchos otros factores.

Desde la perspectiva del sistema operativo, MariaDB se puede configurar con algunos parámetros del sistema, que discutiremos ahora.

Configuración del kernel de Linux: programador de IO

El programador de IO recomendado para MariaDB es noop y deadlineVerifica usando cat /sys/block/${DEVICE}/queue/scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

Se pueden realizar cambios temporales emitiendo los siguientes comandos, cuyos efectos, si los hubiere, tendrán un impacto inmediato en el rendimiento del sistema:

$ sudo echo noop > /sys/block/sda/queue/scheduler

Para que sea persistente, debe configurarlo en el archivo de configuración de GRUB de la siguiente manera /etc/default/grub reconstruya GRUB y reinicie el sistema.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Límite de recursos: límite de archivos abiertos

Linux generalmente limita la cantidad de descriptores de archivos que cada proceso puede abrir. Para los sistemas de bases de datos activas, este límite puede superarse fácilmente o puede afectar al rendimiento. En muchos sistemas Linux, este límite predeterminado es 1024. Además, hay opciones de límite suave y límite duro.

Para aumentar el límite, puede agregar /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

Después de eso, debe reiniciar el sistema. mysql Los usuarios podrán ver y utilizar las nuevas restricciones. Esto se puede comprobar como:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Límites de recursos – Tamaño de archivo principal

Como se muestra en el ejemplo anterior, Linux limita el tamaño del archivo central. Nuevamente, esto tiene un límite suave y un límite duro, por defecto el límite suave está establecido en 0, lo que deshabilita efectivamente la generación de archivos centrales. Permitir la generación de archivos principales (Se requiere configuración adicional para la generación de volcado de núcleo), podemos aumentar este valor en /etc/security/limits.conf:

mysql soft core unlimited
mysql hard core unlimited

Después de que el sistema se reinicie, mysql los usuarios podrán utilizar ulimit El comando es:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Configurar intercambiabilidad

El valor Swappiness en Linux determina la probabilidad de que el sistema intercambie páginas de la memoria al espacio de intercambio configurado en el sistema. Por lo general, el valor predeterminado se establece en 60, que se puede verificar desde:

sysctl vm.swappiness

Su valor puede variar de 0 a 100, donde un valor más bajo significa una menor probabilidad de intercambio. En los servidores de bases de datos que solo ejecutan MariaDB, queremos reducir este valor a 0 para evitar el intercambio tanto como sea posible. Tenga en cuenta que establecer un valor de swappiness de 0 debe hacerse con precaución al considerar otros factores de diseño del sistema, ya que el kernel puede causar que los procesos sin memoria (OOM) finalicen en condiciones de alto uso de memoria o carga de E/S.

Debido a la baja configuración de intercambio recomendada para cargas de trabajo de base de datos y bases de datos MariaDB, se recomienda una configuración de intercambio de 1.Puedes agregar la siguiente linea /etc/sysctl.confPara hacer que este cambio sea persistente:

vm.swappiness = 1

Los cambios surtirán efecto después de un reinicio del sistema, pero siempre puede usarlos antes sysctl Pedido:

sysctl -w vm.swappiness=1

optimización del sistema de archivos

Para MariaDB, generalmente se considera que el mejor sistema de archivos de Linux es ext4, XFS y Btrfs Todos están incluidos en el núcleo principal de Linux y son ampliamente compatibles. Estos sistemas de archivos están disponibles en la mayoría de las distribuciones de Linux. Cada sistema de archivos tiene sus propias propiedades y capacidades únicas que se pueden seleccionar a pedido después de una revisión adecuada.

Además, es poco probable que necesite registrar las horas de acceso a los archivos en el servidor de la base de datos. Podemos desactivarlo para mejorar el rendimiento.Puede montar el sistema de archivos relevante noatime opción o agregarlo a las opciones de instalación /etc/fstab archivo para hacerlo persistente.

Optimización de base de datos

Hay varios parámetros ajustables dentro de la función MariaDB, que se pueden personalizar de acuerdo con sus propios requisitos y necesidades.

Discutiremos algunos de ellos aquí.

MariaDB funciona principalmente con my.cnf documento.

existe ubuntupuedes encontrar my.cnf existe:

/etc/mysql/my.cnf

cuando se enciende sistema operativo central Está localizado:

/etc/my.cnf

En aquí.

Mucho también depende del tipo de motor utilizado por MariaDB, es decir, MyISAM y InnoDB or XtraDBAmbos tienen sus pros y sus contras, elegir uno depende de la base de datos y los requisitos de la aplicación.

debemos establecer innodb_buffer_pool_size Alrededor del 80% de la memoria. Esto asegura que el 80% del conjunto de trabajo esté en la memoria.

Algunos otros parámetros ajustables importantes son:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

Se pueden encontrar más detalles sobre el ajuste de las variables InnoDB o XtraDB aquíreferirse a esto guía Todas las opciones de ajuste disponibles para MariaDB.

Si está interesado, consulte estos recursos para aprender SQL y NoSQL.

en conclusión

MariaDB es una de las opciones populares para DBMS relacionales. El código abierto con una comunidad diversa se suma aún más.

Para obtener más información, consulte su documento Esto incluye temas como SQL básico, migraciones, administración de MariaDB, alta disponibilidad, ajuste del rendimiento, motores de almacenamiento, programación y personalización. También es posible que desee deshabilitar el registro binario si no está utilizando un clúster.

Artículo Recomendado:  ¿Cómo auditar las vulnerabilidades de seguridad de NoSQL?

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.