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

Installation hors ligne du cluster MariaDB pour CentOS

La plupart des étapes d'installation disponibles sur Internet couvrent l'installation en ligne standard, en supposant que les hôtes de la base de données disposent d'une connexion Internet active aux référentiels de packages et satisfont à toutes les dépendances. Cependant, les étapes et les commandes d'installation sont un peu différentes pour l'installation hors ligne. L'installation hors ligne est une pratique courante dans un environnement strict et sécurisé comme les secteurs financier et militaire pour la conformité de la sécurité, la réduction des risques d'exposition et le maintien de la confidentialité.

Dans cet article de blog, nous allons installer un cluster MariaDB à trois nœuds dans un environnement hors ligne sur des hôtes CentOS. Considérez les trois nœuds suivants pour cette installation :

  • mariadb1 - 192.168.0.241
  • mariadb2 - 192.168.0.242
  • mariadb3 - 192.168.0.243

Télécharger des packages

La partie la plus fastidieuse consiste à obtenir tous les packages nécessaires à notre installation. Tout d'abord, accédez au référentiel MariaDB respectif que nous souhaitons installer (dans cet exemple, notre système d'exploitation est CentOS 7 64 bits) :

  • MariaDB 10.4 :http://yum.mariadb.org/10.4/centos7-amd64/rpms/ 
  • MariaDB 10.3 :http://yum.mariadb.org/10.3/centos7-amd64/rpms/
  • MariaDB 10.2 :http://yum.mariadb.org/10.2/centos7-amd64/rpms/
  • MariaDB 10.1 :http://yum.mariadb.org/10.1/centos7-amd64/rpms/ 
  • MariaDB 10.0 :http://yum.mariadb.org/10.0/centos7-amd64/rpms/

Assurez-vous de télécharger exactement la même version mineure pour tous les packages liés à MariaDB. Dans cet exemple, nous avons téléchargé MariaDB version 10.4.13. Il existe un tas de packages dans ce référentiel, mais nous n'en avons pas tous besoin uniquement pour exécuter un cluster MariaDB. Certains des packages sont obsolètes et à des fins de débogage. Pour MariaDB Galera 10.4 et CentOS 7, nous devons télécharger les packages suivants à partir du référentiel MariaDB 10.4 :

  • jemalloc
  • galera-3/galera-4
  • libzstd
  • Sauvegarde MariaDB
  • Serveur MariaDB
  • Client MariaDB
  • MariaDB partagé
  • MariaDB commun
  • Compatibilité MariaDB

Les commandes wget suivantes simplifieraient le processus de téléchargement :

wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Certains de ces packages ont des dépendances avec d'autres packages. Pour les satisfaire tous, il est probablement préférable de monter l'image ISO du système d'exploitation et de faire en sorte que le gestionnaire de packages yum utilise l'image ISO comme référentiel de base hors ligne à la place. Sinon, nous perdrions beaucoup de temps à essayer de télécharger/transférer les packages d'un hôte/média à un autre.

Si vous recherchez des packages MariaDB plus anciens, recherchez-les dans son référentiel d'archives ici. Une fois téléchargés, transférez les packages dans tous les serveurs de base de données via une clé USB, un graveur de DVD ou tout stockage réseau connecté aux hôtes de base de données.

Monter l'image ISO localement

Certaines des dépendances doivent être satisfaites lors de l'installation et une façon d'y parvenir facilement consiste à configurer le référentiel yum hors ligne sur les serveurs de base de données. Tout d'abord, nous devons télécharger l'image ISO du DVD CentOS 7 à partir du site miroir CentOS le plus proche, sous le répertoire "isos":

$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

Vous pouvez soit transférer l'image et la monter directement, soit la graver sur un DVD et utiliser le lecteur de DVD et le connecter au serveur. Dans cet exemple, nous allons monter l'image ISO sous forme de DVD sur le serveur :

$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

Ensuite, activez le référentiel CentOS-Media (c7-media) et désactivez les référentiels en ligne standard (base, mises à jour, extras) :

$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media

Nous sommes maintenant prêts pour l'installation.

Installer et configurer le serveur MariaDB

Les étapes d'installation sont assez simples si nous avons tous les packages nécessaires prêts. Tout d'abord, il est recommandé de désactiver SElinux (ou de le mettre en mode permissif) :

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Naviguez jusqu'au répertoire où se trouvent tous les packages, dans ce cas, /root/installer/. Assurez-vous que tous les packages sont là :

$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Installons d'abord la dépendance mariabackup appelée socat, puis exécutons la commande yum localinstall pour installer les packages RPM et satisfaire toutes les dépendances :

$ yum install socat
$ yum localinstall *.rpm

Démarrez le service MariaDB et vérifiez l'état :

