Kako nastaviti MariaDB Galera cluster na Ubuntu 20.04
Nastavitev MariaDB-sklopa z Galera Cluster izboljša zanesljivost in poenostavi skaliranje 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 namestitev MariaDB Galera klastra na Ubuntu 20.04 morate izpolniti naslednje zahteve:
- Več strežnikov: Za vzpostavitev gruče je potrebnih vsaj tri strežnike ali virtualne stroje. Vsi strežniki morajo biti v istem omrežju.
- Pravice root: Potrebujete root dostop ali vsaj administrativne pravice na strežnikih.
Kako korak za korakom nastaviti Galera Cluster MariaDB na Ubuntu 20.04
MariaDB Galera cluster je praktična rešitev za baze podatkov, ki zagotavlja visoko razpoložljivost, celovitost podatkov in skalabilnost za zahtevne aplikacije. V tem podrobnem vodniku vas bomo popeljali skozi proces nastavitve MariaDB Galera clusterja na Ubuntu 20.04. Preden začnete, se prepričajte, da imate na voljo vsaj tri strežnike ali virtualne stroje za nastavitev clusterja.
Korak 1: Posodobite pakete
Najprej posodobite svoj sistem Ubuntu na najnovejšo različico. To je nujno, da boste imeli najnovejše pakete in varnostne posodobitve.
Odprite terminal in izvedite naslednji ukaz, da posodobite vire paketov:
sudo apt updateshellNamestite vse razpoložljive posodobitve:
sudo apt upgrade -yshellPriporočamo tudi odstranitev zastarelih ali neuporabljanih paketov, da se strežniki očistijo:
sudo apt autoremove -yshellKorak 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žnikom MariaDB.
sudo apt install mariadb-servershellPo namestitvi lahko zaženete storitev MariaDB:
sudo systemctl start mariadbshellUporabite naslednji ukaz, da nastavite MariaDB tako, da se samodejno aktivira ob vsakem ponovnem zagonu sistema:
sudo systemctl enable mariadbshellPreverite, ali MariaDB deluje:
sudo systemctl status mariadbshellPrav tako morate opraviti nekaj osnovnih varnostnih nastavitev in konfigurirati bazo podatkov. Za to zaženite čarovnika za nastavitev:
sudo mysql_secure_installationshellČarovnik vas vodi skozi posamezne korake, kot so nastavitev gesla za korenski uporabnik, odstranitev anonimnih uporabnikov ali odstranitev 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] YshellScenarij najprej zahteva trenutno geslo za root. Če MariaDB namestite na Ubuntu 20.04 prvič, preprosto pritisnite Enter in nato vnesite novo geslo.
Korak 3: Konfigurirajte vozlišča Galera Cluster MariaDB
V vsakem vozlišču ustvarite datoteko cnf v imeniku /etc/mysql/conf.d, da opredelite nastavitve, specifične za Galero.
nano /etc/mysql/conf.d/galera.cnfshellTa datoteka vsebuje splošne nastavitve baze podatkov, kot so format binarnega protokola in privzeti shranjevalni mehanizem. Vsebuje tudi konfiguracije 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 nastavitve baze podatkov: To vključuje nastavitve, kot so
binlog_format=ROWza format binarnih dnevnikov indefault-storage-engine=innodbza privzeti shranjevalni mehanizem. - Konfiguracija ponudnika Galera: Nastavitve, kot je
wsrep_on=ON, se uporabljajo za omogočanje replikacije Galera,wsrep_provider=/usr/lib/galera/libgalera_smm.sopa za določitev poti do knjižnice Galera. - Konfiguracija Galera klastra: To vključuje ime klastra (
wsrep_cluster_name) in naslov klastra (wsrep_cluster_address), ki vsebuje IP naslove ali imena gostiteljev vozlišč v klastru. - Konfiguracija sinhronizacije Galera: Konfigurira metodo za prenos stanja (SST), npr.
wsrep_sst_method=rsync. - Konfiguracija vozlišča Galera: Določa IP naslov ali ime gostitelja trenutnega 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"shellSedaj nadaljujte 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"shellKorak 4: Spremenite požarni zid na strežnikih
Ker vozlišča komunicirajo med seboj prek posebnih vrat, morate prilagoditi nastavitve požarnega zidu.
Odprite naslednje vrata v požarnem zidu:
- Vrata 3306: To so standardna vrata za MariaDB. Uporabljajo se za komunikacijo in zahteve baze podatkov.
- Vrata Galera: Poleg standardnega vrat 3306 Galera uporablja tudi druga vrata za notranjo komunikacijo med vozlišči. Standardni razpon za vrata Galera je običajno 4567, 4568 in 4444 za prenos stanja (SST).
Nastavitve požarnega zidu na strežniku Ubuntu lahko določite z naslednjim ukazom:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellKorak 5: Zaženite Galera Cluster MariaDB
Ustavite storitev MariaDB, če že teče:
sudo systemctl stop mariadbshellTa ukaz zažene strežnik MariaDB in inicializira nov Galera cluster na prvem vozlišču:
sudo galera_new_clustershellPreverite število vozlišč v gruči:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellPrejeli boste naslednji izpis:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellPrvi vozlišče je bil uspešno zagnan.
Aktivirajte drugi vozlišče:
systemctl start mariadbshellPreverite, ali se je število vozlišč povečalo:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV konzoli vidimo:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellSedaj začnemo tretji vozlišče:
systemctl start mariadbshellPreverite, ali vozlišče deluje pravilno:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellV gruči naj bi bilo zdaj tri vozlišča:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellKorak 6: Preizkusite replikacijo
Prepričajte se, da lahko vzpostavite povezavo z vsakim vozliščem v gruči. Uporabite odjemalca MariaDB, da se prijavite kot uporabnik root ali drug uporabnik z zadostnimi pravicami.
mysql -u root -pshellUstvarite novo testno bazo podatkov na enem od vozlišč v gruči:
CREATE DATABASE test_db;sqlPrijavite se v druge vozlišča in preverite, ali je testna baza podatkov na voljo:
SHOW DATABASES;sqlTestna baza podatkov se mora pojaviti na seznamu baz podatkov:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlDodajte novo testno tabelo v testno bazo podatkov:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlVnesite nekaj testnih podatkov v stolpec name testne tabele:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlPreverite druge vozlišča, da vidite, ali so bili preneseni testna tabela in vstavljeni podatki:
USE test_db;
SELECT * FROM test_table;sqlIzpis nam prikaže seznam oseb z njihovimi imeni in identifikacijskimi številkami:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlZa posodobitev zapisa podatkov v testni tabeli:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlPoskusite izbrisati zapis podatkov:
DELETE FROM test_table WHERE name = 'Bob';sqlPreverite druge vozlišča, da vidite, ali so bile posodobitve in izbrisani podatki replicirajo:
SELECT * FROM test_table;sqlSpremembe se uspešno prikažejo na vsakem vozlišču:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql