Ricerca nel sito web

Come configurare MariaDB Galera Cluster su Ubuntu 20.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 16.04 (Xenial Xerus)

Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa il server MariaDB
  4. Configura Galera Cluster
  5. Inizializza il cluster Galera
  6. Verifica replica cluster
  7. Conclusione

Il bilanciamento del carico e il clustering sono molto importanti in un ambiente di produzione per ottenere un'elevata disponibilità per il sistema di database. MariaDB Galera Cluster fornisce una soluzione di clustering multi-master e supporta i motori di archiviazione XtraDB/InnoDB. Un cluster multi-master consente la lettura e la scrittura su qualsiasi nodo del cluster. Se modifichi i dati su qualsiasi nodo, vengono replicati su tutti gli altri nodi. Il cluster Galera supporta anche ambienti cloud e WAN per creare un cluster distribuito tra paesi e continenti.

In questo post, mostreremo come configurare un cluster MariaDB Galera a tre nodi sul server Ubuntu 20.04.

Prerequisiti

  • Tre server con Ubuntu 20.04.
  • Sul server è configurata una password di root.

Iniziare

Prima di iniziare, dovrai aggiornare i tuoi pacchetti di sistema all'ultima versione. Puoi aggiornarli usando il seguente comando:

apt-get update -y

Una volta aggiornato il server, puoi procedere al passaggio successivo.

Installa il server MariaDB

Innanzitutto, dovrai installare il server MariaDB su tutti i nodi. Puoi installarlo eseguendo il seguente comando:

apt-get install mariadb-server -y

Una volta terminata l'installazione, avvia il servizio MariaDB e abilitali all'avvio al riavvio del sistema:

systemctl start mariadb
systemctl status mariadb

Successivamente, dovrai proteggere l'installazione di MariaDB e impostare una password di root MariaDB su ciascun nodo. Puoi farlo con il seguente comando:

mysql_secure_installation

Ti verrà chiesto di impostare una password di root MariaDB come mostrato di seguito:

Enter current password for root (enter for none): 
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

Una volta che il tuo server MariaDB è protetto, puoi procedere al passaggio successivo.

Configura Galera Cluster

Successivamente, dovrai creare un file di configurazione Galera su ciascun nodo in modo che ciascun nodo possa comunicare tra loro.

Sul primo nodo, crea un file galera.cnf utilizzando 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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node1-ip-address"
wsrep_node_name="node1"

Salva e chiudi il file quando hai finito.

Sul secondo nodo, crea un file galera.cnf usando 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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node2-ip-address"
wsrep_node_name="node2"

Salva e chiudi il file quando hai finito.

Sul terzo nodo, crea un file galera.cnf usando 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://node1-ip-address,node2-ip-address,node3-ip-address"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="node3-ip-address"
wsrep_node_name="node3"

Salva e chiudi il file quando hai finito.

Inizializza il cluster Galera

A questo punto, tutti i nodi sono configurati per comunicare tra loro.

Successivamente, dovrai interrompere il servizio MariaDB su tutti i nodi. Puoi eseguire il seguente comando per arrestare il servizio MariaDB:

systemctl stop mariadb

Sul primo nodo, inizializza il cluster MariaDB Galera con il seguente comando:

galera_new_cluster

Ora controlla lo stato del cluster con il seguente comando:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Dovresti vedere il seguente output:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

Sul secondo nodo, avvia il servizio MariaDB con il seguente comando:

systemctl start mariadb

Successivamente, controlla lo stato del cluster MariaDB Galera con il seguente comando:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Dovresti vedere il seguente output:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

Sul terzo nodo, avvia il servizio MariaDB con il seguente comando:

systemctl start mariadb

Successivamente, controlla lo stato del cluster MariaDB Galera con il seguente comando:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Dovresti vedere il seguente output:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

A questo punto viene inizializzato il cluster MariaDB Galera. Ora puoi procedere al passaggio successivo.

Verificare la replica del cluster

Successivamente, dovrai verificare se la replica funziona o meno.

Sul primo nodo, connettiti a MariaDB con il seguente comando:

mysql -u root -p

Una volta connesso, crea un database con il seguente comando:

MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;

Successivamente, esci da MariaDB con il seguente comando:

MariaDB [(none)]> exit;

Successivamente, vai al secondo nodo e accedi a MariaDB con il seguente comando:

mysql -u root -p

Quindi, esegui il seguente comando per mostrare tutti i database:

MariaDB [(none)]> show databases;

Dovresti vedere che entrambi i database che abbiamo creato sul primo nodo sono replicati sul secondo nodo:

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Successivamente, vai al terzo nodo e accedi a MariaDB con il seguente comando:

mysql -u root -p

Quindi, esegui il seguente comando per mostrare tutti i database:

MariaDB [(none)]> show databases;

Dovresti vedere che entrambi i database che abbiamo creato sul primo nodo sono replicati sul terzo nodo:

+--------------------+
| Database           |
+--------------------+
| db1                |
| db2                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)

Conclusione

Nella guida sopra, abbiamo imparato come configurare un cluster MariaDB Galera a tre nodi sul server Ubuntu 20.04. Ora puoi aggiungere facilmente più nodi al cluster MariaDB Galera. Non esitate a chiedermi se avete domande.