$ systemctl start mariadb
$ systemctl status mariadb

Assurez-vous de ne voir aucune erreur dans le processus. Ensuite, exécutez le script mysql_secure_installation pour configurer le mot de passe root et le renforcement de MySQL :

$ mysql_secure_installation

Assurez-vous que le mot de passe root MariaDB est identique sur tous les hôtes MariaDB. Créez un utilisateur MariaDB pour effectuer la sauvegarde et SST. Ceci est important si nous voulons utiliser la sauvegarde maria recommandée comme méthode SST pour le cluster MariaDB, et également à des fins de sauvegarde :

$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];

Nous devons modifier le fichier de configuration par défaut pour charger les fonctionnalités de MariaDB Cluster. Ouvrez /etc/my.cnf.d/server.cnf et assurez-vous que les lignes suivantes existent pour une configuration minimale :

[mysqld]
log_error = /var/log/mysqld.log

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this

N'oubliez pas de modifier la valeur wsrep_node_address avec l'adresse IP du nœud de base de données pour la communication MariaDB Cluster. De plus, la valeur wsrep_provider peut être différente selon le serveur MariaDB et la version du cluster MariaDB que vous avez installés. Localisez le chemin libgalera_smm.so et spécifiez-le en conséquence ici.

Répétez les mêmes étapes sur tous les nœuds de la base de données et nous sommes maintenant prêts à démarrer notre cluster.

Amorcer le cluster

Puisqu'il s'agit d'un nouveau cluster, nous pouvons choisir n'importe lequel des nœuds MariaDB pour devenir le nœud de référence pour le processus d'amorçage du cluster. Prenons mariadb1. Assurez-vous que MariaDB est d'abord arrêté, puis exécutez la commande galera_new_cluster pour démarrer :

$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb

Sur les deux autres nœuds (mariadb2 et mariadb3), nous allons le démarrer à l'aide de la commande de démarrage standard de MariaDB :

$ systemctl stop mariadb
$ systemctl start mariadb

Vérifiez si tous les nœuds font partie du cluster en examinant l'état lié à wsrep sur chaque nœud :

MariaDB> SHOW STATUS LIKE 'wsrep%';

Assurez-vous que l'état signalé est le suivant :

wsrep_local_state_comment     | Synced
wsrep_cluster_size            | 3
wsrep_cluster_status          | Primary

Pour MariaDB 10.4 et Galera Cluster 4, nous pouvons obtenir les informations sur les membres du cluster directement à partir de la table mysql.wsrep_cluster_members sur n'importe quel nœud MariaDB :

$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid                            | cluster_uuid                         | node_name     | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local  | AUTO                  |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local  | AUTO                  |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local  | AUTO                  |
+--------------------------------------+--------------------------------------+---------------+-----------------------+

Si quelque chose ne va pas pendant l'amorçage du cluster, consultez le journal des erreurs MySQL dans /var/log/mysqld.log sur tous les nœuds MariaDB. Une fois qu'un cluster est démarré et en cours d'exécution, n'exécutez plus le script galera_new_cluster pour démarrer un service MariaDB. Cela devrait suffire en utilisant la commande standard "systemctl start/restart mariadb", à moins qu'il n'y ait plus de nœud de base de données dans l'état PRIMARY. Consultez cet article de blog, Comment amorcer MySQL ou MariaDB Cluster pour comprendre pourquoi cette étape est essentielle.

Étape bonus

Maintenant, vous avez déjà un cluster de bases de données en cours d'exécution sans aucune fonctionnalité de surveillance et de gestion. Pourquoi n'importez-vous pas le cluster de bases de données dans ClusterControl ? Installez ClusterControl sur un autre serveur distinct et configurez SSH sans mot de passe depuis le serveur ClusterControl vers tous les nœuds de la base de données. Supposons que l'adresse IP du serveur ClusterControl soit 192.168.0.240, exécutez les commandes suivantes sur le serveur ClusterControl :

$ whoami
root

$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243

Ensuite, allez dans ClusterControl -> Importer -> MySQL Galera et entrez les détails SSH requis :

Dans la deuxième étape sous Définir les serveurs MySQL, désactivez "Découverte automatique des nœuds " et spécifiez toutes les adresses IP des nœuds de la base de données, et assurez-vous qu'il y a une coche verte à côté de l'adresse IP, indiquant que ClusterControl est capable d'atteindre le nœud via SSH sans mot de passe :

Cliquez sur Importer et attendez que la tâche d'importation se termine. Vous devriez le voir sous la liste des clusters :

Vous êtes maintenant entre de bonnes mains. Notez que ClusterControl utilisera par défaut les fonctionnalités d'entreprise complètes de 30 jours et après son expiration, il reviendra par défaut à Community Edition, qui est gratuite pour toujours.