GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare MariaDB Galera Cluster su Ubuntu 16.04

MariaDB Galera è un cluster multimaster per MariaDB. Da MariaDB 10.1, i pacchetti MariaDB Server e MariaDB Galera Server sono stati combinati e i pacchetti Galera e le relative dipendenze vengono installati automaticamente durante l'installazione di MariaDB. Attualmente, MariaDB Galera Cluster supporta solo il motore di archiviazione InnoDB/XtraDB. In MariaDB 10.0 e 5.5, dovrai scaricarlo separatamente. MariaDB Galera aggiunge la ridondanza per il database di un sito. In MariaDB Galera Cluster, più server di database sono interconnessi tra loro e si mantengono sincronizzati.

MariaDB Galera offre molte funzionalità, alcune delle quali sono elencate di seguito:

  1. Replica sincrona.
  2. Unione automatica del nodo.
  3. Topologia multimaster attiva-attiva.
  4. Replicazione parallela reale, a livello di riga.
  5. Scalabilità in lettura e scrittura, latenze client ridotte.
  6. Nodi falliti, eliminazione automatica dal cluster.

In questo tutorial, spiegheremo come configurare MariaDB Galera Cluster 10.1 con 3 nodi in esecuzione sul server Ubuntu 16.04. Verificheremo anche la replica del database tra tutti i nodi.

Requisiti

  • Tre nodi che eseguono il server Ubuntu 16.04.
  • Nodo1 con indirizzo IP statico 192.168.0.102, Nodo2 con indirizzo IP statico 192.168.0.103 e Nodo3 con indirizzo IP statico 192.168.0.104 configura sul tuo server.
  • Utente non root con configurazione dei privilegi sudo su tutti i nodi.

Per iniziare

Innanzitutto, dovrai aggiornare tutti i nodi con l'ultima versione. Puoi aggiornarli tutti con il seguente comando:

sudo apt-get update -y
sudo apt-get upgrade -y

Quindi, riavvia tutti i nodi per applicare queste modifiche. Quindi, accedi con l'utente sudo e procedi al passaggio successivo.

Installa MariaDB Galera

I pacchetti MariaDB Server e MariaDB Galera Server sono combinati nella versione MariaDB 10.1. Per impostazione predefinita, MariaDB 10.1 non è disponibile nei repository Ubuntu predefiniti, quindi dovrai aggiungere il repository MariaDB su tutti i nodi.

Innanzitutto, aggiungi la chiave del repository MariaDB con il seguente comando:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Quindi, aggiungi il repository e aggiorna la cache APT con il seguente comando:

sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y

Una volta aggiornato il repository, installa MariaDB con il seguente comando:

sudo apt-get install mariadb-server rsync -y

Il comando precedente installerà MariaDB con Galera e diverse dipendenze. Le parti Galera rimangono inattive fino a quando non vengono configurate, come un plug-in o un motore di archiviazione. Una volta installato MariaDB su tutti i nodi, puoi procedere alla protezione di MariaDB.

Per impostazione predefinita, l'installazione di MariaDB non è protetta, quindi sarà necessario proteggere l'installazione di MariaDB. Puoi farlo eseguendo lo script mysql_secure_installation:

sudo mysql_secure_installation

In questo processo, ti verrà chiesto di impostare la password di root, rimuovere gli utenti anonimi, impedire l'accesso come root in remoto e rimuovere il database di test. Rispondi a tutte le domande come mostrato di seguito:

Enter current password for root (enter for none):
Change the root password? [Y/n] n
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 MariaDB è protetto su tutti i nodi, puoi procedere al passaggio successivo.

Impostazione del cluster MariaDB su Node1

Per prima cosa, vai su Node1 e crea un file di configurazione per Galera. Per impostazione predefinita, MariaDB legge la configurazione dalla directory /etc/mysql/conf.d/. Per farlo, esegui il seguente comando:

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.102"
wsrep_node_name="Node1"

Salva il file quando hai finito.

Nota: 192.168.0.102 è l'indirizzo IP del Nodo1

Aggiungi Node2 su Galera Cluster

Quindi, vai su Node2 e crea un file di configurazione per Galera:

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.103"
wsrep_node_name="Node2"

Salva il file quando hai finito.

Nota: 192.168.0.103 è l'indirizzo IP del Node2.

Aggiungi Node3 su Galera Cluster

Quindi, vai su Node3 e crea un file di configurazione per Galera:

