Cum se configurează un cluster MariaDB Galera pe Ubuntu 20.04
Configurarea unui cluster MariaDB cu Galera Cluster îmbunătățește fiabilitatea și simplifică scalarea bazei de date. În tutorialul nostru, vă vom arăta cum să instalați un cluster Galera pe Ubuntu 20.04.
Cerințele pentru un cluster Galera MariaDB
Pentru a instala un cluster MariaDB Galera pe Ubuntu 20.04, trebuie să îndepliniți următoarele cerințe:
- Servere multiple: Pentru a crea un cluster sunt necesare cel puțin trei servere sau mașini virtuale. Toate serverele trebuie să se afle în aceeași rețea.
- Drepturi de root: Aveți nevoie de acces root sau cel puțin de drepturi administrative pe servere.
Cum se configurează Galera Cluster MariaDB pe Ubuntu 20.04 pas cu pas
Un cluster MariaDB Galera este o soluție practică de baze de date care oferă disponibilitate ridicată, integritate a datelor și scalabilitate pentru aplicații exigente. În acest ghid pas cu pas, vă vom ghida prin procesul de configurare a unui cluster MariaDB Galera pe Ubuntu 20.04. Înainte de a începe, asigurați-vă că aveți cel puțin trei servere sau mașini virtuale disponibile pentru a configura clusterul.
Pasul 1: Actualizați pachetele
Mai întâi trebuie să actualizați sistemul Ubuntu la cea mai recentă versiune. Acest lucru este esențial pentru a avea pachete și actualizări de securitate la zi.
Deschideți un terminal și executați următoarea comandă pentru a actualiza sursele pachetului:
sudo apt updateshellInstalați toate actualizările disponibile:
sudo apt upgrade -yshellVă recomandăm să eliminați și pachetele învechite sau neutilizate pentru a curăța serverele:
sudo apt autoremove -yshellPasul 2: Instalați MariaDB pe servere
Acum, instalați MariaDB pe toate serverele dvs. Începând cu versiunea 10.1, pachetele Galera sunt incluse în serverele MariaDB.
sudo apt install mariadb-servershellDupă instalare, puteți porni serviciul MariaDB:
sudo systemctl start mariadbshellUtilizați următoarea comandă pentru a seta MariaDB să fie activată automat de fiecare dată când sistemul este repornit:
sudo systemctl enable mariadbshellVerificați dacă MariaDB rulează:
sudo systemctl status mariadbshellDe asemenea, trebuie să efectuați câteva setări de securitate de bază și să configurați baza de date. Pentru a face acest lucru, porniți asistentul de configurare:
sudo mysql_secure_installationshellAsistentul vă ghidează prin pașii necesari, cum ar fi setarea unei parole root, eliminarea utilizatorilor anonimi sau eliminarea bazei de date de testare.
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] YshellScriptul solicită mai întâi parola actuală de root. Dacă instalați MariaDB pe Ubuntu 20.04 pentru prima dată, apăsați pur și simplu Enter și apoi introduceți o nouă parolă.
Pasul 3: Configurați nodurile Galera Cluster MariaDB
Creați un fișier cnf în directorul /etc/mysql/conf.d pe fiecare nod pentru a defini setările specifice Galera.
nano /etc/mysql/conf.d/galera.cnfshellAcest fișier conține setări generale ale bazei de date, cum ar fi formatul protocolului binar și motorul de stocare implicit. De asemenea, conține configurații pentru clusterul Galera, inclusiv numele și adresa clusterului.
Inserați următoarele linii pentru primul nod:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_1-ip-address"
wsrep_node_name="node_1"shell- Setări generale ale bazei de date: Acestea includ setări precum
binlog_format=ROWpentru formatul jurnalelor binare șidefault-storage-engine=innodbpentru motorul de stocare implicit. - Configurația furnizorului Galera: Setări precum
wsrep_on=ONsunt utilizate pentru a activa replicarea Galera șiwsrep_provider=/usr/lib/galera/libgalera_smm.sopentru a specifica calea către biblioteca Galera. - Configurația clusterului Galera: Aceasta include numele clusterului (
wsrep_cluster_name) și adresa clusterului (wsrep_cluster_address), care conține adresele IP sau numele de gazdă ale nodurilor din cluster. - Configurația sincronizării Galera: configurează metoda pentru transferul instantaneului de stare (SST), de exemplu,
wsrep_sst_method=rsync. - Configurația nodului Galera: Definește adresa IP sau numele de gazdă al nodului curent (
wsrep_node_address) și numele nodului (wsrep_node_name).
După ce ați salvat fișierul, creați unul pentru al doilea nod:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_2-ip-address"
wsrep_node_name="node_2"shellAcum continuați cu ultimul nod:
[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://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_3-ip-address"
wsrep_node_name="node_3"shellPasul 4: Modificați firewall-ul pe servere
Deoarece nodurile comunică între ele prin porturi specifice, trebuie să ajustați setările firewall-ului.
Deschideți următoarele porturi în firewall:
- Portul 3306: Acesta este portul standard pentru MariaDB. Este utilizat pentru comunicarea și solicitările bazei de date.
- Porturi Galera: În plus față de portul standard 3306, Galera utilizează și alte porturi pentru comunicarea internă între noduri. Intervalul standard pentru porturile Galera este de obicei 4567, 4568 și 4444 pentru State Snapshot Transfer (SST).
Puteți defini setările firewall-ului pe serverul Ubuntu cu următoarea comandă:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellPasul 5: Porniți Galera Cluster MariaDB
Opriți serviciul MariaDB dacă acesta rulează deja:
sudo systemctl stop mariadbshellAceastă comandă pornește serverul MariaDB și inițializează un nou cluster Galera pe primul nod:
sudo galera_new_clustershellVerificați numărul de noduri din cluster:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellAr trebui să obțineți următorul rezultat:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellPrimul nod a fost pornit cu succes.
Activați al doilea nod:
systemctl start mariadbshellVerificați dacă numărul de noduri a crescut:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellÎn consolă vedem:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellAcum începem al treilea nod:
systemctl start mariadbshellVerificați dacă nodul funcționează corect:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellAcum ar trebui să existe trei noduri în cluster:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellPasul 6: Testați replicarea
Asigurați-vă că puteți stabili o conexiune cu fiecare nod din cluster. Utilizați clientul MariaDB pentru a vă conecta ca utilizator root sau ca alt utilizator cu drepturi suficiente.
mysql -u root -pshellCreați o nouă bază de date de testare pe unul dintre nodurile din cluster:
CREATE DATABASE test_db;sqlConectați-vă la celelalte noduri și verificați dacă baza de date de testare este disponibilă:
SHOW DATABASES;sqlBaza de date de testare ar trebui să apară în lista bazelor de date:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlAdăugați un nou tabel de testare la baza de date de testare:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlIntroduceți câteva date de test în coloana name a tabelului de testare:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlVerificați celelalte noduri pentru a vedea dacă tabelul de testare și datele inserate au fost transferate:
USE test_db;
SELECT * FROM test_table;sqlRezultatul ne arată lista persoanelor cu numele și ID-ul lor:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlPentru a actualiza o înregistrare de date în tabelul de testare:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlÎncercați să ștergeți o înregistrare de date:
DELETE FROM test_table WHERE name = 'Bob';sqlVerificați celelalte noduri pentru a vedea dacă actualizările și ștergerile au fost replicate:
SELECT * FROM test_table;sqlModificările apar cu succes pe fiecare nod:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql