«

»

août 19

Comment installer un Cluster MySQL en ACTIF/ACTIF avec NDBCLUSTER

Introduction

Dans le cadre d’une série d’article consacré à la haute disponibilité, ce billet va vous présenter la mise en place d’une architecture MySQL en Haute Disponibilité et hautement performante.

Périmètre de ce tuto

Ce tuto est réalisé sur une Debian wheezy, et emploie la version 7.3.6 de MySQL Cluster.

Principe de l’architecture

Comme dit plus haut, nous allons utiliser MySQL, mais une variante spécifique de celui-ci, la version « Cluster » que vous pouvez télécharger ici : http://dev.mysql.com/downloads/cluster/

Pour mettre en place cette architecture vous aurez besoin de plusieurs serveurs (autrement pas de haute disponibilité). Ceci dit, avec même avec un seul serveur vous pourrez tout de même bénéficiez des performance accrues du moteur NDBENGINE.

La grosse spécificité de ce moteur est qu’il stocke ses tables en RAM (avec un copie sur disques pour la persistance des données). Pour l’ensemble des différence avec le moteur Innodb je vous renvoie à l’adresse suivante : http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-ndb-innodb-engines.html

Dans notre architecture, l’ensemble des serveurs de traitements MySQL seront en READ/WRITE simultanément.

Schéma

Voici un schéma de ce que nous nous apprêtons à mettre en place :

Archi1

 

Les rôles

Nous pouvons distinguer les 3 rôles suivants :

  1. « MGMTx », ces serveurs ont un rôle de management, ils contrôlent constamment ce qu’il se passe dans le cluster
  2. « SQLx », ces serveurs sont les frontaux sql, ce sont à eux que les clients viendront soumettre leurs requêtes
  3. « NDBx », ces serveurs sont les serveurs de stockage, ce sont eux qui détiennent les données dont les frontaux auront besoin pour résoudre les requêtes des clients

Dans notre architecture, nous avons choisi de créer deux GroupNode pour les serveurs NDB. Pourquoi ? Pour la performance. En effet, de cette manière nous faisons quelque chose que l’on pourrait comparer à du RAID 0+1. Les groupes se partageront l’ensemble des données, et celles-ci seront répliquées à l’intérieur de chaque groupe.

Le réseau

Il y a quelques détails aux quels vous devez faire attention concernant le réseau :

  1. Ce système est prévu pour exploiter des liens réseaux rapides et fiable. Typiquement, un LAN Gigabit. Sauf cas particulier, oubliez la réplication inter-site.
  2. Il est préférable que les liens de réplication et d’accès aux tables soient sur le même réseau logique. Attention si vous routez ou filtrez, la charge peut-être importante.
  3. Il est également conseillé que ces liens jouissent d’un réseau physique dédié.

 Installation

Avant de commencer le déploiement du cluster, veuillez vous assurer que vos serveurs sont sains et qu’ils n’ont pas de problèmes pour communiquer entre eux. Si vous souhaitez employer des noms DNS dans vos fichiers de configuration, assurez-vous que la résolution de nom fonctionne correctement.

Installation des serveurs de management

Installation de MGMT1

Nous commençons par installer le premier serveur de management de l’architecture.

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

adduser mysql
chown -R mysql:mysql /opt/mysql/
mkdir -p /home/mysql/MySQL_Cluster/id1

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id1/config.ini << EOF
[NDB_MGMD DEFAULT]
Portnumber=1186

[NDB_MGMD]
NodeId=1
HostName=mgmt1
DataDir=/home/mysql/MySQL_Cluster/id1/
Portnumber=1186

[NDB_MGMD]
NodeId=2
HostName=mgmt2
DataDir=/home/mysql/MySQL_Cluster/id2/
Portnumber=1186

[TCP DEFAULT]
SendBufferMemory=4M
ReceiveBufferMemory=4M

