Il clustering di database è il processo di combinazione di più server collegandoli a un unico database. Il clustering migliora la disponibilità del database distribuendo il carico su server diversi. Se un server si guasta, altri sono subito disponibili per continuare a servire.
MariaDB Galera è una soluzione di clustering multimaster che consente di leggere e scrivere su qualsiasi nodo del cluster. Con MariaDB Galera, una modifica apportata a qualsiasi nodo viene replicata su tutti i nodi. MariaDB Galera supporta i motori di archiviazione XtraDB/InnoDB ed è disponibile solo su Linux.
Caratteristiche
- Topologia multimaster attiva-attiva
- Unione automatica del nodo
- Possibilità di leggere e scrivere su qualsiasi nodo del cluster
- Controllo automatico dell'appartenenza, i nodi non riusciti vengono eliminati dal cluster
- Provisioning automatico dei nodi
In questo tutorial, ti mostreremo come configurare un cluster MariaDB Galera a tre nodi su Ubuntu 18.04.
Prerequisiti
- Tre nuove VPS Ubuntu 18.04 sulla piattaforma Atlantic.Net Cloud.
- Una password di root configurata su tutti i server.
Ai fini di questo tutorial, utilizzeremo tre server con la seguente configurazione:
server1 :192.168.0.101
server2 :192.168.0.102
server3 :192.168.0.103
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 18.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 18.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Fase 2 – Installa MariaDB Server su tutti i server
Innanzitutto, aggiungi la chiave del repository MariaDB con il seguente comando:
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Quindi, aggiungi il repository usando il seguente comando:
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
Una volta aggiunto il repository, aggiorna il repository con il seguente comando:
apt-get update -y
Infine, installa il server MariaDB con il seguente comando:
apt-get install mariadb-server -y
A partire dalla versione 10.1, la funzionalità del cluster Galera è inclusa in MariaDB. Il pacchetto MariaDB Galera Server viene installato automaticamente con il server MariaDB.
Puoi configurarlo con il seguente comando:
mysql_secure_installation
Rispondi a tutte le domande, come mostrato di seguito:
Enter current password for root (enter for none): Provide your root user password Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Nota :ripeti i passaggi precedenti su tutti e tre i server.
Fase 3:configurare ogni server nel cluster
A questo punto abbiamo installato e configurato il server MariaDB su ogni server. Successivamente, dovrai configurare il cluster Galera per comunicare tra i server. Per farlo, dovrai creare un file di configurazione comune su ciascun server.
In questa sezione, ti mostreremo come configurare ogni server nel cluster.
Configura il primo server
Innanzitutto, accedi al primo server e crea un file di configurazione di Galera con il seguente comando:
nano /etc/mysql/conf.d/galera.cnf
Aggiungi le seguenti righe (assicurati di inserire i tuoi indirizzi IP del server):
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.101" wsrep_node_name="server1"
Salva e chiudi il file quando hai finito. Successivamente, puoi procedere al secondo server.
Configura il secondo server
Quindi, accedi al secondo server e crea un file di configurazione Galera con il seguente comando:
nano /etc/mysql/conf.d/galera.cnf
Aggiungi le seguenti righe:
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.102" wsrep_node_name="server2"
Salva e chiudi il file quando hai finito. Successivamente, puoi procedere al terzo server.
Configura il terzo server
Quindi, accedi al terzo server e crea un file di configurazione di Galera con il seguente comando:
nano /etc/mysql/conf.d/galera.cnf
Aggiungi le seguenti righe:
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.103" wsrep_node_name="server3"
Salva e chiudi il file quando hai finito.
A questo punto, abbiamo configurato tutti e tre i server per comunicare tra loro.
Fase 4:inizializza il cluster Galera
Prima di avviare il cluster, dovrai interrompere il servizio MariaDB su tutti i server.
Esegui il comando seguente per interrompere il servizio MariaDB su tutti i server.
systemctl stop mariadb
Quindi, inizializza il cluster nel primo nodo con il comando seguente:
galera_new_cluster
Il comando precedente avvierà il cluster e aggiungerà server1 al cluster.
Puoi verificarlo con il seguente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fornisci la tua password di root e premi Invio. Dovresti vedere il seguente output:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
Quindi, vai al secondo server e avvia il servizio MariaDB:
systemctl start mariadb
Successivamente, verifica la dimensione del tuo cluster con il seguente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fornisci la tua password di root e premi Invio. Dovresti vedere che il secondo server si è unito al cluster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
Quindi, vai al terzo server e avvia il servizio MariaDB:
systemctl start mariadb
Successivamente, verifica la dimensione del tuo cluster con il seguente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fornisci la tua password di root e premi Invio. Dovresti vedere che il terzo server si è unito al cluster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
Passaggio 5:verifica della replica del cluster Galera
Il tuo cluster Galera è ora attivo e funzionante. È ora di testare e vedere se la replica funziona.
Per farlo, crea un database sul primo server e controlla se è stato replicato su altri server.
Sul server1, accedi alla shell MySQL con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto, quindi crea un database con il seguente comando:
create database replicadb; create database mydb;
Quindi, esci dalla shell MySQL con il seguente comando:
exit;
Sul server2, accedi alla shell MySQL con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto e controlla se il database esiste.
show databases;
Dovresti ottenere il seguente output:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
Sul server3, accedi alla shell MySQL con il seguente comando:
mysql -u root -p
Fornisci la tua password di root quando richiesto e controlla se il database esiste.
show databases;
Dovresti ottenere il seguente output:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
L'output sopra indica chiaramente che la replica funziona correttamente.
Conclusione
Congratulazioni! Hai installato e configurato correttamente un cluster MariaDB Galera a tre nodi su Ubuntu 18.04 VPS. Ora dovresti avere conoscenze sufficienti per configurare un cluster MariaDB Galera in un ambiente di produzione. Puoi visitare la documentazione di MariaDB Galera per ulteriori informazioni.