opensuse:mysqlcluster
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | opensuse:mysqlcluster [2018/11/17 12:54] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Cluster Mysql sur OpenSuSE 11.0/2/3 ====== | ||
+ | |||
+ | ===== pré-requis ===== | ||
+ | |||
+ | |||
+ | |||
+ | Cette documentation est faite sur la base d'un cluster en production contenant 7 serveurs Apache/ | ||
+ | La configuration suivante peut être adaptée pour monter le cluster sur seulement 2 serveurs (petit cluster...) | ||
+ | |||
+ | Voici l' | ||
+ | |||
+ | * MySQL-Cluster-gpl-client-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-devel-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-management-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-server-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-shared-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-tools-7.0.6-0.sles10.x86_64.rpm | ||
+ | |||
+ | Vous pouvez aussi les télécharger sur http:// | ||
+ | ===== Serveur de Management ===== | ||
+ | |||
+ | ==== Installation du Serveur de Management ==== | ||
+ | |||
+ | |||
+ | Le serveur qui a servi pour le management est un serveur lambda : | ||
+ | |||
+ | HP Proliant DL 360 G5 mono proc Intel(R) Xeon(TM) | ||
+ | |||
+ | CPU 3.00GHz | ||
+ | |||
+ | 1 Go de RAM | ||
+ | |||
+ | 2 disques de 36 Go en raid 1 | ||
+ | |||
+ | Open Suse installé en version minimale | ||
+ | |||
+ | Partitionement : | ||
+ | * /boot 200 Mo | ||
+ | * / 16 Go | ||
+ | * swap 2 Go | ||
+ | * /var 17 Go | ||
+ | |||
+ | Packages à installer via la commande ''# | ||
+ | |||
+ | * MySQL-Cluster-gpl-tools-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-management-7.0.6-0.sles10.x86_64.rpm | ||
+ | |||
+ | |||
+ | ==== Paramétrage du Serveur de Management ==== | ||
+ | |||
+ | Le paramétrage se fait dans le fichier de configuration / | ||
+ | |||
+ | [[opensuse: | ||
+ | |||
+ | ==== Lancement du Manageur ==== | ||
+ | |||
+ | Le lancement du manageur se fait via la commande: | ||
+ | |||
+ | ''# | ||
+ | |||
+ | Lors du lancement de cette commande, il est créé un fichier binaire dans le répertoire de mysql-cluster. Ce fichier est visiblement le fichier de configuration compilé. Lors d'un changement de configuration, | ||
+ | |||
+ | ==== Outil ndb_mgm ==== | ||
+ | |||
+ | Cet outil permet la gestion du cluster. A lancer via un terminal | ||
+ | |||
+ | ''# | ||
+ | -- NDB Cluster -- Management Client --\\ | ||
+ | ndb_mgm> show\\ | ||
+ | Connected to Management Server at: localhost: | ||
+ | Cluster Configuration\\ | ||
+ | ---------------------\\ | ||
+ | [ndbd(NDB)] 2 node(s)\\ | ||
+ | id=1 @192.168.xxx.82 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master)\\ | ||
+ | id=2 @192.168.xxx.83 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)\\ | ||
+ | |||
+ | [ndb_mgmd(MGM)] 1 node(s)\\ | ||
+ | id=20 @192.168.xxx.86 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | |||
+ | [mysqld(API)] 10 node(s)\\ | ||
+ | id=21 (not connected, accepting connect from 192.168.xxx.82)\\ | ||
+ | id=22 (not connected, accepting connect from 192.168.xxx.83)\\ | ||
+ | id=30 @192.168.xxx.84 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=31 @192.168.xxx.85 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=41 @192.168.xxx.74 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=42 @192.168.xxx.75 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=43 @192.168.xxx.73 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=44 @192.168.xxx.72 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=45 @192.168.xxx.71 (mysql-5.1.34 ndb-7.0.6)\\ | ||
+ | id=46 @192.168.xxx.56 (mysql-5.1.34 ndb-7.0.6)'' | ||
+ | |||
+ | \\ | ||
+ | La commande show vous permet de voir l' | ||
+ | |||
+ | Une autre commande intéressante est "all dump 1000", qui permet de voir l' | ||
+ | |||
+ | '' | ||
+ | Sending dump signal with data:\\ | ||
+ | 0x000003e8 Sending dump signal with data:\\ | ||
+ | 0x000003e8 \\ | ||
+ | Node 1: Index usage is 2%(1328 8K pages of total 64032)\\ | ||
+ | Node 1: Data usage is 47%(62030 32K pages of total 129536)\\ | ||
+ | Node 2: Index usage is 2%(1329 8K pages of total 64032)\\ | ||
+ | Node 2: Data usage is 47%(62023 32K pages of total 129536)'' | ||
+ | |||
+ | d' | ||
+ | |||
+ | '' | ||
+ | ---------------------------------------------------------------------------\\ | ||
+ | NDB Cluster -- Management Client -- Help\\ | ||
+ | ---------------------------------------------------------------------------\\ | ||
+ | HELP Print help text\\ | ||
+ | HELP COMMAND Print detailed help for COMMAND(e.g. SHOW)\\ | ||
+ | SHOW Print information about cluster\\ | ||
+ | CREATE NODEGROUP < | ||
+ | DROP NODEGROUP < | ||
+ | START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]\\ | ||
+ | START BACKUP [<backup id>] [NOWAIT | WAIT STARTED | WAIT COMPLETED]\\ | ||
+ | START BACKUP [<backup id>] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]\\ | ||
+ | Start backup (default WAIT COMPLETED, | ||
+ | ABORT BACKUP <backup id> | ||
+ | SHUTDOWN Shutdown all processes in cluster\\ | ||
+ | CLUSTERLOG ON [< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | For detailed help on COMMAND, use HELP COMMAND.'' | ||
+ | |||
+ | l'Url suivante peut etre interressante: | ||
+ | http:// | ||
+ | ===== Serveur de Stockage ===== | ||
+ | |||
+ | |||
+ | ==== Installation du Serveur de Stockage ==== | ||
+ | |||
+ | les serveurs qui ont servi pour les Storage Nodes sont des serveurs:\\ | ||
+ | |||
+ | HP Proliant DL 360 G5 biproc quad core Intel(R) Xeon(R) CPU X5450 @ 3.00GHz avec 8Go de RAM, 2 disques 72Go en raid 1\\ | ||
+ | |||
+ | Open Suse installé en version minimum\\ | ||
+ | |||
+ | Partitionement | ||
+ | * /boot 200Mo | ||
+ | * / 16Go | ||
+ | * swap 8Go | ||
+ | * /var 21Go | ||
+ | * / | ||
+ | |||
+ | sur cette machine installer les packages suivant:\\ | ||
+ | |||
+ | * MySQL-Cluster-gpl-storage-7.0.6-0.sles10.x86_64.rpm | ||
+ | |||
+ | via la commande:\\ | ||
+ | |||
+ | ''# | ||
+ | |||
+ | ==== Parametrage du Serveur de Stockage ==== | ||
+ | |||
+ | le serveur de stockage est paramétré grace au fichier / | ||
+ | |||
+ | [[opensuse: | ||
+ | |||
+ | ==== Lancement du Serveur de Stockage ==== | ||
+ | |||
+ | Le serveur de stockage doit etre lancé la première fois avec l' | ||
+ | |||
+ | ''# | ||
+ | |||
+ | cette option ré-initialise le serveur de stockage | ||
+ | |||
+ | Une fois la base de données importée, il suffira de lancer uniquement :\\ | ||
+ | |||
+ | ''# | ||
+ | |||
+ | A partir de ce moment, lorsque vous faites la commande show sur le serveur de management vous devez voir votre noeud de stockage. | ||
+ | |||
+ | Pour information, | ||
+ | |||
+ | Plus de détails sur : | ||
+ | |||
+ | http:// | ||
+ | ===== Serveur Mysql ===== | ||
+ | |||
+ | ==== Installation du Serveur Mysql ==== | ||
+ | |||
+ | Les serveurs qui ont servi pour les Storage Nodes sont : | ||
+ | |||
+ | HP Proliant DL 360 G5 biproc quad core Intel(R) Xeon(R)\\ | ||
+ | CPU X5450 @ 3.00GHz \\ | ||
+ | 8 Go de RAM \\ | ||
+ | 2 disques 72 Go en raid 1\\ | ||
+ | |||
+ | Open Suse installé en version minimum | ||
+ | |||
+ | Partitionement | ||
+ | * /boot 200 Mo | ||
+ | * / 16 Go | ||
+ | * swap 8 Go | ||
+ | * /var 21 Go | ||
+ | * /srv 26 Go | ||
+ | |||
+ | Packages installés via la commande : ''# | ||
+ | |||
+ | * MySQL-Cluster-gpl-server-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-shared-7.0.6-0.sles10.x86_64.rpm | ||
+ | * MySQL-Cluster-gpl-devel-7.0.6-0.sles10.x86_64.rpm (uniquement si comme moi, vous vouler compiler un truc à la main - pour moi PHP) | ||
+ | |||
+ | ==== Parametrage du Serveur Mysql ==== | ||
+ | |||
+ | Le serveur Mysql est paramétré grace au fichier / | ||
+ | |||
+ | [[opensuse: | ||
+ | |||
+ | ==== Lancement du Serveur Mysql ==== | ||
+ | |||
+ | Comme tout serveur, mysql il se lance via la commande : | ||
+ | |||
+ | ''#/ | ||
+ | |||
+ | Si le démarrage du serveur vous pose souci, n' | ||
+ | |||
+ | ''# | ||
+ | #rpm -ivh MySQL-Cluster-gpl-server'' | ||
+ | |||
+ | <note importante> | ||
+ | faites les commandes suivantes | ||
+ | |||
+ | / | ||
+ | | ||
+ | mysql mysql | ||
+ | |||
+ | dans mysql tapez les commandes suivantes | ||
+ | |||
+ | | ||
+ | exit | ||
+ | |||
+ | une fois sorti, faites les commandes suivantes | ||
+ | |||
+ | | ||
+ | / | ||
+ | |||
+ | La, du moins pour moi, les machines rentrent dans le cluster immédiatement. | ||
+ | </ | ||
+ | |||
+ | Il doit démarrer rapidement | ||
+ | |||
+ | A partir de ce moment, lorsque vous faites la commande show sur le serveur de management vous devez voir votre serveur Mysql. | ||
+ | |||
+ | ==== Annexes concernant le Serveur Mysql ==== | ||
+ | |||
+ | |||
+ | Il faut savoir que pour plusieurs serveurs mysql la base de données doit être créée sur chaque SQL node via :\\ | ||
+ | '' | ||
+ | |||
+ | ainsi que les droits des user via\\ | ||
+ | '' | ||
+ | |||
+ | ===== Import d'une base ===== | ||
+ | |||
+ | ==== via mysql ==== | ||
+ | |||
+ | le cluster mysql fait tourner les bases avec le moteur ndbcluster | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | tout d' | ||
+ | MyIsam, | ||
+ | |||
+ | Donc si on édite le dump fait depuis un moteur MyISAM, nous trouverons à la création des tables quelque-chose comme : | ||
+ | |||
+ | | ||
+ | `id` tinyint(11) NOT NULL AUTO_INCREMENT, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; | ||
+ | |||
+ | Ce qui nous importe est l' | ||
+ | |||
+ | La commande suivante permet de changer dans tous le dump le moteur MyISAM en ndbcluster | ||
+ | |||
+ | sed -e s/ | ||
+ | |||
+ | Si ensuite vous éditez le fichier test2.dump, au meme endroit que dans le premier vous trouverez ceci: | ||
+ | |||
+ | CREATE TABLE `folders` ( | ||
+ | `id` tinyint(11) NOT NULL AUTO_INCREMENT, | ||
+ | `name` varchar(127) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', | ||
+ | `position` int(11) NOT NULL DEFAULT ' | ||
+ | PRIMARY KEY (`id`), | ||
+ | UNIQUE KEY `name` (`name`) | ||
+ | ) ENGINE=ndbcluster AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; | ||
+ | |||
+ | Une fois cette modification faite, vous pouvez importer le nouveau dump dans le cluster via | ||
+ | |||
+ | mysql -p test < test2.dump | ||
+ | | ||
+ | c'est importé ;) | ||
+ | |||
+ | ==== via ndb_restore ==== | ||
+ | |||
+ | La commande ndb_restore fait partie du package MySQL-Cluster-gpl-tools-7.0.6-0.sles10 | ||
+ | |||
+ | Le cluster est composé de deux storage nodes. Si jamais l'un des deux crashe, vous en remontez un puis vous démarrez ndbd. Une fois started, il est restauré. | ||
+ | |||
+ | Dans le cas d'un crash du cluster entier : | ||
+ | |||
+ | Recréez-en un, puis une fois le nouveau cluster vide installé, allez dans le répertoire de backup que vous aurez pris soin de sauvegarder de temps à autre sur une machine capable de se connecter au cluster (emplacememnt [mysqld] voir le config.ini). Choisissez un de vos backup et rentrez dans le répertoire correspondant | ||
+ | |||
+ | cd BACKUP-223/ | ||
+ | |||
+ | dans lequel vous devriez retrouver ce genre de fichier: | ||
+ | |||
+ | test-cluster1:/ | ||
+ | total 96 | ||
+ | drwxr-x--- 6 root root 160 déc. 14 14:59 .. | ||
+ | drwxr-x--- 2 root root 152 déc. 14 14:59 . | ||
+ | -rw-r--r-- 1 root root 52 déc. 14 14:59 BACKUP-223.1.log | ||
+ | -rw-r--r-- 1 root root 33912 déc. 14 14:59 BACKUP-223.1.ctl | ||
+ | -rw-r--r-- 1 root root 55112 déc. 14 14:59 BACKUP-223-0.1.Data | ||
+ | test-cluster1:/ | ||
+ | |||
+ | <note importante> | ||
+ | |||
+ | Une fois cela fait lancer la commande suivante : | ||
+ | |||
+ | ndb_restore -c connectstring -b backupid -n nodeid -m -r | ||
+ | | ||
+ | sachant que : | ||
+ | * **-c** correspond au connecstring que vous avez rentré dans la conf du cluster | ||
+ | * **-b** le numéro du backup | ||
+ | * **-n** le numéro du storage Node sur lequel vous avez récupérer le Backup | ||
+ | * **-m** pour reconstruire les metadata (création de tables uniquements) | ||
+ | * **-r** pour insérer les données du fichier .data | ||
+ | |||
+ | |||
+ | Cela doit vous donner un truc dans ce genre : | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Stop GCP of Backup: 0 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | Pour plus de détails, voir la doc de [[http:// | ||
+ | ===== Export de Base (Backup) ===== | ||
+ | |||
+ | ==== via mysqldump ==== | ||
+ | |||
+ | La commande mysqldump fonctionne exactement comme d' | ||
+ | |||
+ | |||
+ | ==== via ndb_mgm ==== | ||
+ | |||
+ | Pour faire un backup depuis l' | ||
+ | |||
+ | lancer ndb_mgm dans un terminal: | ||
+ | |||
+ | test-manager: | ||
+ | -- NDB Cluster -- Management Client -- | ||
+ | ndb_mgm> | ||
+ | | ||
+ | ensuite il vous faut taper : | ||
+ | |||
+ | **START BACKUP (un numero pour les différencier) [options d'etat du cluster][options d' | ||
+ | |||
+ | vous avez deux choix pour les options d' | ||
+ | |||
+ | * **SNAPSHOTSTART** le backup reflete l'etat du cluster avant le backup | ||
+ | * **SNAPSHOTEND** le backup reflete l'etat du cluster après le backup (option par defaut) | ||
+ | |||
+ | |||
+ | vous avez trois choix pour les options d' | ||
+ | |||
+ | * **NOWAIT**: | ||
+ | * **WAIT STARTED**: | ||
+ | * **WAIT CONPLETED**: | ||
+ | |||
+ | quand vous le lancez cela doit vous donner cela : | ||
+ | |||
+ | | ||
+ | -- NDB Cluster -- Management Client -- | ||
+ | | ||
+ | | ||
+ | | ||
+ | Node 1: Backup 223 started from node 20 | ||
+ | Node 1: Backup 223 started from node 20 completed | ||
+ | | ||
+ | # | ||
+ | Data: 103544 bytes Log: 0 bytes | ||
+ | | ||
+ | |||
+ | |||
+ | Vous trouverez votre backup dans le datadir défini dans le config.ini | ||
+ | |||
+ | pour nous:/ | ||
+ | |||
+ | test-cluster2:/ | ||
+ | total 92 | ||
+ | drwxr-x--- 2 root root 152 déc. 14 13:38 ./ | ||
+ | drwxr-x--- 6 root root 160 déc. 14 15:02 ../ | ||
+ | -rw-r--r-- 1 root root 49480 déc. 14 13:39 BACKUP-1-0.2.Data | ||
+ | -rw-r--r-- 1 root root 33912 déc. 14 13:39 BACKUP-1.2.ctl | ||
+ | -rw-r--r-- 1 root root 52 déc. 14 13:39 BACKUP-1.2.log | ||
+ | test-cluster2:/ | ||
+ | | ||
+ | < | ||
+ | |||
+ | Si vous lancez le backup via un script et que vous utilisez la commande **ndb_mgm -e start backup** l' | ||
+ | |||
+ | | ||
+ | Pour plus de précisions voir la doc sur la [[http:// | ||
+ | |||
+ | |||
+ | ===== Annexes et liens utiles ===== | ||
+ | |||
+ | Ce cluster prend en pleine charge environ 26000 questions par minutes et fonctionne depuis maintenant deux ans | ||
+ | |||
+ | http:// | ||
+ | http:// | ||
+ | |||
opensuse/mysqlcluster.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1