MySQL Cluster è progettato per fornire un database compatibile con MySQL con elevata disponibilità e bassa latenza. La tecnologia MySQL Cluster è implementata attraverso i motori di archiviazione NDB (Network DataBase) e NDBCLUSTER e fornisce clustering senza condivisione e partizionamento automatico per i sistemi di database MySQL. Nell'architettura shared-nothing, ciascuno dei nodi ha la propria memoria e disco, l'uso di storage condiviso come NFS e SAN non è consigliato e supportato.
Per implementare un cluster MySQL, dobbiamo installare tre tipi di nodi. Ogni tipo di nodo verrà installato sul proprio server. I componenti sono:
1. Nodo di gestione - NDB_MGMD/MGM
Il server di gestione del cluster viene utilizzato per gestire l'altro nodo del cluster. Possiamo creare e configurare nuovi nodi, riavviare, eliminare o eseguire il backup dei nodi sul cluster dal nodo di gestione.
2. Nodi di dati - NDBD/NDB
Questo è il livello in cui avviene il processo di sincronizzazione e replica dei dati tra i nodi.
3. Nodi SQL - MySQLD/API
I server di interfaccia utilizzati dalle applicazioni per connettersi al cluster di database.
In questo tutorial, ti guiderò attraverso l'installazione e la configurazione di un cluster MySQL con centOS 7. Configureremo il nodo di gestione, due nodi di dati e due nodi SQL.
Prerequisiti
- Il sistema operativo è CentOS 7 - 64 bit.
- 5 server CentOS o macchine virtuali. Userò i nomi host e gli indirizzi IP come mostrato di seguito:
- Nodo di gestione
db1 =192.168.1.120 - Nodi di dati
db2 =192.168.1.121
db3 =192.168.1.122 - Nodi SQL
db4 =192.168.1.123
db5 =192.168.1.124
Passaggio 1 - Nodo di gestione dell'installazione
Il primo passo è creare il "Nodo di gestione" con CentOS 7 db1 e IP 192.168.1.120 . Assicurati di aver effettuato l'accesso al server db1 come utente root.
A. Scarica il software MySQL Cluster
Lo scaricherò dal sito MySQL con wget. Sto usando "Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle" qui che è compatibile con CentOS 7. Quindi estrai il file tar.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Installa e rimuovi pacchetti
Prima di installare il pacchetto rpm per MySQL Cluster, è necessario installare perl-Data-Dumper che è richiesto dal server MySQL-Cluster. E devi rimuovere mariadb-libs prima di poter installare MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Installa MySQL Cluster
Installa il pacchetto MySQL Cluster con questi comandi rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Assicurati che non ci siano errori.
D. Configura MySQL Cluster
Creare una nuova directory per i file di configurazione. Userò la directory "/var/lib/mysql-cluster".
mkdir -p /var/lib/mysql-cluster
Quindi creare un nuovo file di configurazione per la gestione del cluster denominato "config.ini " nella directory mysql-cluster.
cd /var/lib/mysql-cluster
vi config.ini
Incolla la configurazione di seguito:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124
Salva il file ed esci.
E. Avvia il nodo di gestione
Quindi avvia il nodo di gestione con il comando seguente:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Il risultato dovrebbe essere simile a questo:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory
Il nodo di gestione è avviato, ora puoi usare il comando "ndb_mgm" per monitorare il nodo:
ndb_mgm
show
Puoi vedere che il nodo di gestione è stato avviato con:mysql-6.6 e ndb-7.4.
Passaggio 2:configurazione dei nodi di dati del cluster MySQL
Utilizzeremo 2 server CentOS per i nodi dati.
- db2 =192.168.1.121
- db3 =192.168.1.122
A. Accedi come utente root e scarica il software MySQL Cluster
Accedi al server db2 con ssh:
ssh [email protected]
Quindi scarica il pacchetto MySQL Cluster ed estrailo:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Installa e rimuovi pacchetti
Installa perl-Data-Dumper e rimuovi mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Installa MySQL Cluster
Ora possiamo installare i pacchetti MySQL Cluster per i Data Node con questi comandi rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Assicurati che non ci siano errori.
D. Configura il nodo dati
Crea un nuovo file di configurazione nella directory /etc con l'editor vi:
vi /etc/my.cnf
Incolla la configurazione di seguito:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node
Salva il file ed esci.
Quindi creare la nuova directory per i dati del database che abbiamo definito nel file di configurazione del nodo di gestione "config.ini".
mkdir -p /var/lib/mysql-cluster
Ora avvia il nodo dati/ndbd:
ndbd
risultati:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2
Data Node db2 connesso al nodo di gestione ip 192.168.1.120.
E. Ripeti i passaggi 2.A - 2.D sul server db3.
Poiché abbiamo 2 nodi di dati, ripetere i passaggi 2.A - 2.D sul nostro secondo nodo di dati.
Passaggio 3 - Configurazione del nodo SQL
Questo passaggio contiene la configurazione per il nodo SQL che fornisce l'accesso dell'applicazione al database. Utilizziamo 2 server CentOS per i nodi SQL:
- db4 =192.168.1.123
- db5 =192.168.1.124
A. Accedi e scarica MySQL Cluster
Accedi al server db4 come utente root:
ssh [email protected]
E scarica il pacchetto MySQL Cluster:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Installa e rimuovi pacchetti
Installa perl-Data-Dumper e rimuovi le mariadb-libs che sono in conflitto con MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Installa MySQL Cluster
Installa il server MySQL Cluster, il client e il pacchetto condiviso con i comandi rpm seguenti:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D. Configura il nodo SQL
Crea un nuovo file my.cnf nella directory /etc:
vi /etc/my.cnf
E incolla la configurazione di seguito:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node
Salva il file ed esci dall'editor.
Avvia il nodo SQL avviando il server MySQL:
service mysql start
E. Ripeti i passaggi 3.A - 3.D sul server db5.
Si prega di ripetere i passaggi 3.A - 3.D sul secondo server SQL (db5).
Fase 4:monitora il cluster
Per vedere lo stato del cluster, dobbiamo accedere al nodo di gestione db1.
ssh [email protected]
Possiamo usare il comando ndb_mgm per vedere lo stato del cluster:
ndb_mgm
ndb_mgm> show
Un altro comando utile è:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
Fase 5:test del cluster
Per eseguire un test sul nostro nuovo MySQL Cluster, dobbiamo accedere ai server SQL Nodes db4 o db5.
Accedi al server db4:
ssh [email protected]
Modifica la password MySQL predefinita memorizzata in ".mysql_secret " file nella directory principale:
cd ~
cat .mysql_secret
questo è il mio campione:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
Ora cambia la password con il comando seguente:
mysql_secure_installation
Digita la tua vecchia password mysql e quindi digita quella nuova, premi invio per confermare tutto.
Se tutto è fatto, puoi accedere alla shell MySQL con la tua password:
mysql -u root -p
Dopo aver effettuato l'accesso, crea un nuovo utente root con l'host "@ ", così potremo accedere a MySQL dall'esterno.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Sostituisci aqwe123 con la tua password sicura! Ora puoi vedere il nuovo utente root con host "@" nell'elenco utenti MySQL:
select user, host, password from mysql.user;
E concedi al nuovo utente root l'accesso in lettura e scrittura dal nodo remoto:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
Ora prova a creare un nuovo database dal server db4 e vedrai il database anche su db5.
Questo è solo un risultato di esempio per testare la replica dei dati del cluster.
Il cluster MySQL è stato configurato correttamente su CentOS 7 con 5 nodi server.
Conclusione
MySQL Cluster è una tecnologia che fornisce alta disponibilità e ridondanza per i database MySQL. Utilizza NDB o NDBCLUSTER come motore di archiviazione e fornisce clustering e partizionamento automatico non condivisi per i database MySQL. Per implementare il cluster, abbiamo bisogno di 3 componenti:Management Node (MGM), Data Nodes (NDB) e SQL Nodes (API). Ciascun nodo deve avere la propria memoria e disco. Non è consigliabile utilizzare l'archiviazione di rete come NFS. Per installare MySQL Cluster su un sistema minimo CentOS 7, dobbiamo rimuovere il pacchetto mariadb-libs, mariadb-libs è in conflitto con MySQL-Cluster-server e devi installare il pacchetto perl-Data-Dumper, è necessario per MySQL-Cluster -server. Un cluster MySQL è facile da installare e configurare su più server CentOS.