[NDBD DEFAULT]
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
BackupReportFrequency=10
MemReportFrequency=30
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15
DataMemory=50M
IndexMemory=10M
MaxNoOfTables=4096
MaxNoOfTriggers=3500
NoOfReplicas=2
StringMemory=25
DiskPageBufferMemory=64M
SharedGlobalMemory=20M
LongMessageBuffer=32M
MaxNoOfConcurrentTransactions=16384
BatchSizePerLocalScan=512
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
RedoBuffer=32M
MaxNoOfExecutionThreads=2
StopOnError=false
LockPagesInMainMemory=2
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=60000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

[NDBD]
NodeId=20
HostName=10.66.1.178
DataDir=/home/mysql/MySQL_Cluster/id20/
NodeGroup=0

[NDBD]
NodeId=21
HostName=10.66.1.179
DataDir=/home/mysql/MySQL_Cluster/id21/
NodeGroup=0

[NDBD]
NodeId=22
HostName=10.66.1.180
DataDir=/home/mysql/MySQL_Cluster/id22/
NodeGroup=1

[NDBD]
NodeId=23
HostName=10.66.1.181
DataDir=/home/mysql/MySQL_Cluster/id23/
NodeGroup=1

[MYSQLD DEFAULT]

[MYSQLD]
NodeId=10
HostName=10.66.1.174

[MYSQLD]
NodeId=11
HostName=10.66.1.175

[MYSQLD]
NodeId=12
HostName=10.66.1.176

[MYSQLD]
NodeId=13
HostName=10.66.1.177

[MYSQLD]

EOF

Un dernier petit détail :

chown -R mysql:mysql /home/mysql/

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/
ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

Et voilà, c’est fini. Nous venons de déployer le premier serveur de l’architecture.

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id1/ndb_1.pid –chuid mysql –exec /opt/mysql/server-5.6/bin/ndb_mgmd — –config-dir=/home/mysql/MySQL_Cluster/id1/ –config-file=/home/mysql/MySQL_Cluster/id1/config.ini

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id1/ndb_1.pid –exec /opt/mysql/server-5.6/bin/ndb_mgmd

Installation de MGMT2

Nous nous attaquons maintenant au second serveur de management de l’architecture. La procédure est quasi identique.

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

adduser mysql
chown -R mysql:mysql /opt/mysql/
mkdir -p /home/mysql/MySQL_Cluster/id2

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id2/config.ini << EOF
[NDB_MGMD DEFAULT]
Portnumber=1186

[NDB_MGMD]
NodeId=1
HostName=mgmt1
DataDir=/home/mysql/MySQL_Cluster/id1/
Portnumber=1186

[NDB_MGMD]
NodeId=2
HostName=mgmt2
DataDir=/home/mysql/MySQL_Cluster/id2/
Portnumber=1186

[TCP DEFAULT]
SendBufferMemory=4M
ReceiveBufferMemory=4M

[NDBD DEFAULT]
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
BackupReportFrequency=10
MemReportFrequency=30
LogLevelStartup=15
LogLevelShutdown=15
LogLevelCheckpoint=8
LogLevelNodeRestart=15
DataMemory=50M
IndexMemory=10M
MaxNoOfTables=4096
MaxNoOfTriggers=3500
NoOfReplicas=2
StringMemory=25
DiskPageBufferMemory=64M
SharedGlobalMemory=20M
LongMessageBuffer=32M
MaxNoOfConcurrentTransactions=16384
BatchSizePerLocalScan=512
FragmentLogFileSize=64M
NoOfFragmentLogFiles=16
RedoBuffer=32M
MaxNoOfExecutionThreads=2
StopOnError=false
LockPagesInMainMemory=2
TimeBetweenEpochsTimeout=32000
TimeBetweenWatchdogCheckInitial=60000
TransactionInactiveTimeout=60000
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000

[NDBD]
NodeId=20
HostName=10.66.1.178
DataDir=/home/mysql/MySQL_Cluster/id20/
NodeGroup=0

[NDBD]
NodeId=21
HostName=10.66.1.179
DataDir=/home/mysql/MySQL_Cluster/id21/
NodeGroup=0

[NDBD]
NodeId=22
HostName=10.66.1.180
DataDir=/home/mysql/MySQL_Cluster/id22/
NodeGroup=1

