GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer un cluster MySQL 8 à trois nœuds sur Debian 10

MySQL est un système de gestion de base de données libre, open-source et relationnel. Il est utilisé pour stocker des données à diverses fins, notamment l'entreposage de données, le commerce électronique et les applications de journalisation. MySQL Cluster est une technologie qui offre évolutivité et disponibilité à faible coût.

Dans ce didacticiel, nous utiliserons un nœud maître pour stocker la configuration du cluster et deux nœuds de données pour stocker les données du cluster. L'adresse IP de chaque nœud est indiquée ci-dessous :

  • Nœud maître ou gestionnaire - 104.245.33.61
  • Nœud de données 1 - 104.245.32.195
  • Nœud de données 2 : 69.87.218.169

Prérequis

  • Trois serveurs exécutant Debian 10, l'un pour le nœud gestionnaire et les autres pour les nœuds de données.
  • Un mot de passe root est configuré sur chaque serveur.

Mise en route

Tout d'abord, vous devrez mettre à jour tous les serveurs vers la dernière version. Vous pouvez tout mettre à jour avec la commande suivante :

apt-get update -y

Une fois tous les serveurs mis à jour, vous pouvez passer à l'étape suivante.

Installer et configurer MySQL Cluster Manager

Tout d'abord, vous devrez installer le package de gestion de cluster MySQL sur le nœud maître. Par défaut, ce paquet n'est pas inclus dans le référentiel par défaut de Debian 10. Vous devrez donc le télécharger depuis le site officiel de MySQL.

Vous pouvez le télécharger avec la commande suivante :

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

Après avoir téléchargé le fichier deb, installez-le à l'aide de la commande suivante :

dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb

Une fois l'installation terminée, créez un répertoire pour stocker la configuration du cluster avec la commande suivante :

mkdir /var/lib/mysql-cluster

Créez ensuite un nouveau fichier de configuration avec la commande suivante :

nano /var/lib/mysql-cluster/config.ini

Ajoutez les lignes suivantes :

[ndbd default]
NoOfReplicas=2  # Number of replicas

[ndb_mgmd]
# Management process options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=104.245.32.195 #IP of the first data node
NodeId=2            # Node ID for this data node
datadir=/usr/local/mysql/data   # Remote directory for the data files
[ndbd]
hostname=69.87.218.169 #IP of the second data node
NodeId=3            # Node ID for this data node
datadir=/usr/local/mysql/data   # Remote directory for the data files
[mysqld]
# SQL node options:
hostname=104.245.33.61 #IP of the MySQL Cluster Manager

Enregistrez et fermez le fichier lorsque vous avez terminé puis démarrez le gestionnaire de cluster avec la commande suivante :

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

Vous devriez obtenir le résultat suivant :

MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2021-05-10 08:23:05 [MgmtSrvr] INFO     -- Sucessfully created config directory

Maintenant, tuez le serveur en cours d'exécution avec la commande suivante :

pkill -f ndb_mgmd

Ensuite, créez un fichier de service systemd pour MySQL Cluster Manager afin de gérer le service :

nano /etc/systemd/system/ndb_mgmd.service

Ajoutez les lignes suivantes :

