GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer et configurer MySQL Cluster sur CentOS 7

MySQL Cluster est conçu pour fournir une base de données compatible MySQL avec une haute disponibilité et une faible latence. La technologie MySQL Cluster est mise en œuvre via les moteurs de stockage NDB (Network DataBase) et NDBCLUSTER et fournit un clustering sans partage et un partitionnement automatique pour les systèmes de base de données MySQL. Dans l'architecture sans partage, chacun des nœuds a sa propre mémoire et son propre disque, l'utilisation d'un stockage partagé tel que NFS, SAN n'est pas recommandée et prise en charge.

Pour implémenter un cluster MySQL, nous devons installer trois types de nœuds. Chaque type de nœud sera installé sur son propre serveur. Les composants sont :

1. Nœud de gestion - NDB_MGMD/MGM
    Le serveur de gestion de cluster est utilisé pour gérer l'autre nœud du cluster. Nous pouvons créer et configurer de nouveaux nœuds, redémarrer, supprimer ou sauvegarder des nœuds sur le cluster à partir du nœud de gestion.

2. Nœuds de données - NDBD/NDB
    Il s'agit de la couche où se déroule le processus de synchronisation et de réplication des données entre les nœuds.

3. Nœuds SQL - MySQLD/API
    Les serveurs d'interface utilisés par les applications pour se connecter au cluster de bases de données.

Dans ce tutoriel, je vais vous guider à travers l'installation et la configuration d'un cluster MySQL avec centOS 7. Nous allons configurer le nœud de gestion, deux nœuds de données et deux nœuds SQL.

Prérequis

  • Le système d'exploitation est CentOS 7 - 64 bits.
  • 5 serveurs ou machines virtuelles CentOS. J'utiliserai les noms d'hôte et les adresses IP comme indiqué ci-dessous :
    • Nœud de gestion
      db1 =192.168.1.120
    • Nœuds de données
      db2 =192.168.1.121
      db3 =192.168.1.122
    • Nœuds SQL
      db4 =192.168.1.123
      db5 =192.168.1.124

Étape 1 - Configurer le nœud de gestion

La première étape consiste à créer le "Management Node" avec CentOS 7 db1 et IP 192.168.1.120 . Assurez-vous d'être connecté au serveur db1 en tant qu'utilisateur root.

A. Téléchargez le logiciel MySQL Cluster

Je vais le télécharger depuis le site MySQL avec wget. J'utilise le "Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle" ici qui est compatible avec CentOS 7. Ensuite, extrayez le fichier tar.

cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Installer et supprimer des packages

Avant d'installer le package rpm pour MySQL Cluster, vous devez installer perl-Data-Dumper requis par le serveur MySQL-Cluster. Et vous devez supprimer mariadb-libs avant de pouvoir installer MySQL Cluster.

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Installer le cluster MySQL

Installez le package MySQL Cluster avec ces commandes rpm :

cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

Assurez-vous qu'il n'y a pas d'erreur.

D. Configurer le cluster MySQL

Créez un nouveau répertoire pour les fichiers de configuration. Je vais utiliser le répertoire "/var/lib/mysql-cluster".

mkdir -p /var/lib/mysql-cluster

Créez ensuite un nouveau fichier de configuration pour la gestion du cluster nommé "config.ini " dans le répertoire mysql-cluster.

cd /var/lib/mysql-cluster
vi config.ini

Collez la configuration ci-dessous :