[NDBD]
NodeId=23
HostName=10.66.1.181
DataDir=/home/mysql/MySQL_Cluster/id23/
NodeGroup=1

[MYSQLD DEFAULT]

[MYSQLD]
NodeId=10
HostName=10.66.1.174

[MYSQLD]
NodeId=11
HostName=10.66.1.175

[MYSQLD]
NodeId=12
HostName=10.66.1.176

[MYSQLD]
NodeId=13
HostName=10.66.1.177

[MYSQLD]

EOF

Un dernier petit détail :

chown -R mysql:mysql /home/mysql/

 

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/
ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

Et voilà, c’est fini. Nous venons de déployer le second serveur de l’architecture. Rapide n’est-ce pas ?

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id2/ndb_2.pid –chuid mysql –exec /opt/mysql/server-5.6/bin/ndb_mgmd — –config-dir=/home/mysql/MySQL_Cluster/id2/ –config-file=/home/mysql/MySQL_Cluster/id2/config.ini

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id2/ndb_2.pid –exec /opt/mysql/server-5.6/bin/ndb_mgmd

Installation des serveurs de stockage

Installation de NDB1

Nous allons passer maintenant à l’installation du premier serveur de stockage.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id20

chown -R mysql:mysql /home/mysql/

L’installation du serveur est finie, il ne reste plus qu’à l’initialiser :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id20/ndb_20.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=20 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –initial –bind-address=10.66.1.178

Notez le switch –initial qui demande au serveur d’initialiser son stockage. Attention à son utilisation sur une architecture en prod, cela supprimera les données présente sur le nœud.

Utiliser la commande suivante pour lancez le serveur les fois suivantes :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id20/ndb_20.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=20 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –bind-address=10.66.1.178

Pour arrêter le serveur, il est recommandé de passer par un serveur de management comme ceci :

ndb_mgm -e ’20 stop’

 Installation de NDB2

Nous allons passer maintenant à l’installation du second serveur de stockage.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id21

chown -R mysql:mysql /home/mysql/

L’installation du serveur est finie, il ne reste plus qu’à l’initialiser :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id21/ndb_21.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=21 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –initial –bind-address=10.66.1.179

Notez le switch –initial qui demande au serveur d’initialiser son stockage. Attention à son utilisation sur une architecture en prod, cela supprimera les données présente sur le nœud.

Utiliser la commande suivante pour lancez le serveur les fois suivantes :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id21/ndb_21.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=21 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –bind-address=10.66.1.179

Pour arrêter le serveur, il est recommandé de passer par un serveur de management comme ceci :

ndb_mgm -e ’21 stop’

 Installation de NDB3

Nous allons passer maintenant à l’installation du troisième serveur de stockage.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id22

chown -R mysql:mysql /home/mysql/

L’installation du serveur est finie, il ne reste plus qu’à l’initialiser :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id22/ndb_22.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=22 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –initial –bind-address=10.66.1.180

Notez le switch –initial qui demande au serveur d’initialiser son stockage. Attention à son utilisation sur une architecture en prod, cela supprimera les données présente sur le nœud.

Utiliser la commande suivante pour lancez le serveur les fois suivantes :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id22/ndb_22.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=22 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –bind-address=10.66.1.180

Pour arrêter le serveur, il est recommandé de passer par un serveur de management comme ceci :

ndb_mgm -e ’22 stop’

 Installation de NDB4

Nous allons passer maintenant à l’installation du dernier serveur de stockage.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id23

chown -R mysql:mysql /home/mysql/

L’installation du serveur est finie, il ne reste plus qu’à l’initialiser :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id23/ndb_23.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=23 –ndb-connectstring=mgmt1 –verbose –nostart –initial –bind-address=10.66.1.181

Notez le switch –initial qui demande au serveur d’initialiser son stockage. Attention à son utilisation sur une architecture en prod, cela supprimera les données présente sur le nœud.

Utiliser la commande suivante pour lancez le serveur les fois suivantes :

