MySQL Cluster – Démarrage 4/5

Date: 17/10/2011 | Catégories: Developpement,Open-source,Planet-libre,Systeme | Tags: ,,,,

Ce billet est le premier d'une série de 5 articles sur Cluster MySQL écrite par Rémy Verger(auteur invité).

Je rappelle que ce billet est le 4em d'une série de 5 billets:

1. Introduction

2. Concepts de base de MySQL Cluster / Configuration simple-multi serveurs

3. Installation

4. Demarrage du MySQL Cluster

5. Commande d’administration

---

Démarrage du Cluster

Démarrer le cluster n'est pas très difficile une fois qu'il a été configuré. Chaque noeud doit être lancé séparément, et depuis l'hôte sur lequel il réside. Même s'il est possible de lancer les noeuds dans n'importe quel ordre, il est recommandé de lancer le serveur d'administration en premier, puis les noeuds de stockage et enfin, les noeuds SQL.

Sur l'hôte de gestion, utilisez la commande suivante depuis le Shell pour lancer le processus de gestion :

[cce]

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

[/cce]

Notez que ndb_mgmd doit recevoir le nom et chemin du fichier de configuration, avec l'option -f ou --config-file.

Sur chaque hôte de stockage, exécutez cette commande pour lancer les processus NDBD :

[cce]

ndbd --initial

[/cce]

Notez qu'il est très important d'utiliser le paramètre --initial uniquement lors du premier démarrage de ndbd, ou lors du redémarrage apràs une opération de restauration des données ou de modification de configuration. En effet, ce paramètre va forcer le noeud à effacer les fichiers créé par les anciennes instances de ndbd, y compris les fichiers de log.

Sur les hôtes SQL, exécutez une commande mysqld classique (sous simple utilisateur le service ne fonctionne pas si vous êtes en root ) :

[cce]

mysqld &

[/cce]

Si tout se passe bien, et que le cluster a été correctement configuré, il devrait être opérationnel à nouveau. Vous pouvez tester cela en utilisant la commande ndb_mgm, c'est à dire le client de gestion; le résultat devrait être similaire à celui-ci :

[cce]

[root@localhost ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @12.0.1.30 (mysql-5.1.56 ndb-7.1.15, Nodegroup: 0, Master)

id=4 @12.0.1.31 (mysql-5.1.56 ndb-7.1.15, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)

id=1 @12.0.1.10 (mysql-5.1.56 ndb-7.1.15)

id=2 @12.0.1.11 (mysql-5.1.56 ndb-7.1.15)

[mysqld(API)] 2 node(s)

id=5 @12.0.1.20 (mysql-5.1.56 ndb-7.1.15)

id=6 @12.0.1.21 (mysql-5.1.56 ndb-7.1.15)

[/cce]

Quelques pistes si vous avez des messages d'erreurs

Can't connect to mysql server through socket '/tmp/mysql.sock'

Le serveur MySQL n'est pas lancé.

Le socket précisé lors du lancement du client ne correspond pas à celui du serveur (option --socket pour le client en ligne de commande

Sous UNIX, le user mysql n'a pas les droits sur le répertoire /tmp du serveur.

Access denied for user : 'xx@xx' (using password : Y/N)

Le mot de passe entré n'est pas le bon.

Aucun mot de passe n'a été donné alors que le serveur en attend un (option -p du client MySQL en ligne de commande par exemple).

L'utilisateur n'a pas les droits pour se connecter ou sur certaines tables. Pour voir les droits d'un utilisateur, utilisez la commande SHOW GRANTS FOR user@host. Si nécessaire, donnez les privilèges au user (voir plus haut). N'oubliez pas de faire un FLUSH PRIVILEGES pour recharger les droits

L'utilisateur est occulté par un autre plus prioritaire mais aux droits plus restreints. Le serveur MySQL considère d'abord les users les plus spécifiques (avec une adresse IP précise ou « localhost » par exemple) avant de prendre en compte les plus génériques (caractères '%' ou '_' dans le nom du user ou de l'hôte).

Ex : si l'utilisateur Bob se connecte à partir de la machine locale où se trouve le serveur MySQL, les droits de 'bob@localhost' primeront, s'ils existent, sur les droits de 'bob@%'.

Les erreurs d'accès s'expliquent souvent par la présence d'utilisateurs anonymes (user='') dans la table users qui masquent les droits de certains autres utilisateurs. Pour y remédier, on peut les supprimer par un DELETE FROM mysql.user WHERE user=''.

Connexion failed 1130- Host 'X' is not allowed to connect to this MySQL server

Il n'existe aucun utilisateur autorisé à se connecter depuis l'hôte X (dans la table des droits, il n'y a pas de user ...@X).

Can't connect to mysql server on [hôte]

L'option skip-networking du serveur est activée (au démarrage ou dans le fichier de configuration my.ini/my.cnf) et empêche les connexions TCP/IP venant de l'extérieur.

Désactivez également l'option bind-address 127.0.0.1

Arrêter le cluster

Pour arrêter le cluster, utilisez simplement cette commande dans le Shell sur la machine qui héberge le serveur de gestion MGM :

[cce]

ndb_mgm -e shutdown

[/cce]

Cela va forcer les processus ndb_mgm, ndb_mgm et ndbd à s'arrêter proprement. Tous les noeuds SQL peuvent alors être arrêté avec la commande mysqladmin shutdown classiques ou par d'autres moyens.

Pour relancer le cluster, lancez simplement ces commandes :

Sur l'hôte de gestion (12.0.1.10 et 12.0.1.11 dans notre cas) :

[cce]

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

[/cce]

Sur chaque noeud de stockage (12.0.1.30 et 12.0.1.31) :

[cce]

ndbd

[cce]

N'oubliez pas d'invoquer cette commande avec l'option --initial lorque vous redémarrez un noeud NDBD normalement.

Et les hôtes SQL (12.0.1.20 et 12.0.1.21) :

[cce]

mysqld &

[cce]

Suite et fin au prochain épisode !

Partager ce billet