Na­sta­vi­tev MariaDB-sklopa z Galera Cluster izboljša za­ne­slji­vost in po­e­no­sta­vi ska­li­ra­nje vaše zbirke podatkov. V našem vodiču vam bomo pokazali, kako namestiti Galera Cluster na Ubuntu 20.04.

Zahteve za Galera Cluster MariaDB

Za na­me­sti­tev MariaDB Galera klastra na Ubuntu 20.04 morate izpolniti naslednje zahteve:

  • Več stre­žni­kov: Za vzpo­sta­vi­tev gruče je potrebnih vsaj tri strežnike ali virtualne stroje. Vsi strežniki morajo biti v istem omrežju.
  • Pravice root: Po­tre­bu­je­te root dostop ali vsaj ad­mi­ni­stra­tiv­ne pravice na stre­žni­kih.

Kako korak za korakom nastaviti Galera Cluster MariaDB na Ubuntu 20.04

MariaDB Galera cluster je praktična rešitev za baze podatkov, ki za­go­ta­vlja visoko raz­po­lo­žlji­vost, ce­lo­vi­tost podatkov in ska­la­bil­nost za zahtevne apli­ka­ci­je. V tem podrobnem vodniku vas bomo popeljali skozi proces na­sta­vi­tve MariaDB Galera clusterja na Ubuntu 20.04. Preden začnete, se pre­pri­čaj­te, da imate na voljo vsaj tri strežnike ali virtualne stroje za na­sta­vi­tev clusterja.

Korak 1: Po­so­do­bi­te pakete

Najprej po­so­do­bi­te svoj sistem Ubuntu na naj­no­vej­šo različico. To je nujno, da boste imeli naj­no­vej­še pakete in varnostne po­so­do­bi­tve.

Odprite terminal in izvedite naslednji ukaz, da po­so­do­bi­te vire paketov:

sudo apt update
shell

Namestite vse raz­po­lo­žlji­ve po­so­do­bi­tve:

sudo apt upgrade -y
shell

Pri­po­ro­ča­mo tudi od­stra­ni­tev za­sta­re­lih ali ne­u­po­ra­blja­nih paketov, da se strežniki očistijo:

sudo apt autoremove -y
shell

Korak 2: Namestite MariaDB na strežnike

Sedaj namestite MariaDB na vse svoje strežnike. Od različice 10.1 naprej so paketi Galera priloženi stre­žni­kom MariaDB.

sudo apt install mariadb-server
shell

Po na­me­sti­tvi lahko zaženete storitev MariaDB:

sudo systemctl start mariadb
shell

Uporabite naslednji ukaz, da nastavite MariaDB tako, da se samodejno aktivira ob vsakem ponovnem zagonu sistema:

sudo systemctl enable mariadb
shell

Preverite, ali MariaDB deluje:

sudo systemctl status mariadb
shell

Prav tako morate opraviti nekaj osnovnih var­no­stnih na­sta­vi­tev in kon­fi­gu­ri­ra­ti bazo podatkov. Za to zaženite čarovnika za na­sta­vi­tev:

sudo mysql_secure_installation
shell

Čarovnik vas vodi skozi posamezne korake, kot so na­sta­vi­tev gesla za korenski uporabnik, od­stra­ni­tev anonimnih upo­rab­ni­kov ali od­stra­ni­tev testne zbirke podatkov.

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
shell

Scenarij najprej zahteva trenutno geslo za root. Če MariaDB namestite na Ubuntu 20.04 prvič, preprosto pri­ti­sni­te Enter in nato vnesite novo geslo.

Korak 3: Kon­fi­gu­ri­raj­te vozlišča Galera Cluster MariaDB

V vsakem vozlišču ustvarite datoteko cnf v imeniku /etc/mysql/conf.d, da opre­de­li­te na­sta­vi­tve, spe­ci­fič­ne za Galero.

nano /etc/mysql/conf.d/galera.cnf
shell

Ta datoteka vsebuje splošne na­sta­vi­tve baze podatkov, kot so format binarnega protokola in privzeti shra­nje­val­ni mehanizem. Vsebuje tudi kon­fi­gu­ra­ci­je za Galera cluster, vključno z imenom in naslovom clusterja.

Vstavi naslednje vrstice za prvo vozlišče:

