In Base de données Dernière mise à jour:
Partager sur:
Cloudways propose un hébergement cloud géré aux entreprises de toutes tailles pour héberger un site Web ou des applications Web complexes.

Apprenons à installer et configurer MariaDB, un populaire système de gestion de base de données relationnelle (SGBDR) MySQL.

Il est développé par la communauté et a l'option d'un soutien commercial. MariaDB a été conçue pour rester hautement compatible avec MySQL bien qu'il y ait quelques écarts.

In this article, we’ll be covering the installation and configuration of MariaDB on Ubuntu 20.x and CentOS 7.x/8.x and at the end will review some best practices for securing and improving its performance.

MariaDB sur Ubuntu

Sur Ubuntu 20.x, MariaDB est disponible directement à partir de ses référentiels par défaut. Nous utiliserons apt pour cette tâche.

Première mise à jour des données des référentiels apt par:

$ sudo apt update

Une fois les données du référentiel mises à jour, exécutez:

$ sudo apt install mariadb-server

This will install MariaDB and required packages. Confirm with ‘Y’ for any prompts you may get during the execution of the previous command.

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

MariaDB sur CentOS 7.x

Pour CentOS 7.x, la version MariaDB disponible à partir du référentiel CentOS par défaut est 5.x. Nous allons installer la dernière version disponible de MariaDB.

Pour cela, nous devons d'abord configurer un référentiel yum supplémentaire. MariaDB fournit un moyen simple d'utiliser le mariadb_repo_setup scénario. Pour obtenir la configuration du référentiel, exécutez les commandes suivantes sur votre système 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

Ce script configurera le référentiel yum requis pour installer automatiquement la dernière version de MariaDB. Au moment de la rédaction de cet article, il est 10.x.

Ou si vous souhaitez utiliser la méthode manuelle, vous pouvez configurer un référentiel yum manuel en créant un nouveau fichier de référentiel comme:

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

Ajoutez ensuite les détails suivants au fichier repo et enregistrez-le:

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

Maintenant, pour installer MariaDB, exécutez la commande ci-dessous:

$ sudo yum install MariaDB-server

Confirmez toutes les invites qui s'affichent lors de l'installation en saisissant «y»:

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

Ceci termine l'installation du serveur MariaDB et des packages dépendants.

MariaDB sur CentOS 8.x

Pour CentOS 8.x, la version disponible à partir des référentiels par défaut est 10.3 ou plus récente. Nous pouvons directement installer MariaDB en utilisant le DNF commander:

sudo dnf install mariadb-server

Else to get the latest available version, you can follow the manual way as given in the previous section for CentOS 7.x and that should get you working.

Démarrage de MariaDB

Sur une machine Ubuntu, vous aurez le service MariaDB en cours d'exécution juste après l'installation, tandis que pour CentOS, nous devons activer et démarrer manuellement les services pertinents.

Dans tous les cas, pour Ubuntu ainsi que CentOS, exécutez les commandes ci-dessous pour démarrer le service MariaDB, activé au démarrage et vérifiez-le:

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

Sortie :

$ 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.
$

Sécuriser MariaDB

Comme première étape après l'installation de MariaDB, nous devons sécuriser son déploiement en définissant un mot de passe root, en désactivant la connexion root à distance, en supprimant la base de données de test ainsi que les utilisateurs anonymes, et enfin en rechargeant les privilèges.

Exécutez la commande ci-dessous pour renforcer MariaDB:

$ sudo mysql_secure_installation

Vous pouvez suivre les invites par défaut avec des actions suggérées, sauf si vous avez une exigence spécifique de dévier.

Sortie :

$ 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!
$

Ici, nous utiliserons l'authentification du système, nous n'avons donc pas configuré de mot de passe root distinct pour MariaDB, car il est déjà sécurisé. Si vous en avez besoin, vous pouvez également configurer un mot de passe root distinct.

Validation de la configuration

Pour vérifier votre configuration MariaDB, exécutez (spécifiez le mot de passe que vous avez défini lors de l'exécution mysql_secure_installation ou, si ignoré à ce moment-là, utilisez les informations d'identification racine de votre système):

$ 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
$