sudo 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.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.104"
wsrep_node_name="Node3"

Salva il file quando hai finito.

Nota: 192.168.0.104 è l'indirizzo IP del Node3.

Configura Firewall

Galera Cluster utilizza quattro porte 3306 per la connessione client MySQL, 4444 per State Snapshot Transfer, 4567 per il traffico di replica Galera Cluster e 4568 per Incremental State Transfer. Quindi dovrai consentire tutte queste porte usando il firewall UFW. Puoi farlo eseguendo il seguente comando su tutti i nodi:

Innanzitutto, abilita il firewall UFW con il seguente comando:

sudo ufw enable

Quindi, consenti tutte le porte con il seguente comando:

sudo ufw allow 3306/tcp
sudo ufw allow 4444/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4568/tcp
sudo ufw allow 4567/udp

È quindi possibile verificare lo stato del firewall con il seguente comando:

sudo ufw status

Una volta configurato il firewall UFW su tutti i nodi, puoi procedere al passaggio successivo.

Avvia il cluster MariaDB Galera

Dopo aver configurato correttamente tutti i nodi, vai su Node1 e avvia Galera Cluster.

Prima che Galera possa iniziare, devi assicurarti che il servizio MariaDB sia interrotto su tutti i nodi.

Esegui il seguente comando su tutti i nodi:

sudo systemctl stop mysql

Ora avvia il Cluster Galera su Node1 con il seguente comando:

sudo galera_new_cluster

Ora controlla se il cluster è in esecuzione o meno con il seguente comando:

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Se tutto va bene dovresti vedere il seguente output:

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

Sul Node2, avvia il servizio MariaDB:

sudo systemctl start mysql

Puoi controllare lo stato del servizio MariaDB se funziona o meno con il seguente comando:

sudo systemctl status mysql

Se tutto va bene, dovresti vedere il seguente output:

?? mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-09-17 10:11:20 EDT; 10min ago
  Process: 715 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 713 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 545 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set
  Process: 535 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 514 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 661 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 26 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           ??????661 /usr/sbin/mysqld

Sep 17 10:11:11 debian systemd[1]: Starting MariaDB database server...
Sep 17 10:11:15 debian mysqld[661]: 2017-09-17 10:11:15 140287134630464 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process
Sep 17 10:11:20 debian systemd[1]: Started MariaDB database server.

Ora, il tuo secondo nodo dovrebbe essere collegato automaticamente al cluster. Puoi verificarlo con il seguente comando:

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Se tutto funziona correttamente, la dimensione del cluster dovrebbe essere impostata su due:

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

Sul Node3, avvia il servizio MariaDB:

sudo systemctl start mysql
mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Se tutto funziona correttamente, la dimensione del cluster dovrebbe essere impostata su tre:

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

Il tuo cluster ora sta lavorando e comunicando tra loro.

Test replica database

Ora, tutti i nodi sono online, è il momento di testare la replica del database nel cluster Galera. Iniziamo creando un database su Node1 e controlliamo se è replicato su tutti i nodi.

Innanzitutto, accedi alla console di MariaDb con il seguente comando:

mysql -u root -p

Inserisci la tua password di root e crea un database con nome test_db:

MariaDB [(none)]> create database test_db;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

Ora vai su Node2 e Node3, quindi controlla che la replica funzioni o meno:

mysql -u root -p
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

Congratulazioni! hai installato e configurato correttamente MariaDB Galera Cluster sul server Ubuntu 16.04.

Conclusione

Spero che ora tu abbia abbastanza conoscenze per installare e configurare MariaDB Galera Cluster su Ubuntu 16.04. Ora puoi facilmente scalare fino a diversi, o addirittura dozzine, di nodi distinti. In caso di dubbi o ulteriori domande, fare riferimento al link Galera Cluster Doc


Ubuntu
  1. Come installare MariaDB 10.4 su Ubuntu 18.04

  2. Come installare MariaDB su Ubuntu 18.04

  3. Come configurare MariaDB Galera Cluster su Ubuntu 20.04

  4. Come installare LiteCart su Ubuntu 15.04

  5. Come installare e configurare MariaDB Galera Cluster su Ubuntu 18.04

Come installare PHPList su Ubuntu 15.04

Come installare ImpressCMS su Ubuntu 15.04

Come installare Nextcloud su Ubuntu 16.04

Come installare Mahara su Ubuntu 16.04

Come installare MariaDB su Ubuntu 16.04

Come installare MariaDB su Ubuntu