[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
 
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
 
[ndbd default]
NoOfReplicas=2      # Number of replicas
DataMemory=256M     # Memory allocate for data storage
IndexMemory=128M    # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
 
[ndbd]
#Data Node db2
HostName=192.168.1.121
 
[ndbd]
#Data Node db3
HostName=192.168.1.122
 
[mysqld]
#SQL Node db4
HostName=192.168.1.123
 
[mysqld]
#SQL Node db5
HostName=192.168.1.124

Enregistrez le fichier et quittez.

E. Démarrer le nœud de gestion

Démarrez ensuite le nœud de gestion avec la commande ci-dessous :

ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini

Le résultat devrait ressembler à ceci :

MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO     -- Successfully created config directory

Le nœud de gestion est démarré, vous pouvez maintenant utiliser la commande "ndb_mgm" pour surveiller le nœud :

ndb_mgm
show

Vous pouvez voir que le nœud de gestion a été démarré avec :mysql-6.6 et ndb-7.4.

Étape 2 - Configurer les nœuds de données du cluster MySQL

Nous utiliserons 2 serveurs CentOS pour les nœuds de données.

  1. db2 =192.168.1.121
  2. db3 =192.168.1.122

A. Connectez-vous en tant qu'utilisateur root et téléchargez le logiciel MySQL Cluster

Connectez-vous au serveur db2 avec ssh :

ssh [email protected]

Téléchargez ensuite le package MySQL Cluster et extrayez-le :

cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Installer et supprimer des packages

Installez perl-Data-Dumper et supprimez les mariadb-libs :

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Installer le cluster MySQL

Nous pouvons maintenant installer les packages MySQL Cluster pour les nœuds de données avec ces commandes rpm :

cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

Assurez-vous qu'il n'y a pas d'erreur.

D. Configurer le nœud de données

Créez un nouveau fichier de configuration dans le répertoire /etc avec l'éditeur vi :

vi /etc/my.cnf

Collez la configuration ci-dessous :

[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120     # IP address of Management Node
 
[mysql_cluster]
ndb-connectstring=192.168.1.120     # IP address of Management Node

Enregistrez le fichier et quittez.

Créez ensuite le nouveau répertoire pour les données de la base de données que nous avons défini dans le fichier de configuration du nœud de gestion "config.ini".

mkdir -p /var/lib/mysql-cluster

Démarrez maintenant le nœud de données/ndbd :

ndbd

résultats :

2016-03-22 19:35:56 [ndbd] INFO     -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO     -- Angel allocated nodeid: 2

Nœud de données db2 connecté au nœud de gestion IP 192.168.1.120.

E. Répétez l'étape 2.A - 2.D sur le serveur db3.

Comme nous avons 2 nœuds de données, veuillez refaire les étapes 2.A - 2.D sur notre deuxième nœud de données.

Étape 3 - Configurer le nœud SQL

Cette étape contient la configuration du nœud SQL qui fournit à l'application l'accès à la base de données. Nous utilisons 2 serveurs CentOS pour les nœuds SQL :

  1. db4 =192.168.1.123
  2. db5 =192.168.1.124

A. Connectez-vous et téléchargez MySQL Cluster

Connectez-vous au serveur db4 en tant qu'utilisateur root :

ssh [email protected]

Et téléchargez le package MySQL Cluster :

cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Installer et supprimer des packages

Installez perl-Data-Dumper et supprimez les mariadb-libs qui entrent en conflit avec MySQL Cluster.

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Installer le cluster MySQL

Installez le serveur, le client et le package partagé MySQL Cluster avec les commandes rpm ci-dessous :

cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

D. Configurer le nœud SQL

Créez un nouveau fichier my.cnf dans le répertoire /etc :

vi /etc/my.cnf

Et collez la configuration ci-dessous :

[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120       # IP address for server management node
default_storage_engine=ndbcluster     # Define default Storage Engine used by MySQL
 
[mysql_cluster]
ndb-connectstring=192.168.1.120       # IP address for server management node

Enregistrez le fichier et quittez l'éditeur.

Démarrez le nœud SQL en démarrant le serveur MySQL :

service mysql start

E. Répétez l'étape 3.A - 3.D sur le serveur db5.

Veuillez refaire les étapes 3.A - 3.D sur le deuxième serveur SQL (db5).

Étape 4 - Surveiller le cluster

Pour voir l'état du cluster, nous devons nous connecter au nœud de gestion db1.

ssh [email protected]

Nous pouvons utiliser la commande ndb_mgm pour voir l'état du cluster :

ndb_mgm
ndb_mgm> show

Une autre commande utile est :

ndb_mgm -e "all status"
ndb_mgm -e "all report memory"

Étape 5 - Tester le cluster

Pour effectuer un test sur notre nouveau cluster MySQL, nous devons nous connecter aux serveurs SQL Nodes db4 ou db5.

Connectez-vous au serveur db4 :

ssh [email protected]

Modifiez le mot de passe MySQL par défaut stocké dans ".mysql_secret " fichier dans le répertoire racine :

cd ~
cat .mysql_secret

ceci est mon exemple :

# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T

Changez maintenant le mot de passe avec la commande ci-dessous :

mysql_secure_installation

Saisissez votre ancien mot de passe mysql, puis saisissez le nouveau, appuyez sur Entrée pour tout confirmer.

Si tout est fait, vous pouvez vous connecter au shell MySQL avec votre mot de passe :

mysql -u root -p

Après vous être connecté, créez un nouvel utilisateur root avec l'hôte "@ ", nous pourrons donc accéder à MySQL de l'extérieur.

CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';

Remplacez aqwe123 avec votre propre mot de passe sécurisé ! Vous pouvez maintenant voir le nouvel utilisateur root avec l'hôte "@" dans la liste des utilisateurs MySQL :

select user, host, password from mysql.user;

Et accordez au nouvel utilisateur root un accès en lecture et en écriture depuis le nœud distant :

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;

Essayez maintenant de créer une nouvelle base de données à partir du serveur db4 et vous verrez également la base de données sur db5.

Ceci n'est qu'un exemple de résultat pour tester la réplication des données du cluster.

Le cluster MySQL a été configuré avec succès sur CentOS 7 avec 5 nœuds de serveur.

Conclusion

MySQL Cluster est une technologie qui fournit une haute disponibilité et une redondance pour les bases de données MySQL. Il utilise NDB ou NDBCLUSTER comme moteur de stockage et fournit un clustering sans partage et un partitionnement automatique pour les bases de données MySQL. Pour implémenter le cluster, nous avons besoin de 3 composants :Management Node (MGM), Data Nodes (NDB) et SQL Nodes (API). Chaque nœud doit avoir sa propre mémoire et son propre disque. Il n'est pas recommandé d'utiliser un stockage réseau tel que NFS. Pour installer MySQL Cluster sur un système minimal CentOS 7, nous devons supprimer le package mariadb-libs, mariadb-libs est en conflit avec MySQL-Cluster-server et vous devez installer le package perl-Data-Dumper, nécessaire à MySQL-Cluster -serveur. Un cluster MySQL est facile à installer et à configurer sur plusieurs serveurs CentOS.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer Node.js et NPM sur CentOS 7

  3. Comment installer et configurer Redis sur CentOS 7

  4. Comment installer et configurer GitLab sur CentOS 7

  5. Comment installer Node.js et NPM sur CentOS

Comment installer et configurer un cluster Docker Swarm sur CentOS 8

Comment installer et configurer Nagios 4.0.7 sur CentOS 7

Comment installer et configurer ISPConfig CP sur CentOS 7

Comment installer et configurer ownCloud sur CentOS 7

Comment installer et configurer Samba sur CentOS 8

Comment installer et configurer Fail2ban sur CentOS 8