
Premetto che per creare un cluster “vero” con una ridondanza “vera” sono necessarie 3 macchine.
a) Nodo dati 1 — es.: IP 192.168.100.101
b) Nodo dati 2 — es.: IP 192.168.100.102
c) Nodo di Management dei 2 nodi — es.: IP 192.168.100.103
Installiamo MySQL su entrambi i nodi dati con il comando:
# sudo apt-get install mysql-server
Durante il setup vi verrà chiesto di inserire la password di root del database. (Importante non perderla)
Passiamo ora ad installare e configurare il Nodo di Management.
Creiamo il seguente file /etc/mysql/ndb_mgmd.cnf con:
# sudo nano /etc/mysql/ndb_mgmd.cnf
e inserite al suo interno le seguenti lines:
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the “world” database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Section for the cluster management node
[NDB_MGMD]
# IP address of the management node (this system)
HostName=192.168.100.103# Section for the storage nodes
[NDBD]
# IP address of the first storage node
HostName=192.168.100.101
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=512M
[NDBD]
# IP address of the second storage node
HostName=192.168.100.102
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=512M# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]
Passiamo ora a configurare i Nodi dati 1 e 2, quindi la seguente operazione va seguita su entrambi i nodi.
# sudo mkdir /var/lib/mysql-cluster/backup
# sudo chown -R mysql:mysql /var/lib/mysql-cluster
Modifichiamo il file di configurazione di MySQL
#sudo nano /etc/mysql/my.cnf
Inserite sotto la voce [mysqld] le seguenti lines:
[mysqld]
ndbcluster
# IP address del nodo di management
ndb-connectstring=192.168.100.103
cercate la voce [MYSQL_CLUSTER] dovrebbe essere preceduta da un # che lo commenta, rimuovete il # per avere 2 lines come segue:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.100.103 # IP address del nodo di management
Perfetto, vi ricordo che la procedura appena spiegata va eseguita su entrambi i nodi.
Ora passiamo di nuovo al Nodo di management ed eseguite il seguente comando:
# sudo /etc/init.d/mysql-ndb-mgm restart
# sudo /etc/init.d/mysql restart
digitate:
# ndb_mgm
e date il comando:
#show
dovreste vedere qualcosa di questo tipo:
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.6)
id=3 (not connected, accepting connect from 192.168.1.7)[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.5 (Version: 5.0.51)[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
Significa che il Nodo manager non è ancora in grado di collegarsi ai nodi.
Tornate ai nodi e date su entrambi:
# sudo /etc/init.d/mysql restart
# sudo /etc/init.d/mysql-ndb restart
Bene, ora ritornate sul Nodo di management e ridate il comando “show” , il risultato dovrebbe essere il seguente:
ndb_mgm> show;
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.6 (Version: 5.0.51, Nodegroup: 0, Master)
id=3 @192.168.1.7 (Version: 5.0.51, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.5 (Version: 5.0.51)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.7 (Version: 5.0.51)
id=5 @192.168.1.6 (Version: 5.0.51)
Perfetto il CLUSTER è OK e funzionante.
Rigrazio il fantastico Blog di Bieg per le informazioni necessarie per questa guida.
Di base mi sono limitato a tradurla per chi ha difficoltà con l’inglese.
Fonte: Bieg Blog
Installando mysql-server il comando /etc/init.d/mysql-ndb-mgm restart non esiste dato che il management non è installato…. è un mio problema o questa guida è errata?
In questa guida manca qualcosa…il nodo SQL qual’è? Seguendo la guida si ottengono due database che si replicano in realtime ( e qui va tutto bene, anzi perfetto ) ma la domanda è…
Se io assumo di aver un server di front-end a che indirizzo ip devo “puntarlo”?
Se lo punto al 192.168.1.6 e questo cade io so che esiste il db sul 192.168.1.7 ma in ogni caso dovrei andare a mano sul server di front-end a ripuntare il db-server..mi sembra strano che in un’architettura cluster non esista l’ip di cluster ovvero l’ip “pubblico” che si occupa poi di inoltrare le richieste al server db online…di sicuro l’mgm non è perchè questi controlla l’architettura cluster ma non è in grado di fungere da ruolo di Nodo SQL, io vedo che alla fine esistono due Nodi SQL 192.168.1.6/7 ma essi combaciano con i db…boh
Alla fine è stato verificato questo post ? Funziona ?
Ciao e grazie
Luigi
Ciao a tutti, credo di aver capito il problema!
Il post originale, di cui questo è una traduzione (http://bieg.wordpress.com/2008/08/03/mysql-clustering-ubuntu/) indica chiaramente le versioni di Ubuntu (8.04.1) e di MySQL (5.0.51).
Dunque, ho scaricato a mano le versioni giuste dei pacchetti da http://packages.ubuntu.com/ (ovvero quelle per Hardy), e finalmente, dopo una giornata di prove, mi ritrovo tutti i files necessari!
Ciao,
Giuseppe
Ciao,
ti sei dimenticato di dire che mysql server va installato su tutti e tre i nodi e non solo su quelli dati (se andate sulla guida originale infatti si parla di 3 nodi) il resto è perfetto. grazie e ciao
Non può funzionare. Con apt-get install mysql-server non vengono insallati i tool per il clustering. Che pacchetti devo installare? Non trovo altre guide e con apt-cache search non trovo!
PS: uso debian squeeze
guarda che cosi il sistema è tutto tranne che sicuro. Se muore il server di gestioen cluster “sei del gatto”. Ce ne vuole uno pronto a subentrare.
Discorso “ip di connessione” bisogna aggiungere un round robin dns IMHO
Attractive section of content. I just stumbled upon your website and in
accession capital to assert that I acquire in fact enjoyed account your blog posts.
Any way I will be subscribing to your feeds and even
I achievement you access consistently rapidly.