[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
  • Splošne na­sta­vi­tve baze podatkov: To vključuje na­sta­vi­tve, kot so binlog_format=ROW za format binarnih dnevnikov in default-storage-engine=innodb za privzeti shra­nje­val­ni mehanizem.
  • Kon­fi­gu­ra­ci­ja ponudnika Galera: Na­sta­vi­tve, kot je wsrep_on=ON, se upo­ra­blja­jo za omo­go­ča­nje re­pli­ka­ci­je Galera, wsrep_provider=/usr/lib/galera/libgalera_smm.so pa za določitev poti do knjižnice Galera.
  • Kon­fi­gu­ra­ci­ja Galera klastra: To vključuje ime klastra (wsrep_cluster_name) in naslov klastra (wsrep_cluster_address), ki vsebuje IP naslove ali imena go­sti­te­ljev vozlišč v klastru.
  • Kon­fi­gu­ra­ci­ja sin­hro­ni­za­ci­je Galera: Kon­fi­gu­ri­ra metodo za prenos stanja (SST), npr. wsrep_sst_method=rsync.
  • Kon­fi­gu­ra­ci­ja vozlišča Galera: Določa IP naslov ali ime go­sti­te­lja tre­nu­tne­ga vozlišča (wsrep_node_address) in ime vozlišča (wsrep_node_name).

Ko shranite datoteko, ustvarite datoteko za drugi vozlišče:

[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"
shell

Sedaj na­da­ljuj­te z zadnjim vozliščem:

[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"
shell

Korak 4: Spre­me­ni­te požarni zid na stre­žni­kih

Ker vozlišča ko­mu­ni­ci­ra­jo med seboj prek posebnih vrat, morate pri­la­go­di­ti na­sta­vi­tve požarnega zidu.

Odprite naslednje vrata v požarnem zidu:

  • Vrata 3306: To so stan­dar­dna vrata za MariaDB. Upo­ra­blja­jo se za ko­mu­ni­ka­ci­jo in zahteve baze podatkov.
  • Vrata Galera: Poleg stan­dar­dne­ga vrat 3306 Galera uporablja tudi druga vrata za notranjo ko­mu­ni­ka­ci­jo med vozlišči. Stan­dar­dni razpon za vrata Galera je običajno 4567, 4568 in 4444 za prenos stanja (SST).

Na­sta­vi­tve požarnega zidu na strežniku Ubuntu lahko določite z na­sle­dnjim ukazom:

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

Korak 5: Zaženite Galera Cluster MariaDB

Ustavite storitev MariaDB, če že teče:

sudo systemctl stop mariadb
shell

Ta ukaz zažene strežnik MariaDB in ini­ci­a­li­zi­ra nov Galera cluster na prvem vozlišču:

sudo galera_new_cluster
shell

Preverite število vozlišč v gruči:

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

Prejeli boste naslednji izpis:

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

Prvi vozlišče je bil uspešno zagnan.

Ak­ti­vi­raj­te drugi vozlišče:

systemctl start mariadb
shell

Preverite, ali se je število vozlišč povečalo:

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

V konzoli vidimo:

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

Sedaj začnemo tretji vozlišče:

systemctl start mariadb
shell

Preverite, ali vozlišče deluje pravilno:

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

V gruči naj bi bilo zdaj tri vozlišča:

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

Korak 6: Pre­iz­ku­si­te re­pli­ka­ci­jo

Pre­pri­čaj­te se, da lahko vzpo­sta­vi­te povezavo z vsakim vozliščem v gruči. Uporabite odjemalca MariaDB, da se prijavite kot uporabnik root ali drug uporabnik z za­do­stni­mi pravicami.

mysql -u root -p
shell

Ustvarite novo testno bazo podatkov na enem od vozlišč v gruči:

CREATE DATABASE test_db;
sql

Prijavite se v druge vozlišča in preverite, ali je testna baza podatkov na voljo:

SHOW DATABASES;
sql

Testna baza podatkov se mora pojaviti na seznamu baz podatkov:

+-------------------------------+
| Database                        |
+-------------------------------+
| information_schema   |
| mysql                              |
| performance_schema |
| test_db                          | 
| sys                                  |
+------------------------------+
sql

Dodajte novo testno tabelo v testno bazo podatkov:

USE test_db;
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);
sql

Vnesite nekaj testnih podatkov v stolpec name testne tabele:

INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');
sql

Preverite druge vozlišča, da vidite, ali so bili preneseni testna tabela in vsta­vlje­ni podatki:

USE test_db;
SELECT * FROM test_table;
sql

Izpis nam prikaže seznam oseb z njihovimi imeni in iden­ti­fi­ka­cij­ski­mi šte­vil­ka­mi:

+----+-----------+
| id | name    |
+----+-----------+
| 1  | Alice     |
| 2  | Bob       |
| 3  | Charlie |
+----+----------+
sql

Za po­so­do­bi­tev zapisa podatkov v testni tabeli:

UPDATE test_table SET name = 'David' WHERE name = 'Alice';
sql

Poskusite izbrisati zapis podatkov:

DELETE FROM test_table WHERE name = 'Bob';
sql

Preverite druge vozlišča, da vidite, ali so bile po­so­do­bi­tve in izbrisani podatki re­pli­ci­ra­jo:

SELECT * FROM test_table;
sql

Spremembe se uspešno prikažejo na vsakem vozlišču:

+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
sql
Go to Main Menu