MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment installer, sécuriser et ajuster les performances du serveur de base de données MariaDB

Un serveur de base de données est un composant essentiel de l'infrastructure réseau nécessaire aux applications d'aujourd'hui. Sans la possibilité de stocker, de récupérer, de mettre à jour et de supprimer des données (si nécessaire), l'utilité et la portée des applications Web et de bureau deviennent très limitées.

De plus, savoir installer, gérer et configurer un serveur de base de données (pour qu'il fonctionne comme prévu) est une compétence essentielle que tout administrateur système doit posséder.

Dans cet article, nous allons brièvement passer en revue comment installer et sécuriser un serveur de base de données MariaDB, puis nous vous expliquerons comment le configurer.

Installer et sécuriser un serveur MariaDB

Dans CentOS 7.x , MariaDB a remplacé MySQL, qui se trouve toujours dans Ubuntu (avec MariaDB). Il en va de même pour openSUSE .

Par souci de concision, nous n'utiliserons que MariaDB dans ce didacticiel, mais veuillez noter qu'en plus d'avoir des noms et des philosophies de développement différents, les deux Systèmes de gestion de bases de données relationnelles (SGBD pour faire court) sont presque identiques.

Cela signifie que les commandes côté client sont les mêmes sur MySQL et MariaDB , et les fichiers de configuration sont nommés et situés aux mêmes endroits.

Pour installer MariaDB, faites :

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

Notez que, dans Ubuntu , il vous sera demandé d'entrer un mot de passe pour l'utilisateur root RDBMS.

Une fois les packages ci-dessus installés, assurez-vous que le service de base de données est en cours d'exécution et a été activé pour démarrer au démarrage (dans CentOS et openSUSE vous devrez effectuer cette opération manuellement, alors que dans Ubuntu le processus d'installation s'en sera déjà occupé pour vous):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

Ensuite, exécutez le mysql_secure_installation scénario. Ce processus vous permettra de :

  1. définir/réinitialiser le mot de passe pour l'utilisateur root RDBMS
  2. supprimer les connexions anonymes (permettant ainsi uniquement aux utilisateurs disposant d'un compte valide de se connecter au RDBMS)
  3. désactiver l'accès root pour les machines autres que localhost
  4. supprimer la base de données de test (à laquelle tout le monde peut accéder)
  5. activer les modifications associées de 1 à 4.

Pour une description plus détaillée de ce processus, vous pouvez vous référer à la section Post-installation dans Installer la base de données MariaDB dans RHEL/CentOS/Fedora et Debian/Ubuntu.

Configuration du serveur MariaDB

Les options de configuration par défaut sont lues à partir des fichiers suivants dans l'ordre indiqué :/etc/mysql/my.cnf , /etc/my.cnf , et ~/.my.cnf .

Le plus souvent, uniquement /etc/my.cnf existe. C'est sur ce fichier que nous allons définir les paramètres à l'échelle du serveur (qui peuvent être remplacés par les mêmes paramètres dans ~/.my.cnf pour chaque utilisateur).

La première chose que nous devons noter à propos de my.cnf est que les paramètres sont organisés en catégories (ou groupes) où chaque nom de catégorie est entouré de crochets.

Les configurations système du serveur sont données dans le [mysqld] section, où vous ne trouverez généralement que les deux premiers paramètres dans le tableau ci-dessous. Les autres sont d'autres options fréquemment utilisées (le cas échéant, nous modifierons la valeur par défaut avec une valeur personnalisée de notre choix) :

Paramètre et description Valeur par défaut
repdonnées est le répertoire où sont stockés les fichiers de données. datadir=/var/lib/mysql
socket indique le nom et l'emplacement du fichier socket utilisé pour les connexions client locales. Gardez à l'esprit qu'un fichier socket est une ressource utilisée pour transmettre des informations entre les applications. socket=/var/lib/mysql/mysql.sock
bind_address est l'adresse sur laquelle le serveur de base de données écoutera les connexions TCP/IP. Si vous avez besoin que votre serveur écoute sur plusieurs adresses IP, omettez ce paramètre (0.0.0.0, ce qui signifie qu'il écoutera sur toutes les adresses IP attribuées à cet hôte spécifique).

Nous allons changer cela pour indiquer au service de n'écouter que sur son adresse principale (192.168.0.13) :

bind_address=192.168.0.13

bind_address=0.0.0.0
port représente le port sur lequel le serveur de base de données écoutera.

Nous allons remplacer la valeur par défaut (3306) par 20500 (mais nous devons nous assurer que rien d'autre n'utilise ce port) :
port=20500

Alors que certaines personnes diront que la sécurité par l'obscurité n'est pas une bonne pratique, changer les ports d'application par défaut pour des ports supérieurs est une méthode rudimentaire - mais efficace - pour décourager les analyses de port.

port=3306
innodb_buffer_pool_size est le pool de mémoire tampon (en octets) alloué aux données et aux index fréquemment consultés lors de l'utilisation d'Innodb (qui est la valeur par défaut dans MariaDB) ou XtraDB comme moteur de stockage.

Nous remplacerons la valeur par défaut par 256 Mo :

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve indique si les noms d'hôtes seront résolus ou non sur les connexions entrantes. Si défini sur 1, comme nous le ferons dans ce guide, seules les adresses IP.

À moins que vous n'ayez besoin de noms d'hôte pour déterminer les autorisations, il est conseillé de désactiver cette variable (afin d'accélérer les connexions et les requêtes) en définissant sa valeur sur 1 :

skip_name_resolve=1

skip_name_resolve=0
query_cache_size représente la taille (en octets) disponible pour le cache de requêtes sur le disque, où les résultats des requêtes SELECT sont stockés pour une utilisation future lorsqu'une requête identique (pour la même base de données et utilisant le même protocole et le même jeu de caractères) est effectuée.

Vous devez choisir une taille de cache de requêtes qui correspond à vos besoins en fonction 1) du nombre de requêtes répétitives et 2) du nombre approximatif d'enregistrements que ces requêtes répétitives sont censées renvoyer. Nous allons définir cette valeur sur 100 Mo pour le moment :

query_cache_size=100M

query_cache_size=0 (ce qui signifie qu'il est désactivé par défaut)
max_connections est le nombre maximum de connexions client simultanées au serveur. Nous allons fixer cette valeur à 30 :
max_connections=30Chaque connexion utilisera un thread, et donc consommera de la mémoire. Tenez compte de ce fait lors de la définition de max_connections.
max_connections=151
thread_cache_size indique le nombre de threads que le serveur alloue pour réutilisation après qu'un client se déconnecte et libère le ou les threads précédemment utilisés. Dans cette situation, il est moins coûteux (en termes de performances) de réutiliser un thread que d'en instancier un nouveau.

Encore une fois, cela dépend du nombre de connexions que vous attendez. Nous pouvons définir cette valeur en toute sécurité sur la moitié du nombre de max_connections :

thread_cache_size=15

thread_cache_size=0 (désactivé par défaut)

Dans CentOS , nous devrons dire à SELinux pour autoriser MariaDB pour écouter sur un port non standard (20500 ) avant de redémarrer le service :

# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

Redémarrez ensuite le service MariaDB.

Régler les performances de MariaDB

Pour nous aider à vérifier et à régler la configuration selon nos besoins spécifiques, nous pouvons installer mysqltuner (un script qui fournira des suggestions pour améliorer les performances de notre serveur de base de données et augmenter sa stabilité) :

# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

Ensuite, changez de répertoire dans le dossier extrait de l'archive (la version exacte peut différer dans votre cas) :

# cd major-MySQLTuner-perl-7dabf27

et exécutez-le (vous serez invité à entrer les informations d'identification de votre compte administrateur MariaDB)

# ./mysqltuner.pl

La sortie du script est en soi très intéressante, mais passons au bas où les variables à ajuster sont répertoriées avec la valeur recommandée :

Le query_cache_type paramètre indique si le cache de requête est désactivé (0) ou activé (1) . Dans ce cas, mysqltuner nous conseille de le désactiver.

Alors pourquoi nous conseille-t-on de le désactiver maintenant ? La raison en est que le cache de requêtes est utile principalement dans les scénarios de lecture élevée/écriture faible (ce qui n'est pas notre cas, puisque nous venons d'installer le serveur de base de données).

AVERTISSEMENT :Avant d'apporter des modifications à la configuration d'un serveur de production, nous vous encourageons vivement à consulter un administrateur de base de données expert pour vous assurer qu'une recommandation donnée par mysqltuner n'aura pas d'impact négatif sur un paramètre existant.

Résumé

Dans cet article, nous avons expliqué comment configurer un serveur de base de données MariaDB après l'avoir installé et sécurisé. Les variables de configuration répertoriées dans le tableau ci-dessus ne sont que quelques paramètres que vous voudrez peut-être prendre en compte lors de la préparation du serveur en vue de son utilisation ou lors de son réglage ultérieur. Reportez-vous toujours à la documentation officielle de MariaDB avant d'apporter des modifications ou consultez nos conseils de réglage des performances de MariaDB :

Don' t Mlle : 15 astuces utiles de réglage et d'optimisation des performances de MariaDB

Comme toujours, n'hésitez pas à nous faire part de vos questions ou commentaires sur cet article. Y a-t-il d'autres paramètres de serveur que vous aimez utiliser ? N'hésitez pas à partager avec le reste de la communauté en utilisant le formulaire de commentaire ci-dessous.

Devenez un administrateur système certifié Linux