Cómo instalar y configurar MariaDB en Ubuntu y CentOS
Aprendamos a instalar y configurar MariaDB, un popular sistema de gestión de bases de datos relacionales MySQL de código abierto (RDBMS).
Está desarrollado por la comunidad y tiene la opción de soporte comercial. Se pretende que MariaDB siga 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 al final revVea algunas de las mejores prácticas para asegurar y mejorar su rendimiento.
MariaDB en Ubuntu
En Ubuntu 20.x, MariaDB está disponible directamente desde sus repositorios predeterminados. Usaremos apt para esta tarea.
Primera actualizaciónate datos de repositorios aptos por:
$ sudo apt update
Una vez que se actualizan los datos del repositorioated, ejecutar:
$ sudo apt install mariadb-server
Esto instalará MariaDB y los paquetes necesarios. Confirme con 'Y' para cualquier mensaje que pueda recibir durante la ejecución del prevcomando ioso.
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. Vamos a instalar la l.atePrimera versión disponible de MariaDB.
Para esto, primero necesitamos configurar un repositorio de yum adicional. MariaDB proporciona una forma sencilla de utilizar mariadb_repo_setup
guión. Para configurar el repositorio, ejecute los siguientes comandos en su 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 l de MariaDB.ateprimera versión automáticaally. Al momento de escribir este artículo, es 10.x.
O en caso de que quiera ir de forma manual, puede configurar un repositorio de yum manual creando un nuevo archivo de repositorio como:
$ 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 mensaje que aparezca durante la instalación ingresando 'y':
Is this ok [y/d/N]: y
Esto completa la instalación del servidor MariaDB y los paquetes dependientes.
MariaDB en CentOS 8.x
Para CentOS 8.x, la versión disponible de los repositorios predeterminados es 10.3 o más reciente. Podemos instalar MariaDB directamente usando el DNF mando:
sudo dnf install mariadb-server
Más para conseguir el latePrimera versión disponible, puede seguir la forma manual como se indica en la previous sección para CentOS 7.x y eso debería ayudarle a trabajar.
Iniciando MariaDB
En una máquina Ubuntu, el servicio MariaDB se ejecutará inmediatamente después de la instalación, mientras que en CentOS, tendremos que manually habilitar e iniciar servicios relevantes.
En cualquier caso, tanto para Ubuntu como para CentOS, ejecute los siguientes comandos para iniciar el servicio MariaDB, habilitarlo en el arranque y verificarlo:
$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service
Salida:
$ 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.
$
Asegurando MariaDB
Como primer paso después de la instalación de MariaDB, debemos asegurar su implementación estableciendo una contraseña de root, deshabilitando el inicio de sesión remoto, eliminando la base de datos de prueba y los usuarios anónimos, y finalmente.ally recargar privilegios.
Ejecute el siguiente comando para endurecer MariaDB:
$ sudo mysql_secure_installation
Puede seguir las indicaciones predeterminadas con acciones sugeridas a menos que tenga un requisito específico para deviate.
Salida:
$ 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 hemos configurado una separación.ate contraseña de root para MariaDB, ya que ya es segura. Si es necesario, siempre puedes configurar una separación.ate contraseña de root también.
Validación de la configuración
Para verificar la configuración de MariaDB, ejecute (especifique la contraseña que configuró mientras mysql_secure_installation
o, si se omite en ese momento, use las credenciales raíz de su 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 la raíz como se muestra a continuación (cambie el valor de 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
$
Verificar el acceso con nuevo admin
usuario como (ingrese el password
como se establece en la prevpaso siguiente):
$ 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 SO
Después de instalar y asegurar su configuración de MariaDB, debe tomar medidas para ajustar su sistema operativo y su base de datos para un rendimiento óptimo. Este ajuste variará según la configuración de su sistema, el tipo de uso, el número de usuarios y otros factores.
Desde la perspectiva del sistema operativo, algunos parámetros del sistema se pueden configurar para MariaDB que discutiremos ahora.
Configuración del kernel de Linux - Programador de E / S
Los programadores de E / S recomendados para MariaDB son noop
y deadline
. Para comprobar el uso cat /sys/block/${DEVICE}/queue/scheduler
$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$
Se puede realizar un cambio temporal emitiendo el siguiente comando y su efecto, si lo hubiera, será inmediato.ate sobre el rendimiento del sistema:
$ sudo echo noop > /sys/block/sda/queue/scheduler
Para que sea persistente, deberá configurarlo en el archivo de configuración de GRUB como se muestra a continuación en /etc/default/grub
, reconstruya GRUB y reinicie el sistema.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
Límites de recursos: límite de archivos abiertos
usuario de Linuxally limita el número de archivos descriptos cada uno process puedo abrir. Para un sistema de base de datos activo, este límite puede exceder fácilmente o puede impact actuación. En muchos sistemas Linux, este límite predeterminado es 1024. Además, existe la opción de límites flexibles y estrictos.
Para aumentar el límite, puede agregar las siguientes líneas en su /etc/security/limits.conf
:
mysql soft nofile 65535
mysql hard nofile 65535
Será necesario reiniciar el sistema después de lo cual mysql
el usuario podrá ver y utilizar los nuevos límites. Esto se puede comprobar como:
$ ulimit -Sn
65535
$ ulimit -Hn
65535
Límites de recursos: tamaño del archivo principal
Linux limita el tamaño de los archivos principales como se ve en la prevcaso serio. Nuevamente, esto tiene un límite suave y estricto y, de forma predeterminada, el límite suave se establece en 0, lo que efectivamente diferenciasables generación de archivos principales. Para permitir la generación de archivos principales (otras configuraciones necesarias para la generación de volcados de memoria), podemos aumentar este valor en /etc/security/limits.conf como:
mysql soft core unlimited
mysql hard core unlimited
Después de reiniciar el sistema, mysql
el usuario podría ver los nuevos valores usando ulimit
comando como:
$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited
Configurar Swappiness
El valor de intercambio en Linux determina la probabilidad de que el sistema intercambie una página de la memoria para intercambiar el espacio configurado en el sistema. usúally, el valor predeterminado se establece en 60, que se puede comprobar desde:
sysctl vm.swappiness
Su valor puede oscilar entre 0 y 100, donde un valor más bajo significa una menor probabilidad de intercambio. En un servidor de base de datos que ejecuta únicamente MariaDB, querríamos reducir este valor a 0 para evitar el uso de intercambio tanto como sea posible. Tenga en cuenta aquí que establecer el valor de intercambio en 0 debe realizarse con precaución teniendo en cuenta otros factores de diseño del sistema, ya que en caso de un uso elevado de memoria o carga de E/S, existe la posibilidad de que se produzca falta de memoria (OOM). process matando por el núcleo.
Dado que se recomienda una configuración de intercambio baja para las cargas de trabajo de la base de datos y, como tal, para las bases de datos MariaDB, se recomienda establecer el intercambio en un valor de 1. Puede agregar la línea siguiente /etc/sysctl.conf
para que este cambio sea persistente:
vm.swappiness = 1
Los cambios entrarán en vigor después del reinicio del sistema, aunque siempre puede hacerlo con anticipación usando sysctl
mando:
sysctl -w vm.swappiness=1
Optimizaciones del sistema de archivos
Para MariaDB, los mejores sistemas de archivos Linux son generally considerado como ext4
, XFS
y Btrfs
Todos ellos están incluidos en el núcleo principal de Linux y cuentan con un amplio soporte. Estos sistemas de archivos están disponibles en la mayoría de las distribuciones de Linux. Cada sistema de archivos tiene sus propiedades y características únicas y se puede elegir según los requisitos después de una adecuada revVer
Además, es poco probable que necesite registrar el tiempo de acceso a los archivos en un servidor de base de datos. podemos disable esto para mejorar el rendimiento. Puede montar el sistema de archivos relevante con noatime
opción o agregarlo en las opciones de montaje en /etc/fstab
archivo para hacerlo persistente.
Optimización de base de datos
Hay varios sintonizables internal al funcionamiento de MariaDB que se puede personalizar según los requisitos y necesidades de cada uno.
Discutiremos algunos de ellos aquí.
MariaDB se configura principalmente por my.cnf
archivo.
On Ubuntu, puedes encontrar my.cnf
en:
/etc/mysql/my.cnf
Mientras tanto CentOS su ubicaciónated en:
/etc/my.cnf
Se puede consultar documentación detallada sobre qué variables están disponibles para ajustar en el archivo de configuración desde Haga clic aquí para entrar..
Mucho también depende del tipo de motor utilizado por MariaDB, a saber, MyISAM
y InnoDB or XtraDB
. Ambos tienen sus propios pros y contras y elegir uno depende de los requisitos de la base de datos y la aplicación.
Deberíamos establecer innodb_buffer_pool_size
aproximadamente al 80% de su memoria. Esto asegura que el 80% de su conjunto de trabajo esté en la memoria.
Algunos de los 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 variables InnoDB o XtraDB Haga clic aquí para entrar.. Consulte este guía para todas las opciones de ajuste disponibles para MariaDB.
Si está interesado, consulte estos recursos para aprender SQL y NoSQL.
Para Concluir
MariaDB es una de las opciones populares cuando se trata de DBMS de relación. Siendo De código abierto con una comunidad diversa se suma más a ello.
Para obtener más información, consulte su documentación que incluye temas como SQL básico, migración, Administración de MariaDB, alta disponibilidad, ajuste de rendimiento, motores de almacenamiento, programación y personalización. También puede querer disable registro binario si no usa un clúster.