# Kuidas seadistada MariaDB Galera klastrit Ubuntu 20.04-s

**MariaDB klastri** seadistamine **Galera Clusteriga** parandab andmebaasi töökindlust ja lihtsustab selle skaleerimist. Meie juhendis näitame, kuidas installida Galera klastrit Ubuntu 20.04-le.

## Galera Cluster MariaDB nõuded

MariaDB Galera klastri installimiseks **Ubuntu 20.04**-le peate täitma järgmised nõuded:

- **Mitmed serverid**: klastri loomiseks on vaja vähemalt kolme serverit või virtuaalmasinat. Kõik serverid peavad asuma samas võrgus.
- **Root-õigused**: vajate serveritel root-juurdepääsu või vähemalt administraatoriõigusi.

## Kuidas seadistada Galera Cluster MariaDB Ubuntu 20.04-s samm-sammult

MariaDB Galera klastri on praktiline **andmebaasi lahendus**, mis pakub kõrget kättesaadavust, andmete terviklikkust ja skaleeritavust nõudlikele rakendustele. Selles samm-sammult juhendis tutvustame teile MariaDB Galera klastri seadistamise protsessi Ubuntu 20.04-s. Enne alustamist veenduge, et teil on klastri seadistamiseks vähemalt kolm serverit või virtuaalmasinat.

### 1. samm: Pakettide uuendamine

Esmalt peaksite oma Ubuntu süsteemi uuendama viimase versioonini. See on oluline, et teil oleksid olemas **ajakohased paketid ja turbeuuendused**.

Ava terminal ja täida järgmine käsk, et uuendada paketi allikaid:

```shell
sudo apt update
```

Paigalda kõik saadaval olevad värskendused:

```shell
sudo apt upgrade -y
```

Soovitame ka eemaldada **aegunud või kasutamata paketid**, et puhastada servereid:

```shell
sudo apt autoremove -y
```

### 2. samm: MariaDB installimine serveritele

Nüüd installige MariaDB kõikidele oma serveritele. Alates **versioonist 10.1** on Galera paketid MariaDB serveritega kaasas.

```shell
sudo apt install mariadb-server
```

Pärast installimist saate käivitada MariaDB teenuse:

```shell
sudo systemctl start mariadb
```

Kasutage järgmist käsku, et seadistada MariaDB automaatselt aktiveeruma iga kord, kui süsteem taaskäivitatakse:

```shell
sudo systemctl enable mariadb
```

Kontrollige, kas MariaDB töötab:

```shell
sudo systemctl status mariadb
```

Samuti peaksite tegema mõned põhilised turvasätted ja konfigureerima andmebaasi. Selleks käivitage **seadistusviisard**:

```shell
sudo mysql_secure_installation
```

Viisard juhendab teid läbi erinevate sammude, nagu juurkasutaja parooli seadmine, anonüümsete kasutajate eemaldamine või testandmebaasi eemaldamine.

```shell
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
```

