Hvordan sette opp en MariaDB Galera-klynge på Ubuntu 20.04
Å sette opp en MariaDB-klynge med Galera Cluster forbedrer påliteligheten og forenkler skaleringen av databasen din. I vår veiledning viser vi deg hvordan du installerer en Galera-klynge på Ubuntu 20.04.
Kravene til en Galera Cluster MariaDB
For å installere en MariaDB Galera-klynge på Ubuntu 20.04 må du oppfylle følgende krav:
- Flere servere: Det kreves minst tre servere eller virtuelle maskiner for å bygge en klynge. Alle servere må være på samme nettverk.
- Root-rettigheter: Du trenger root-tilgang eller minst administratorrettigheter på serverne.
Hvordan konfigurere Galera Cluster MariaDB på Ubuntu 20.04 trinn for trinn
En MariaDB Galera-klynge er en praktisk databaseløsning som gir høy tilgjengelighet, dataintegritet og skalerbarhet for krevende applikasjoner. I denne trinnvise veiledningen vil vi gå gjennom prosessen med å konfigurere en MariaDB Galera-klynge på Ubuntu 20.04. Før du begynner, må du sørge for at du har minst tre servere eller virtuelle maskiner tilgjengelig for å konfigurere klyngen.
Trinn 1: Oppdater pakker
Du bør først oppdatere Ubuntu-systemet til den nyeste versjonen. Dette er viktig for at du skal ha oppdaterte pakker og sikkerhetsoppdateringer.
Åpne en terminal og utfør følgende kommando for å oppdatere pakkekildene:
sudo apt updateshellInstaller alle tilgjengelige oppdateringer:
sudo apt upgrade -yshellVi anbefaler også å fjerne utdaterte eller ubrukte pakker for å rydde opp i serverne:
sudo apt autoremove -yshellTrinn 2: Installer MariaDB på serverne
Nå kan du installere MariaDB på alle serverne dine. Fra versjon 10.1 er Galera-pakkene inkludert i MariaDB-serverne.
sudo apt install mariadb-servershellEtter installasjonen kan du starte MariaDB-tjenesten:
sudo systemctl start mariadbshellBruk følgende kommando for å angi at MariaDB skal aktiveres automatisk hver gang systemet startes på nytt:
sudo systemctl enable mariadbshellKontroller om MariaDB kjører:
sudo systemctl status mariadbshellDu bør også foreta noen grunnleggende sikkerhetsinnstillinger og konfigurere databasen. For å gjøre dette, start installasjonsveiviseren:
sudo mysql_secure_installationshellVeiviseren guider deg gjennom trinnene, for eksempel å angi et root-passord, fjerne anonyme brukere eller fjerne testdatabasen.
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] YshellSkriptet ber først om det gjeldende root-passordet. Hvis du installerer MariaDB på Ubuntu 20.04 for første gang, trykker du bare Enter og skriver inn et nytt passord.
Trinn 3: Konfigurer Galera Cluster MariaDB-noder
Opprett en cnf -fil i katalogen /etc/mysql/conf.d på hver node for å definere Galera-spesifikke innstillinger.
nano /etc/mysql/conf.d/galera.cnfshellDenne filen inneholder generelle databaseinnstillinger, for eksempel binærprotokollformat og standard lagringsmotor. Den inneholder også konfigurasjoner for Galera-klyngen, inkludert klyngenavnet og klyngeadressen.
Sett inn følgende linjer for den første noden:
[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- Generelle databaseinnstillinger: Dette inkluderer innstillinger som
binlog_format=ROWfor formatet på binærloggene ogdefault-storage-engine=innodbfor standard lagringsmotor. - Galera-leverandørkonfigurasjon: Innstillinger som
wsrep_on=ONbrukes til å aktivere Galera-replikering ogwsrep_provider=/usr/lib/galera/libgalera_smm.sotil å angi banen til Galera-biblioteket. - Galera-klyngekonfigurasjon: Dette inkluderer klyngenavnet (
wsrep_cluster_name) og klyngeadressen (wsrep_cluster_address), som inneholder IP-adressene eller vertsnavnene til nodene i klyngen. - Galera-synkroniseringskonfigurasjon: Konfigurerer metoden for State Snapshot Transfer (SST), f.eks.
wsrep_sst_method=rsync. - Galera-nodekonfigurasjon: Definerer IP-adressen eller vertsnavnet til den aktuelle noden (
wsrep_node_address) og navnet på noden (wsrep_node_name).
Etter at du har lagret filen, oppretter du en for den andre noden:
[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"shellFortsett nå med den siste noden:
[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"shellTrinn 4: Endre brannmuren på serverne
Siden nodene kommuniserer med hverandre via bestemte porter, må du justere brannmurinnstillingene.
Åpne følgende porter i brannmuren din:
- Port 3306: Dette er standardporten for MariaDB. Den brukes til databasekommunikasjon og forespørsler.
- Galera-porter: I tillegg til standardporten 3306 bruker Galera også andre porter for intern kommunikasjon mellom nodene. Standardområdet for Galera-porter er vanligvis 4567, 4568 og 4444 for State Snapshot Transfer (SST).
Du kan definere brannmurinnstillingene på Ubuntu-serveren din med følgende kommando:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellTrinn 5: Start Galera Cluster MariaDB
Stopp MariaDB-tjenesten hvis den allerede kjører:
sudo systemctl stop mariadbshellDenne kommandoen starter MariaDB-serveren og initialiserer en ny Galera-klynge på den første noden:
sudo galera_new_clustershellKontroller antall noder i klyngen:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDu bør få følgende utdata:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellDen første noden ble startet uten problemer.
Aktiver den andre noden:
systemctl start mariadbshellKontroller om antall noder har økt:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellI konsollen ser vi:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellNå starter vi den tredje noden:
systemctl start mariadbshellKontroller om noden fungerer som den skal:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellDet skal nå være tre noder i klyngen:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellTrinn 6: Test replikeringen
Sørg for at du kan opprette en forbindelse til alle noder i klyngen. Bruk MariaDB-klienten til å logge inn som root-bruker eller som en annen bruker med tilstrekkelige rettigheter.
mysql -u root -pshellOpprett en ny testdatabase på en av nodene i klyngen:
CREATE DATABASE test_db;sqlLogg inn på de andre nodene og sjekk om testdatabasen er tilgjengelig:
SHOW DATABASES;sqlTestdatabasen skal vises i listen over databaser:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlLegg til en ny testtabell i testdatabasen:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlSkriv inn noen testdata i kolonne name i testtabellen:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlKontroller de andre nodene for å se om testtabellen og de innsatte dataene er overført:
USE test_db;
SELECT * FROM test_table;sqlUtdataene viser oss listen over personer med navn og ID:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlFor å oppdatere en datapost i testtabellen:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlPrøv å slette en datapost:
DELETE FROM test_table WHERE name = 'Bob';sqlSjekk de andre nodene for å se om oppdateringene og slettingene er replikert:
SELECT * FROM test_table;sqlEndringene vises som forventet på alle noder:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql