# Kā uzstādīt MariaDB Galera klasteri Ubuntu 20.04

**MariaDB klastera** izveide **ar Galera Cluster** uzlabo uzticamību un vienkāršo datu bāzes mērogošanu. Mūsu apmācībā parādīsim, kā instalēt Galera klasteri Ubuntu 20.04.

## Prasības Galera Cluster MariaDB

Lai instalētu MariaDB Galera klasteri **Ubuntu 20.04**, jums ir jāizpilda šādas prasības:

- **Vairāki serveri**: Lai izveidotu klasteri, ir nepieciešami vismaz trīs serveri vai virtuālās mašīnas. Visiem serveriem jāatrodas vienā tīklā.
- **Piekļuves tiesības**: Jums ir nepieciešamas piekļuves tiesības vai vismaz administratora tiesības uz serveriem.

## Kā soli pa solim uzstādīt Galera Cluster MariaDB Ubuntu 20.04

MariaDB Galera klasteris ir praktisks **datu bāzes risinājums**, kas nodrošina augstu pieejamību, datu integritāti un mērogojamību prasīgām lietojumprogrammām. Šajā soli pa solim izklāstītajā rokasgrāmatā mēs izskaidrosim, kā uzstādīt MariaDB Galera klasteri Ubuntu 20.04. Pirms sākat, pārliecinieties, ka jums ir vismaz trīs serveri vai virtuālās mašīnas, kas pieejamas klastera uzstādīšanai.

### 1. solis: Atjauniniet paketes

Vispirms jums jāatjaunina Ubuntu sistēma līdz jaunākajai versijai. Tas ir nepieciešams, lai jums būtu **jaunākās programmatūras paketes un drošības atjauninājumi**.

Atveriet termināli un izpildiet šādu komandu, lai atjauninātu pakotņu avotus:

```shell
sudo apt update
```

Instalējiet visus pieejamos atjauninājumus:

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

Lai attīrītu serverus, ieteicams arī izdzēst **novecojušas vai neizmantotas programmatūras paketes**:

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

### 2. solis: instalējiet MariaDB serveros

Tagad instalējiet MariaDB visos savos serveros. Sākot no **versijas 10.1**, Galera paketes ir iekļautas MariaDB serveru komplektā.

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

Pēc instalēšanas varat sākt MariaDB pakalpojumu:

```shell
sudo systemctl start mariadb
```

Izmantojiet šo komandu, lai iestatītu MariaDB automātisku aktivizēšanu katru reizi, kad sistēma tiek pārstartēta:

```shell
sudo systemctl enable mariadb
```

Pārbaudiet, vai MariaDB darbojas:

```shell
sudo systemctl status mariadb
```

Jums ir arī jāveic dažas pamata drošības iestatījumu un datu bāzes konfigurācijas darbības. Lai to izdarītu, palaidiet **uzstādīšanas vedni**:

```shell
sudo mysql_secure_installation
```

Vednis palīdzēs jums iziet visus soļus, piemēram, iestatīt galveno paroli, dzēst anonīmos lietotājus vai dzēst testa datu bāzi.

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

Skripts vispirms lūdz ievadīt pašreizējo **root paroles**. Ja instalējat [MariaDB Ubuntu 20.04](https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/instalejiet-mariadb-ubuntu-2004/) pirmo reizi, vienkārši nospiediet Enter un ievadiet jaunu paroli.

### 3. solis: Konfigurējiet Galera Cluster MariaDB mezglus

Izveidojiet `cnf` failu direktorijā `/etc/mysql/conf.d` katrā mezglā, lai definētu Galera specifiskos iestatījumus.

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

Šis fails satur vispārējus datu bāzes iestatījumus, piemēram, binārā protokola formātu un **noklusējuma uzglabāšanas dzinēju**. Tas satur arī Galera klastera konfigurācijas, tostarp klastera nosaukumu un adresi.

Ievietojiet šādas rindas pirmajam mezglam:

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

- **Vispārējie datu bāzes iestatījumi**: Tas ietver tādas iestatījumu kā `binlog_format=ROW` bināro žurnālu formāts un `default-storage-engine=innodb` noklusējuma uzglabāšanas dzinējs.
- **Galera nodrošinātāja konfigurācija**: iestatījumi, piemēram, `wsrep_on=ON`, tiek izmantoti, lai aktivizētu Galera replikāciju, un `wsrep_provider=/usr/lib/galera/libgalera_smm.so`, lai norādītu ceļu uz Galera bibliotēku.
- **Galera klastera konfigurācija**: Tas ietver klastera nosaukumu (`wsrep_cluster_name`) un klastera adresi (`wsrep_cluster_address`), kas satur klastera mezglu IP adreses vai uzņēmuma nosaukumus.
- **Galera sinhronizācijas konfigurācija**: konfigurē metodi State Snapshot Transfer (SST), piemēram, `wsrep_sst_method=rsync`.
- **Galera mezgla konfigurācija**: definē pašreizējā mezgla IP adresi vai uzņēmuma nosaukumu (`wsrep_node_address`) un mezgla nosaukumu (`wsrep_node_name`).

Pēc faila saglabāšanas izveidojiet failu otrajam mezglam:

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

Tagad turpiniet ar pēdējo mezglu:

```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. solis: mainiet serveru ugunsmūri

Tā kā mezgli savstarpēji sazinās, izmantojot konkrētus portus, jums ir jāpielāgo **ugunsmūra iestatījumi**.

Atveriet šādus **portus** ugunsmūrī:

- **3306. ports**: Tas ir standarta ports MariaDB. To izmanto datu bāzes komunikācijai un pieprasījumiem.
- **Galera porti**: Papildus standarta portam 3306 Galera izmanto arī citus portus iekšējai komunikācijai starp mezgliem. Standarta diapazons Galera portiem parasti ir 4567, 4568 un 4444 State Snapshot Transfer (SST).

Jūs varat definēt ugunsmūra iestatījumus savā Ubuntu serverī, izmantojot šādu komandu:

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

### 5. solis: Palaižiet Galera Cluster MariaDB

Pārtrauciet MariaDB pakalpojumu, ja tas jau darbojas:

```shell
sudo systemctl stop mariadb
```

Šī komanda palaista **MariaDB serveri** un inicializē jaunu Galera klasteri pirmajā mezglā:

```shell
sudo galera_new_cluster
```

Pārbaudiet mezglu skaitu klasterī:

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

Jums jāsaņem šāds izvades rezultāts:

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

Pirmais mezgls tika veiksmīgi palaists.

Aktivizējiet otro mezglu:

```shell
systemctl start mariadb
```

Pārbaudiet, vai mezglu skaits ir palielinājies:

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

Konsolē redzam:

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

Tagad sākam trešo mezglu:

```shell
systemctl start mariadb
```

Pārbaudiet, vai mezgls darbojas pareizi:

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

Tagad klasterī vajadzētu būt trīs mezgliem:

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

### 6. solis: Pārbaudiet replikāciju

Pārliecinieties, ka varat izveidot savienojumu ar katru mezglu klasterī. Izmantojiet **MariaDB klientu**, lai pieteiktos kā galvenais lietotājs vai kā cits lietotājs ar pietiekamām tiesībām.

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

Izveidojiet jaunu testa datu bāzi vienā no klastera mezgliem:

```sql
CREATE DATABASE test_db;
```

Piesakieties citos mezglos un pārbaudiet, vai testa datu bāze ir pieejama:

```sql
SHOW DATABASES;
```

Testa datu bāze jāparādās datu bāzu sarakstā:

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

Pievienojiet jaunu testa tabulu testa datu bāzei:

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

Ievadiet dažus testa datus testa tabulas `name` ailē:

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

Pārbaudiet citus mezglus, lai redzētu, vai testa tabula un ievadītie dati ir pārnesti:

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

Rezultāts parāda cilvēku sarakstu ar viņu vārdiem un identifikācijas numuriem:

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

Lai atjauninātu datu ierakstu testa tabulā:

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

Mēģiniet dzēst datu ierakstu:

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

Pārbaudiet citus mezglus, lai redzētu, vai atjauninājumi un dzēšanas ir replikēti:

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

Izmaiņas veiksmīgi parādās katrā mezglā:

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


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/mariadb-galera-klasteris-ubuntu-2004/](https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/mariadb-galera-klasteris-ubuntu-2004/) for AI/LLM consumption.