start-stop-daemon –start –chuid mysql –pidfile /home/mysql/MySQL_Cluster/id23/ndb_23.pid –exec /opt/mysql/server-5.6/bin/ndbd — –ndb-nodeid=23 –ndb-connectstring=mgmt1,mgmt2 –verbose –nostart –bind-address=10.66.1.181

Pour arrêter le serveur, il est recommandé de passer par un serveur de management comme ceci :

ndb_mgm -e ’23 stop’

 Installation des serveurs frontaux MySQL

Installation de SQL1

Nous allons passer maintenant à l’installation du premier serveur de traitement.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id10/tmp

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id10/my.cnf << EOF
[mysqld]
log-error=mysqld.10.err
datadir=/home/mysql/MySQL_Cluster/id10/
tmpdir=/home/mysql/MySQL_Cluster/id10/tmp
basedir=/opt/mysql/server-5.6/
port=3306
ndbcluster=on
#ndbcluster
ndb-nodeid=10
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
socket=/home/mysql/MySQL_Cluster/id10/mysql.socket

[mysql_cluster]
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
EOF

Redéfinissons les droits sur /home/mysql :

chown -R mysql:mysql /home/mysql/

Puis initialisons le serveur :

mysql_install_db –basedir=/opt/mysql/server-5.6 –datadir=/home/mysql/MySQL_Cluster/id10 –user=mysql

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id10/sql1.pid –background –chuid mysql –exec /opt/mysql/server-5.6/bin/mysqld_safe — –defaults-file=/home/mysql/MySQL_Cluster/id10/my.cnf

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id10/sql1.pid –exec /opt/mysql/server-5.6/bin/mysqld

Transfert des tables de gestion des privilèges sur le cluster

Avant d’aller plus loin, nous allons transférer les tables servant à la gestion des privilège qui sont pour le moment locales sur le cluster afin d’avoir gestion des droits centralisées. Chaque nouveau nœud frontal, saura s’en servir par défaut.

Pour cela lançons les commandes suivantes sur le nœud SQL1 :

mysql -h 127.0.0.1 < /opt/mysql/server-5.6/share/ndb_dist_priv.sql
mysql -h 127.0.0.1 -e ‘CALL mysql.mysql_cluster_move_privileges();’

 

Une fois terminé, vérifions si l’opération s’est bien passée :

mysql -h 127.0.0.1 -e ‘SELECT CONCAT(‘Conversion ‘,IF(mysql.mysql_cluster_privileges_are_distributed(), ‘succeeded’, ‘failed’),’.’) AS Result;’

Installation de SQL2

Nous allons passer maintenant à l’installation du second serveur de traitement.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id11/tmp

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id11/my.cnf << EOF
[mysqld]
log-error=mysqld.11.err
datadir=/home/mysql/MySQL_Cluster/id11/
tmpdir=/home/mysql/MySQL_Cluster/id11/tmp
basedir=/opt/mysql/server-5.6/
port=3306
ndbcluster=on
#ndbcluster
ndb-nodeid=11
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
socket=home/mysql/MySQL_Cluster/id11/mysql.socket

[mysql_cluster]
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
EOF

Redéfinissons les droits sur /home/mysql :

chown -R mysql:mysql /home/mysql/

Puis initialisons le serveur :

mysql_install_db –basedir=/opt/mysql/server-5.6 –datadir=/home/mysql/MySQL_Cluster/id11 –user=mysql

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id11/sql2.pid –background –chuid mysql –exec /opt/mysql/server-5.6/bin/mysqld_safe — –defaults-file=/home/mysql/MySQL_Cluster/id11/my.cnf

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id11/sql2.pid –exec /opt/mysql/server-5.6/bin/mysqld

 Installation de SQL3

Nous allons passer maintenant à l’installation du troisième serveur de traitement.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id12/tmp

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id12/my.cnf << EOF
[mysqld]
log-error=mysqld.12.err
datadir=/home/mysql/MySQL_Cluster/id12/
tmpdir=/home/mysql/MySQL_Cluster/id12/tmp
basedir=/opt/mysql/server-5.6/
port=3306
ndbcluster=on
#ndbcluster
ndb-nodeid=12
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
socket=/home/mysql/MySQL_Cluster/id12/mysql.socket

