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 :
Les rôles
Nous pouvons distinguer les 3 rôles suivants :
- « MGMTx », ces serveurs ont un rôle de management, ils contrôlent constamment ce qu’il se passe dans le cluster
- « SQLx », ces serveurs sont les frontaux sql, ce sont à eux que les clients viendront soumettre leurs requêtes
- « 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 :
- 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.
- 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.
- 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
de ganay
5 février 2015 à 19 h 10 min (UTC 1) Lier vers ce commentaire
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
mmayen
8 février 2015 à 1 h 17 min (UTC 1) Lier vers ce commentaire
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
mmayen
8 février 2015 à 1 h 19 min (UTC 1) Lier vers ce commentaire
J’avais oublié, vous trouverez plus d’éléments dans cet article : http://www.tutospourlesnuls.fr/procedure-dexploitation-dun-cluster-mysql/