[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier puis rechargez le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarrez le gestionnaire de cluster et activez-le pour qu'il démarre au redémarrage du système avec la commande suivante :

systemctl start ndb_mgmd
systemctl enable ndb_mgmd

Vous pouvez maintenant vérifier l'état du service avec la commande suivante :

systemctl status ndb_mgmd

Vous devriez obtenir le résultat suivant :

    ? ndb_mgmd.service - MySQL NDB Cluster Management Server
   Loaded: loaded (/etc/systemd/system/ndb_mgmd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:23:53 UTC; 6s ago
  Process: 984 ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini (code=exited, status=0/SUCCESS)
 Main PID: 985 (ndb_mgmd)
    Tasks: 12 (limit: 2359)
   Memory: 6.5M
   CGroup: /system.slice/ndb_mgmd.service
           ??985 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

May 10 08:23:53 master systemd[1]: Starting MySQL NDB Cluster Management Server...
May 10 08:23:53 master ndb_mgmd[984]: MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.24
May 10 08:23:53 master systemd[1]: Started MySQL NDB Cluster Management Server.

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Installer et configurer des nœuds de données

Ensuite, nous allons packager le nœud de données sur d'autres serveurs et le configurer pour communiquer avec MySQL Cluster Manager.

Tout d'abord, installez les dépendances requises sur les deux nœuds de données avec la commande suivante :

apt-get install libclass-methodmaker-perl -y

Une fois toutes les dépendances installées, téléchargez la dernière version du fichier deb MySQL Data Nodes avec la commande suivante :

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

Une fois le téléchargement terminé, installez le fichier téléchargé avec la commande suivante :

dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb

Par défaut, les nœuds de données stockent toutes les configurations dans le fichier /etc/my.cnf.

Créez donc un nouveau fichier /etc/my.cnf sur les deux nœuds de données avec la commande suivante :

nano /etc/my.cnf

Ajoutez l'adresse IP du cluster comme indiqué ci-dessous :

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61 #IP of the MySQL Cluster Manager

Enregistrez et fermez le fichier puis créez un répertoire de données sur les deux nœuds de données :

mkdir -p /usr/local/mysql/data

Maintenant, démarrez les nœuds de données avec la commande suivante :

ndbd

Vous devriez obtenir le résultat suivant :

2021-05-10 08:27:13 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
2021-05-10 08:27:13 [ndbd] INFO     -- Angel allocated nodeid: 2

Ensuite, tuez le processus ndbd en cours d'exécution avec la commande suivante :

pkill -f ndbd

Ensuite, créez un fichier de service systemd pour ndbd sur les deux nœuds de données avec la commande suivante :

nano /etc/systemd/system/ndbd.service

Ajoutez les lignes suivantes :

[Unit]
Description=MySQL NDB Data Node Daemon
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier puis rechargez le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarrez le service ndbd et faites-le démarrer au redémarrage du système avec la commande suivante :

systemctl start ndbd
systemctl enable ndbd

Vous pouvez également vérifier l'état du service ndbd à l'aide de la commande suivante :

systemctl status ndbd

Vous devriez obtenir le résultat suivant :

? ndbd.service - MySQL NDB Data Node Daemon
   Loaded: loaded (/etc/systemd/system/ndbd.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:28:28 UTC; 12s ago
  Process: 740 ExecStart=/usr/sbin/ndbd (code=exited, status=0/SUCCESS)
 Main PID: 741 (ndbd)
    Tasks: 46 (limit: 2359)
   Memory: 827.1M
   CGroup: /system.slice/ndbd.service
           ??741 /usr/sbin/ndbd
           ??742 /usr/sbin/ndbd

May 10 08:28:28 data1 systemd[1]: Starting MySQL NDB Data Node Daemon...
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel connected to '104.245.33.61:1186'
May 10 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] INFO     -- Angel allocated nodeid: 2
May 10 08:28:28 data1 systemd[1]: Started MySQL NDB Data Node Daemon.

Installer et configurer le serveur MySQL

Ensuite, nous allons télécharger et installer les packages MySQL Server et Client sur le nœud MySQL Cluster Manager.

Tout d'abord, téléchargez la dernière version de MySQL Cluster Bundle à l'aide de la commande suivante :

wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar

Ensuite, extrayez le fichier téléchargé dans le répertoire /opt avec la commande suivante :

tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt

Ensuite, changez le répertoire en /opt et installez les dépendances requises avec la commande suivante :

cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y

Ensuite, installez le fichier MySQL Common deb avec la commande suivante :

dpkg -i mysql-common*

Ensuite, installez les packages MySQL Client avec la commande suivante :

dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*

Si vous obtenez une erreur de dépendance, exécutez la commande suivante :

apt-get install -f

Ensuite, installez le package MySQL Server avec la commande suivante :

dpkg -i mysql-server_8.0.24-1debian10_amd64.deb

Lors de l'installation, vous serez invité à définir un mot de passe root MySQL.

Après avoir installé le serveur MySQL, vous devrez modifier le fichier de configuration principal de MySQL et définir l'IP du cluster :

nano /etc/mysql/my.cnf

Ajoutez les lignes suivantes :

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=104.245.33.61  #IP of the MySQL Cluster Manager

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service MySQL et activez-le pour qu'il démarre au redémarrage du système :

systemctl restart mysql
systemctl enable mysql

Vous pouvez vérifier l'état du serveur MySQL avec la commande suivante :

systemctl status mysql

Vous devriez voir le résultat suivant :

? mysql.service - MySQL Cluster Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-10 08:35:04 UTC; 7s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1950 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1985 (mysqld)
   Status: "Server is operational"
    Tasks: 47 (limit: 2359)
   Memory: 372.0M
   CGroup: /system.slice/mysql.service
           ??1985 /usr/sbin/mysqld

May 10 08:35:01 master systemd[1]: Starting MySQL Cluster Community Server...
May 10 08:35:04 master systemd[1]: Started MySQL Cluster Community Server.

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Tester le cluster MySQL

Maintenant, nous avons installé et configuré avec succès le cluster MySQL à trois nœuds. Ensuite, vous devrez vérifier si cela fonctionne ou non.

Tout d'abord, connectez-vous au nœud MySQL Cluster Manager et connectez-vous à MySQL avec la commande suivante :

mysql -u root -p

Fournissez votre mot de passe root MySQL puis vérifiez les informations du cluster avec la commande suivante :

mysql> SHOW ENGINE NDB STATUS \G

Si tout va bien, vous devriez obtenir le résultat suivant :

*************************** 1. row ***************************
  Type: ndbclus
  Name: connection
Status: cluster_node_id=4, connected_host=104.245.33.61, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0
*************************** 2. row ***************************
  Type: ndbclus
  Name: NdbTransaction
Status: created=2, free=2, sizeof=392
*************************** 3. row ***************************
  Type: ndbclus
  Name: NdbOperation
Status: created=4, free=4, sizeof=944
*************************** 4. row ***************************
  Type: ndbclus
  Name: NdbIndexScanOperation
Status: created=0, free=0, sizeof=1152
*************************** 5. row ***************************
  Type: ndbclus
  Name: NdbIndexOperation
Status: created=0, free=0, sizeof=952
*************************** 6. row ***************************
  Type: ndbclus
  Name: NdbRecAttr
Status: created=0, free=0, sizeof=88
*************************** 7. row ***************************
  Type: ndbclus
  Name: NdbApiSignal
Status: created=16, free=16, sizeof=144
*************************** 8. row ***************************
  Type: ndbclus
  Name: NdbLabel
Status: created=0, free=0, sizeof=200
*************************** 9. row ***************************
  Type: ndbclus
  Name: NdbBranch
Status: created=0, free=0, sizeof=32
*************************** 10. row ***************************
  Type: ndbclus
  Name: NdbSubroutine
Status: created=0, free=0, sizeof=72
*************************** 11. row ***************************
  Type: ndbclus
  Name: NdbCall
Status: created=0, free=0, sizeof=24
*************************** 12. row ***************************
  Type: ndbclus
  Name: NdbBlob
Status: created=0, free=0, sizeof=592
*************************** 13. row ***************************
  Type: ndbclus
  Name: NdbReceiver
Status: created=0, free=0, sizeof=128
*************************** 14. row ***************************
  Type: ndbclus
  Name: NdbLockHandle
Status: created=0, free=0, sizeof=48
*************************** 15. row ***************************
  Type: ndbclus
  Name: binlog
Status: latest_epoch=897648164875, latest_trans_epoch=820338753551, latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, latest_applied_binlog_epoch=0
15 rows in set (0.00 sec)

Maintenant, quittez le shell MySQL avec la commande suivante :

mysql> exit

Nous allons maintenant effectuer un autre test pour confirmer que le cluster fonctionne correctement.

Connectez la console de gestion du cluster avec la commande suivante :

ndb_mgm

Vous devriez voir le résultat suivant :

-- NDB Cluster -- Management Client --
ndb_mgm>

Maintenant, exécutez la commande suivante pour vérifier tous les nœuds de données :

ndb_mgm> SHOW

Vous devriez obtenir le résultat suivant :

Connected to Management Server at: 104.245.33.61:1186
Cluster Configuration
---------------------
[ndbd(NDB)]	2 node(s)
id=2	@104.245.32.195  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0, *)
id=3	@69.87.218.169  (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0)

[ndb_mgmd(MGM)]	1 node(s)
id=1	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

[mysqld(API)]	1 node(s)
id=4	@104.245.33.61  (mysql-8.0.24 ndb-8.0.24)

Pour vérifier l'état du premier nœud de données, exécutez la commande suivante :

ndb_mgm> 2 STATUS

Vous devriez voir le résultat suivant :

Node 2: started (mysql-8.0.24 ndb-8.0.24)

Pour vérifier l'état du deuxième nœud de données, exécutez la commande suivante :

ndb_mgm> 3 STATUS

Vous devriez voir le résultat suivant :

Node 3: started (mysql-8.0.24 ndb-8.0.24)

Conclusion

Toutes nos félicitations! vous avez installé et configuré avec succès un cluster MySQL à trois nœuds sur le serveur Debian 10. Vous pouvez désormais utiliser cette configuration dans l'environnement de production pour obtenir évolutivité et disponibilité.


Debian
  1. Comment configurer vsftpd sur Debian

  2. Comment installer Percona XtraDB Cluster pour MySQL sur Debian 8

  3. Comment installer osquery sur Debian 10

  4. Comment configurer le serveur Rsyslog sur Debian 11

  5. Comment installer MySQL sur Debian 11

Comment installer MySQL 8 sur Debian 10

Comment installer Node.js sur Debian 8

Comment installer Node.js sur Debian 9

Comment installer Node.js sur Debian 10

Comment installer Node.js sur Debian 11

Comment installer Node.js sur Debian