[mysql_cluster]
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
EOF

Redéfinissons les droits sur /home/mysql :

chown -R mysql:mysql /home/mysql/

Puis initialisons le serveur :

mysql_install_db –basedir=/opt/mysql/server-5.6 –datadir=/home/mysql/MySQL_Cluster/id12 –user=mysql

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id12/sql3.pid –background –chuid mysql –exec /opt/mysql/server-5.6/bin/mysqld_safe — –defaults-file=/home/mysql/MySQL_Cluster/id12/my.cnf

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id12/sql3.pid –exec /opt/mysql/server-5.6/bin/mysqld

Installation de SQL4

Nous allons passer maintenant à l’installation du dernier serveur de traitement.

La procédure est très proche des précédentes :

Téléchargeons le package d’installation pour debian (plusieurs distribution sont prise en charge) :

cd /opt

wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Installons le package, puis supprimons le fichier source afin d’économiser de la place :

dpkg -i mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

rm mysql-cluster-gpl-7.3.6-debian6.0-x86_64.deb

Nous allons avoir besoin de quelques paquets supplémentaires :

aptitude install python-paramiko python-pycryptopp libaio-dev

Préparons un peu le terrain :

ln -s /opt/mysql/server-5.6/bin/* /usr/bin/

ln -s /opt/mysql/server-5.6/scripts/mysql_install_db /usr/bin/

adduser mysql

chown -R mysql:mysql /opt/mysql/

mkdir -p /home/mysql/MySQL_Cluster/id13/tmp

Créons le fichier de configuration :

cat > /home/mysql/MySQL_Cluster/id13/my.cnf << EOF
[mysqld]
log-error=mysqld.13.err
datadir=/home/mysql/MySQL_Cluster/id13/
tmpdir=/home/mysql/MySQL_Cluster/id13/tmp
basedir=/opt/mysql/server-5.6/
port=3306
ndbcluster=on
#ndbcluster
ndb-nodeid=13
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
socket=/home/mysql/MySQL_Cluster/id13/mysql.socket

[mysql_cluster]
ndb-connectstring=10.66.1.182:1186,10.66.1.183:1186,
EOF

Redéfinissons les droits sur /home/mysql :

chown -R mysql:mysql /home/mysql/

Puis initialisons le serveur :

mysql_install_db –basedir=/opt/mysql/server-5.6 –datadir=/home/mysql/MySQL_Cluster/id13 –user=mysql

Voici les deux commandes pour le lancer et l’arrêter :

start-stop-daemon –start –pidfile /home/mysql/MySQL_Cluster/id13/sql4.pid –background –chuid mysql –exec /opt/mysql/server-5.6/bin/mysqld_safe — –defaults-file=/home/mysql/MySQL_Cluster/id13/my.cnf

start-stop-daemon –stop –pidfile /home/mysql/MySQL_Cluster/id13/sql4.pid –exec /opt/mysql/server-5.6/bin/mysqld

Conclusion

Nous en avons maintenant terminé avec l’installation d’une architecture MySQL à haute disponibilité et hautement performante.

Dans un prochain article, je publierai quelques procédures d’exploitation de cluster.

3 commentaires

  1. de ganay

    Bonjour,

    je ne comprend pas très bien comment vous démarrer les services de clustering sur les seveur MGMT, NDB et SQL

    pouvez vous m’expliquer comment faite vous? merci

    1. mmayen

      Bonjour,

      A la fin de chaque sections vous avez un petit paragraphe qui indiquent les commandes à utiliser (start-stop-daemon).
      Maintenant si vous parlez des scripts init.d, il vous faudra les écrire. Si j’ai le temps ça fera l’objet d’une mise à jour.

      Merci

    2. mmayen

      J’avais oublié, vous trouverez plus d’éléments dans cet article : http://www.tutospourlesnuls.fr/procedure-dexploitation-dun-cluster-mysql/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


quatre + = 7

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>