Skript küsib esmalt praegust **root-parooli**. Kui installite [MariaDB Ubuntu 20.04-le](https://www.ionos.com/et-ee/digitalguide/hosting/tehnilised-kuesimused/mariadb-installimine-ubuntu-2004-le/) esimest korda, vajutage lihtsalt Enter ja sisestage uus parool.

### 3. samm: Galera Cluster MariaDB sõlmede konfigureerimine

Looge igas sõlmes kataloogis `/etc/mysql/conf.d` fail `cnf`, et määratleda Galera-spetsiifilised seaded.

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

See fail sisaldab üldisi andmebaasi seadeid, nagu binaarne protokollivorming ja **vaikimisi salvestusmootor**. Samuti sisaldab see Galera klastri konfiguratsioone, sealhulgas klastri nime ja klastri aadressi.

Lisage järgmised read esimese sõlme jaoks:

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

- **Üldised andmebaasi seaded**: Siia kuuluvad näiteks seaded `binlog_format=ROW` binaarlogide formaadi jaoks ja `default-storage-engine=innodb` vaikimisi salvestusmootori jaoks.
- **Galera pakkuja konfiguratsioon**: Seaded nagu `wsrep_on=ON` kasutatakse Galera replikatsiooni lubamiseks ja `wsrep_provider=/usr/lib/galera/libgalera_smm.so` Galera raamatukogu asukoha määramiseks.
- **Galera klastri konfiguratsioon**: See hõlmab klastri nime (`wsrep_cluster_name`) ja klastri aadressi (`wsrep_cluster_address`), mis sisaldab klastri sõlmede IP-aadresse või hostinimesid.
- **Galera sünkroniseerimise konfiguratsioon**: konfigureerib State Snapshot Transfer (SST) meetodi, nt `wsrep_sst_method=rsync`.
- **Galera sõlme konfiguratsioon**: määrab praeguse sõlme IP-aadressi või hostinime (`wsrep_node_address`) ja sõlme nime (`wsrep_node_name`).

Pärast faili salvestamist looge teine sõlm:

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

Nüüd jätkake viimase sõlmega:

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

### 4. samm: Muuda serverite tulemüüri seadeid

Kuna sõlmed suhtlevad omavahel spetsiifiliste portide kaudu, peate kohandama **tulemüüri seadeid**.

Avage oma tulemüüris järgmised **pordid**:

- **Port 3306**: See on MariaDB standardport. Seda kasutatakse andmebaasi suhtluseks ja päringuteks.
- **Galera pordid**: Lisaks standardpordile 3306 kasutab Galera ka teisi porte sõlmede vaheliseks sisekommunikatsiooniks. Galera portide standardvahemik on tavaliselt 4567, 4568 ja 4444 State Snapshot Transfer (SST) jaoks.

Ubuntu serveri tulemüüri seaded saab määrata järgmise käsuga:

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

### 5. samm: Galera Cluster MariaDB käivitamine

Peatage MariaDB teenus, kui see juba töötab:

```shell
sudo systemctl stop mariadb
```

See käsk käivitab **MariaDB serveri** ja algatab uue Galera klastri esimeses sõlmes:

```shell
sudo galera_new_cluster
```

Kontrollige klastri sõlmede arvu:

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

Sa peaksid saama järgmise väljundi:

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

Esimene sõlm käivitati edukalt.

Aktiveeri teine sõlm:

```shell
systemctl start mariadb
```

Kontrollige, kas sõlmede arv on suurenenud:

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

Konsolis näeme:

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

Nüüd alustame kolmanda sõlme:

```shell
systemctl start mariadb
```

Kontrollige, kas sõlm töötab korralikult:

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

Klastris peaks nüüd olema kolm sõlme:

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

### 6. samm: Testige replikatsiooni

Veenduge, et saate luua ühenduse klastri iga sõlme. Kasutage **MariaDB klienti**, et sisse logida root-kasutajana või mõne teise piisavate õigustega kasutajana.

```shell
mysql -u root -p
```

Loo uus testandmebaas ühes klastri sõlmes:

```sql
CREATE DATABASE test_db;
```

Logi sisse teistesse sõlmedesse ja kontrolli, kas testandmebaas on kättesaadav:

```sql
SHOW DATABASES;
```

Testandmebaas peaks ilmuma andmebaaside loendisse:

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

Lisa testandmebaasi uus testtabel:

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

Sisestage mõned testandmed testtabelisse veergu `name`:

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

Kontrollige teisi sõlmi, et näha, kas testtabel ja sisestatud andmed on üle kantud:

```sql
USE test_db;
SELECT * FROM test_table;
```

Väljund näitab meile inimeste nimekirja koos nende nimede ja ID-dega:

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

Andmete uuendamine testtabelis:

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

Proovi kustutada andmeid:

```sql
DELETE FROM test_table WHERE name = 'Bob';
```

Kontrollige teisi sõlmi, et näha, kas uuendused ja kustutused on replikeeritud:

```sql
SELECT * FROM test_table;
```

Muudatused kuvatakse edukalt igas sõlmes:

```sql
+----+------------+
| id | name     |
+----+-----------+
| 1  | David    |
| 3  | Charlie  |
+----+-----------+
```


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/hosting/tehnilised-kuesimused/mariadb-galera-klastri-ubuntu-2004/](https://www.ionos.com/et-ee/digitalguide/hosting/tehnilised-kuesimused/mariadb-galera-klastri-ubuntu-2004/) for AI/LLM consumption.