Cet article a pour objectif de vous présenter comment installer et configurer un cluster MySQL basé sur 2 serveurs. Et sachez que MySQL peut toujours continuer à fonctionner lorsqu'un serveur rencontre des problèmes ou est en panne.
Avis! Bien qu'il s'agisse d'un cluster MySQL basé sur 2 serveurs, il doit y avoir un troisième serveur supplémentaire comme nœud de gestion, mais ce serveur peut être arrêté une fois le démarrage du cluster terminé. Dans le même temps, il convient de noter qu'il n'est pas recommandé d'arrêter le serveur qui sert de nœud de gestion une fois le démarrage du cluster terminé. Bien qu'il soit théoriquement possible de construire un cluster MySQL basé sur seulement deux serveurs, avec une telle architecture, une fois qu'un serveur tombe en panne, le cluster ne peut plus continuer à fonctionner normalement, perdant ainsi son sens. Pour cette raison, un troisième serveur est requis pour fonctionner en tant que nœud de gestion. De plus, de nombreux amis peuvent ne pas disposer d'un environnement réel composé de trois serveurs, ils peuvent donc envisager de mener des expériences sur VMWare ou d'autres machines virtuelles.
Ce qui suit suppose la situation de ces trois services :
Serveur1 : mysql1.vmtest.net 192.168.0.1
Serveur2 : mysql2.vmtest.net 192.168.0.2
Serveur3 : mysql3.vmtest.net 192.168.0.3
Servers1 et Server2 servent de serveurs qui configurent réellement le cluster MySQL. Les exigences pour Server3 en tant que nœud de gestion sont inférieures. Seuls de petits ajustements sont nécessaires au système Server3 et il n'est pas nécessaire d'installer MySQL. Server3 peut utiliser un ordinateur avec une configuration inférieure et peut exécuter d'autres services sur Server3 en même temps. 2. Installez MySQL sur Server1 et Server2
=================================De [url]/u/info_img/2009-05/30/url] Téléchargez mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz Remarque : Il doit s'agir de la version maximale de MySQL. La version Standard ne prend pas en charge le déploiement de cluster ! Les étapes suivantes doivent être effectuées une fois sur Server1 et Server2.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# ajout de groupe mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R racine .
# chown -R données mysql
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld Ne démarrez pas MySQL pour le moment !
Installer et configurer le serveur de nœud de gestion (Serveur3)
===================================== En tant que serveur de nœud de gestion, Server3 nécessite deux fichiers : ndb_mgm et ndb_mgmd : Téléchargez mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz depuis [url]/u/info_img/2009-05/30/url]
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
#CD
# rm -rf /usr/src/mysql-mgm Commencez maintenant à créer le fichier de configuration pour ce serveur de nœud de gestion :
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini Ajoutez le contenu suivant à config.ini :
[NDBD PAR DÉFAUT]
NoOfReplicas=2
[VALEUR MYSQLD PAR DÉFAUT]
[NDB_MGMD PAR DÉFAUT]
[TCP PAR DÉFAUT]
#Serveur de Gestion
[NDB_MGMD]
HostName=192.168.0.3 #L'adresse IP du serveur du nœud de gestion Server3
# Moteurs de stockage
[NDBD]
HostName=192.168.0.1 #L'adresse IP du cluster MySQL Server1
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #L'adresse IP du cluster MySQL Server2
DataDir=/var/lib/mysql-cluster
# Les deux [MYSQLD] suivants peuvent remplir les noms d'hôte de Server1 et Server2.
# Cependant, afin de remplacer plus rapidement le serveur dans le cluster, il est recommandé de le laisser vide, sinon cette configuration devra être modifiée après le remplacement du serveur.
[MYSQLD]
[MYSQLD] Après avoir enregistré et quitté, démarrez le serveur du nœud de gestion Server3 :
# Après avoir démarré le nœud de gestion avec ndb_mgmd, vous devez noter qu'il s'agit uniquement du service du nœud de gestion, pas du terminal de gestion. Par conséquent, vous ne verrez aucune information de sortie sur le démarrage. 4. Configurez le serveur de cluster et démarrez MySQL
============================= Les modifications suivantes doivent être apportées à la fois sur Server1 et Server2 :
# vi /etc/my.cnf
[mysqld]
cluster ndb
ndb-connectstring=192.168.0.3 Adresse IP du #Server3
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Après avoir enregistré l'adresse IP du serveur 3 et quitté, créez un répertoire de données et démarrez MySQL :
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial
# /etc/rc.d/init.d/mysqld start Vous pouvez ajouter /usr/local/mysql/bin/ndbd à /etc/rc.local pour démarrer. Remarque : Vous devez uniquement utiliser le paramètre --initial lors du premier démarrage de ndbd ou après avoir modifié le fichier config.ini de Server3 ! 5. Vérifiez l'état de fonctionnement
================ Retournez au serveur du nœud de gestion Server3 et démarrez le terminal de gestion :
# /usr/bin/ndb_mgm Tapez la commande show pour afficher l'état de fonctionnement actuel : (Ce qui suit est un exemple de sortie d'état)
[root@mysql3 root]# /usr/bin/ndb_mgm
-- Cluster NDB -- Client de gestion --
ndb_mgm> afficher
Connecté au serveur de gestion à l'adresse : localhost : 1186
Configuration des clusters
--------------------------
[ndbd(NDB)] 2 nœud(s)
id=2 @192.168.0.1 (Version : 4.1.9, groupe de nœuds : 0, maître)
id=3 @192.168.0.2 (Version : 4.1.9, groupe de nœuds : 0)
[ndb_mgmd(MGM)] 1 nœud(s)
identifiant=1 @192.168.0.3 (Version : 4.1.9)
[mysqld(API)] 2 nœud(s)
identifiant=4 (Version : 4.1.9)
identifiant=5 (Version : 4.1.9)
ndb_mgm>
S'il n'y a aucun problème ci-dessus, commencez à tester MySQL maintenant : Notez que ce document ne définit pas le mot de passe root pour MySQL. Il est recommandé de définir vous-même le mot de passe root MySQL pour Server1 et Server2. Sur le serveur 1 :
# /usr/local/mysql/bin/mysql -u racine -p
> test d'usage ;
> CRÉER UNE TABLE ctest (i INT) MOTEUR=NDBCLUSTER ;
> INSÉRER DANS ctest () VALEURS (1);
> SELECT * FROM ctest; Vous devriez pouvoir voir 1 ligne d'informations renvoyées (valeur de retour 1). Si ce qui précède est normal, passez à Server2 et répétez le test ci-dessus pour observer l'effet. En cas de succès, exécutez INSERT dans Server2, puis revenez à Server1 pour voir s'il fonctionne normalement. S'il n'y a aucun problème, félicitations pour votre succès ! 6. Essais destructifs
============== Débranchez le câble réseau du serveur 1 ou du serveur 2 et observez si l'autre serveur de cluster fonctionne normalement (vous pouvez utiliser la requête SELECT pour tester). Une fois le test terminé, réinsérez le câble réseau. Si vous n'avez pas accès au serveur physique, c'est-à-dire que vous ne pouvez pas débrancher le câble réseau, vous pouvez également tester comme ceci : Sur Serveur1 ou Serveur2 :
# ps aux | grep ndbd verra toutes les informations sur le processus ndbd :
racine 5578 0,0 0,3 6220 1964 ? S 03:14 0:00 ndbd
racine 5579 0,0 20,4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd puis tuez un processus ndbd pour détruire le serveur du cluster MySQL :
# kill -9 5578 Après 5579, utilisez la requête SELECT sur un autre serveur de cluster pour tester. Et si vous exécutez la commande show dans le terminal de gestion du serveur du nœud de gestion, vous verrez l'état du serveur endommagé. Une fois le test terminé, il vous suffit de redémarrer le processus ndbd du serveur endommagé :
#ndbdAttention ! Comme mentionné précédemment, il n’est pas nécessaire d’ajouter le paramètre --initial pour le moment ! À ce stade, la configuration du cluster MySQL est terminée !