MySQL Cluster è una tecnologia per fornire un'elevata disponibilità per i database MySQL. Utilizza NDB (Network DataBase) o NDBCLUSTER come motore di archiviazione del database. MySQL Cluster è progettato come architettura ACID multi-master senza un singolo punto di errore, utilizza lo sharding automatico (partizionamento) per scalare i processi di lettura e scrittura.
Per implementare un cluster MySQL, abbiamo bisogno di 3 diversi tipi di nodi:
- Nodo di gestione (ndb_mgmd )
- Utilizzato per il monitoraggio e la configurazione del cluster.
- Nodo dati (ndbd )
- Questi nodi vengono utilizzati per archiviare i dati, forniscono lo sharding automatico e possono gestire la replica.
- Nodo SQL (mysqld )
- Interfacce di MySQL Server per la connessione a tutti i nodi.
In questo tutorial, ti mostrerò come installare un 'MySQL Cluster' su Ubuntu 16.04 LTS (Xenial Xerus).
Prerequisiti
- 4 nodi con server Ubuntu 16.04
- 192.168.1.11 nodo di gestione
- 192.168.1.12 data-node1
- 192.168.1.13 data-node2
- 192.168.1.14 sql-node
- Privilegi di root sui nodi.
Passaggio 1:installazione e configurazione del nodo di gestione
In questo passaggio installeremo il nodo di gestione per il nostro cluster con indirizzo IP 192.168.1.11. Installiamo il software del cluster MySQL e lo configuriamo come nodo di gestione per il cluster.
Accedi al nodo di gestione con ssh:
ssh [email protected]
TYPE YOUR PASSWORD
A. Installa MySQL Cluster Management Node
Apri qui il sito del cluster MySQL e scegli l'opzione 'Linux-generic ' e scarica il pacchetto a 64 bit facendo clic su 'Download pulsante '.
Scarica il pacchetto del cluster MySQL con wget ed estrailo.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
Rinomina la directory in mysql:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Vai alla directory mysql e copia i 2 file binari per il comando di gestione del cluster 'ndb_mgmd e ndb_mgm ' nella directory '/usr/local/bin/', quindi rendili eseguibili con il comando chmod.
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*
Configura il nodo di gestione creando una nuova directory 'mysql-cluster' per i file di configurazione nella directory '/var/lib/'.
Crea una directory 'mysql-cluster' e crea una nuova configurazione 'config.ini' nella directory:
mkdir -p /var/lib/mysql-cluster/
vim /var/lib/mysql-cluster/config.ini
Incolla la configurazione di seguito:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[mysqld default]
[ndb_mgmd default]
[tcp default]
# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.11
# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster
# Data Node 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
# SQL Node
[mysqld]
hostname=192.168.1.14
# If you to add new SQL Node
[mysqld]
Modifica l'indirizzo IP di ndb_mgmd per la gestione, ndbd per il nodo dati e mysqld per il nodo sql in modo che corrisponda alla tua configurazione.
Salva il file ed esci.
Quindi, avvia il processo del nodo di gestione con il comando seguente:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Fai in modo che venga avviato all'avvio aggiungendo il comando a '/etc/rc.local ' file:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
Se vedi i risultati:
MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12
Quindi il processo del nodo di gestione è in esecuzione.
Controlla il nodo di gestione con un altro comando:
# Checking port 1186 used by ndb_mgmd
netstat -plntu
# Checking the management node is ready
ndb_mgm
show
Passaggio 2:installazione e configurazione del nodo dati
In questo passaggio, installeremo il software del cluster MySQL e lo configureremo come nodo dati. Useremo 2 server Ubuntu 16.04 come nodi di dati:data-node1 con indirizzo IP 192.168.1.12 e data-node2 con indirizzo IP 192.168.1.13.
Accedi al server data-node1 con ssh:
ssh [email protected]
A. Installa MySQL Cluster sul nodo dati
Prima di installare il software del cluster MySQL, è necessario installare un nuovo pacchetto 'libaio1 ' e crea un nuovo utente e gruppo mysql . Esegui il comando seguente come root per questo:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
Ora scarica il pacchetto del cluster MySQL 'Linux-Generic ', estrai e rinomina la directory in mysql.
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Sposta la directory 'mysql' in '/usr/local /' e vai in quella directory.
mv mysql /usr/local/
cd /usr/local/mysql/
Eseguire lo script per la creazione dei database di sistema:
./scripts/mysql_install_db --user=mysql
Se non ci sono errori, copia il file del servizio mysql in '/etc/init.d ' e aggiungi lo script di avvio di mysql da eseguire all'avvio.
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
Quindi, sposta tutti i comandi binari mysql in '/usr/local/bin ' e crea un nuovo collegamento simbolico.
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
Cambia il proprietario della directory mysql in utente root e mysql di gruppo e cambia la directory dei dati in mysql come proprietario.
chown -R root:mysql .
chown -R mysql data
Crea un nuovo file di configurazione MySQL 'my.cnf ' con vim:
vim /etc/my.cnf
Incolla la configurazione di seguito:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Salva ed esci.
Crea una nuova directory per i nodi di dati e cambia la proprietà all'utente mysql.
mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster
Avvia il servizio mysql con il comando seguente:
ndbd --initial
systemctl start mysql
Assicurati che non ci siano errori e che i risultati siano sotto (data-node2):
MySQL sul nodo dati viene avviato. Ora puoi configurare la password MySQL con il comando:
mysql_secure_installation
oppure accedi alla shell MySQL.
mysql -u root -p
NOTA :
Ripeti questo passaggio su 'data-node2 ' indirizzo IP del server 192.168.1.13.
Passaggio 3:installazione e configurazione del nodo SQL
In questo passaggio, installeremo il software MySQL Cluster e lo configureremo come nodo SQL. Questo nodo viene utilizzato per accedere ai database sui nodi di dati. Il processo di installazione è lo stesso del nodo dati, ma non è necessario eseguire il servizio ndbd nel nodo SQL.
Accedi al nodo SQL con ssh:
ssh [email protected]
A. Installa MySQL Cluster sul nodo SQL
Installa il pacchetto libaio1 e crea un nuovo utente e gruppo mysql:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
Scarica il pacchetto del cluster mysql dal sito, estrailo e rinominalo:
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
Sposta la directory mysql:
mv mysql /usr/local/
cd /usr/local/mysql/
Esegui mysql_install_db sceneggiatura:
./scripts/mysql_install_db --user=mysql
Copia il file del servizio e aggiungilo per essere avviato all'avvio:
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
Sposta tutti i binari di MySQL in '/usr/local/bin ' directory:
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
Cambia il proprietario di tutti i file e la directory:
chown -R root:mysql .
chown -R mysql data
Crea un nuovo my.cnf file di configurazione con vim:
vim /etc/my.cnf
Incolla la configurazione di seguito:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Salva ed esci.
Avvia il nodo SQL avviando il servizio mysql con il comando systemctl:
systemctl start mysql
Il nodo SQL è avviato, ora puoi configurare la password per MySQL.
mysql_secure_installation
Fase 4 - Test
Test per creare un nuovo database dal nodo SQL.
mysql -u root -p
TYPE PASSWORD
create database nanana;
Verifica che il database venga replicato sui server del nodo dati.
E quando un nodo è disattivato, un altro nodo gestirà la connessione dal nodo SQL.
mysql -u root -p
TYPE PASSWORD
show databases;
Verifica dello stato del cluster dal nodo di gestione:
ndb_mgm
show
Passaggio 5 - Suggerimenti aggiuntivi
Esecuzione di un riavvio e arresto sicuro del cluster.
Vai al nodo di gestione del cluster e digita il comando seguente per arrestare il cluster:
ndb_mgm
shutdown
Il comando arresterà tutti i servizi ndb sui nodi di dati.
Se desideri riavviare il cluster, puoi eseguire il comando seguente sul nodo di gestione:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
Ed esegui il comando seguente su tutti i nodi di dati:
ndbd
systemctl start mysql
Quindi avvia il servizio mysql sui nodi SQL:
systemctl start mysql
Ora il tuo MySQL Cluster è di nuovo in esecuzione.