Vous pouvez configurer un nouveau compte administrateur à la place de la racine comme indiqué ci-dessous (modifiez la valeur de password avec celui que vous avez l'intention de définir admin Compte):

$ 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
$

Vérifiez l'accès avec un nouveau admin user as (entrez le password as set in the previous step):

$ 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
$

Optimisation du système d'exploitation

Après l'installation et la sécurisation de votre configuration MariaDB, vous devez prendre des mesures pour régler votre système d'exploitation et votre base de données pour des performances optimales. Ce réglage variera en fonction de la configuration de votre système, du type d'utilisation, du nombre d'utilisateurs et d'un certain nombre d'autres facteurs.

Du point de vue du système d'exploitation, certains paramètres système peuvent être configurés pour MariaDB dont nous parlerons maintenant.

Paramètres du noyau Linux - IO Scheduler

Les planificateurs d'E / S recommandés pour MariaDB sont noop et deadline. Pour vérifier l'utilisation cat /sys/block/${DEVICE}/queue/scheduler

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

Une modification temporaire peut être effectuée en exécutant la commande suivante et son effet, le cas échéant, sera immédiat sur les performances du système:

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

Pour le rendre persistant, vous devrez le configurer dans le fichier de configuration de GRUB comme indiqué ci-dessous dans /etc/default/grub , reconstruisez GRUB et redémarrez le système.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Limites des ressources - Limite des fichiers ouverts

Linux usually limits the number of file descriptors each process can open. For an active DB system, this limit can easily exceed or may impact performance. On many Linux systems, this limit defaults to 1024. Further, there is an option of soft and hard limits.

Pour augmenter la limite, vous pouvez ajouter les lignes suivantes dans votre /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

Un redémarrage du système sera nécessaire après mysql l'utilisateur pourrait voir et utiliser les nouvelles limites. Cela peut être vérifié comme suit:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Limites des ressources - Taille du fichier principal

Linux limits the size of core files as seen in the previous case. Again this has a soft and hard limit and by default soft limit is set as 0 which effectively disables core file generation. To allow core file generation (autres configurations nécessaires pour la génération de vidage de mémoire), nous pouvons augmenter cette valeur dans /etc/security/limits.conf comme:

mysql soft core unlimited
mysql hard core unlimited

Après le redémarrage du système, mysql l'utilisateur pourrait voir les nouvelles valeurs en utilisant ulimit commande comme:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Configurer Swappiness

La valeur de swappiness sous Linux détermine la probabilité que le système permute une page de la mémoire vers l'espace d'échange configuré sur le système. Habituellement, la valeur par défaut est définie sur 60, ce qui peut être vérifié à partir de:

sysctl vm.swappiness

Sa valeur peut aller de 0 à 100, où une valeur inférieure signifie une probabilité moindre de permutation. Sur un serveur de base de données exécutant uniquement MariaDB, nous voudrions réduire cette valeur à 0 pour éviter autant que possible d'utiliser swap. Notez ici que la définition de la valeur de permutation de 0 doit être effectuée avec précaution compte tenu des autres facteurs de conception du système, car en cas d'utilisation de la mémoire élevée ou de charge d'E / S, il y a un risque de destruction du processus de mémoire insuffisante (OOM) par le noyau.

Étant donné qu'un paramètre de faible permutation est recommandé pour les charges de travail de base de données et, par conséquent, pour les bases de données MariaDB, il est recommandé de définir la permutation sur une valeur de 1. Vous pouvez ajouter la ligne ci-dessous dans /etc/sysctl.confpour rendre ce changement persistant:

vm.swappiness = 1

Les modifications prendront effet après le redémarrage du système, bien que vous puissiez toujours le faire à l'avance en utilisant sysctl commander:

sysctl -w vm.swappiness=1

Optimisations du système de fichiers

Pour MariaDB, les meilleurs systèmes de fichiers Linux sont généralement considérés comme ext4, XFS et Btrfs which are all included in the mainline Linux kernel and are widely supported. These filesystems are available on most Linux distributions. Each filesystem has its unique properties and features and can be chosen based on requirements after proper revue.

De plus, il est peu probable que vous ayez besoin d'enregistrer le temps d'accès aux fichiers sur un serveur de base de données. Nous pouvons désactiver cela pour améliorer les performances. Vous pouvez monter le système de fichiers approprié avec noatime option ou ajoutez-la dans les options de montage dans /etc/fstab fichier pour le rendre persistant.

Optimisation de la base de données

Il existe plusieurs paramètres réglables internes au fonctionnement de MariaDB qui peuvent être personnalisés en fonction de ses exigences et de ses besoins.

Nous en discuterons quelques-uns ici.

MariaDB est principalement configuré par my.cnf fichier.

On Ubuntu, Vous pouvez trouver my.cnf à l'adresse suivante :

/etc/mysql/my.cnf

Pendant que CentOS il est situé à:

/etc/my.cnf

Une documentation détaillée sur les variables disponibles pour le réglage dans le fichier de configuration peut être consultée à partir de lire ici.

Cela dépend aussi beaucoup du type de moteur utilisé par MariaDB, à savoir, MyISAM et InnoDB or XtraDB. Les deux ont leurs propres avantages et inconvénients et en choisir un dépend des exigences de la base de données et de l'application.

Nous devrions définir innodb_buffer_pool_size à environ 80% de votre mémoire. Cela garantit que 80% de votre jeu de travail est en mémoire.

Certains des autres paramètres ajustables importants sont:

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

Vous trouverez plus de détails sur le réglage des variables InnoDB ou XtraDB lire ici. Référez-vous à ceci guide pour toutes les options de réglage disponibles pour MariaDB.

Si vous êtes intéressé, consultez ces ressources pour apprendre SQL et NoSQL.

Conclusion

MariaDB est l'un des choix populaires en matière de SGBD relationnel. Étant open-source avec une communauté diversifiée ajoute encore à cela.

Pour en savoir plus, reportez-vous à son Documentation qui inclut des sujets comme SQL de base, migration, Administration MariaDB, haute disponibilité, réglage des performances, moteurs de stockage, programmation et personnalisation. Vous pouvez également vouloir désactiver la journalisation binaire si vous n'utilisez pas de cluster.

Partager sur:
  • Abishek Nair
    Auteur
    Abhishek est ingénieur SysOps et adore écrire sur Linux, AWS et l'administration système.

Merci à nos commanditaires

Plus de bonnes lectures sur la base de données

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise à se développer.
  • L'outil de synthèse vocale qui utilise l'IA pour générer des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder