MariaDB klastera izveide ar Galera Cluster uzlabo uz­ti­ca­mī­bu un vienkāršo datu bāzes mē­ro­go­ša­nu. 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 ne­pie­cie­ša­mi vismaz trīs serveri vai virtuālās mašīnas. Visiem serveriem jāatrodas vienā tīklā.
  • Piekļuves tiesības: Jums ir ne­pie­cie­ša­mas piekļuves tiesības vai vismaz ad­mi­nis­tra­to­ra 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 ri­si­nā­jums, kas nodrošina augstu pie­eja­mī­bu, datu in­teg­ri­tā­ti un mē­ro­go­ja­mī­bu prasīgām lie­to­jum­prog­ram­mām. Šajā soli pa solim iz­klās­tī­ta­jā ro­kas­grā­ma­tā mēs iz­skaid­ro­sim, kā uzstādīt MariaDB Galera klasteri Ubuntu 20.04. Pirms sākat, pār­lie­ci­nie­ties, ka jums ir vismaz trīs serveri vai virtuālās mašīnas, kas pieejamas klastera uz­stā­dī­ša­nai.

1. solis: At­jau­ni­niet paketes

Vispirms jums jā­at­jau­ni­na Ubuntu sistēma līdz jau­nā­ka­jai versijai. Tas ir ne­pie­cie­šams, lai jums būtu jaunākās prog­ram­ma­tū­ras paketes un drošības at­jau­ni­nā­ju­mi.

Atveriet termināli un izpildiet šādu komandu, lai at­jau­ni­nā­tu pakotņu avotus:

sudo apt update
shell

In­sta­lē­jiet visus pieejamos at­jau­ni­nā­ju­mus:

sudo apt upgrade -y
shell

Lai attīrītu serverus, ieteicams arī izdzēst no­ve­co­ju­šas vai ne­iz­man­to­tas prog­ram­ma­tū­ras paketes:

sudo apt autoremove -y
shell

2. solis: in­sta­lē­jiet MariaDB serveros

Tagad in­sta­lē­jiet MariaDB visos savos serveros. Sākot no versijas 10.1, Galera paketes ir iekļautas MariaDB serveru komplektā.

sudo apt install mariadb-server
shell

Pēc in­sta­lē­ša­nas varat sākt MariaDB pa­kal­po­ju­mu:

sudo systemctl start mariadb
shell

Iz­man­to­jiet šo komandu, lai iestatītu MariaDB au­to­mā­tis­ku ak­ti­vi­zē­ša­nu katru reizi, kad sistēma tiek pār­star­tē­ta:

sudo systemctl enable mariadb
shell

Pār­bau­diet, vai MariaDB darbojas:

sudo systemctl status mariadb
shell

Jums ir arī jāveic dažas pamata drošības ie­sta­tī­ju­mu un datu bāzes kon­fi­gu­rā­ci­jas darbības. Lai to izdarītu, palaidiet uz­stā­dī­ša­nas vedni:

sudo mysql_secure_installation
shell

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

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

Skripts vispirms lūdz ievadīt pa­šrei­zē­jo root paroles. Ja in­sta­lē­jat MariaDB Ubuntu 20.04 pirmo reizi, vienkārši no­spie­diet Enter un ievadiet jaunu paroli.

3. solis: Kon­fi­gu­rē­jiet Galera Cluster MariaDB mezglus

Iz­vei­do­jiet cnf failu di­rek­to­ri­jā /etc/mysql/conf.d katrā mezglā, lai definētu Galera spe­ci­fis­kos ie­sta­tī­ju­mus.

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

Šis fails satur vis­pā­rē­jus datu bāzes ie­sta­tī­ju­mus, piemēram, binārā protokola formātu un no­klu­sē­ju­ma uz­gla­bā­ša­nas dzinēju. Tas satur arī Galera klastera kon­fi­gu­rā­ci­jas, tostarp klastera nosaukumu un adresi.

Ie­vie­to­jiet šādas rindas pirmajam mezglam:

[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
  • Vis­pā­rē­jie datu bāzes ie­sta­tī­ju­mi: Tas ietver tādas ie­sta­tī­ju­mu kā binlog_format=ROW bināro žurnālu formāts un default-storage-engine=innodb no­klu­sē­ju­ma uz­gla­bā­ša­nas dzinējs.
  • Galera no­dro­ši­nā­tā­ja kon­fi­gu­rā­ci­ja: ie­sta­tī­ju­mi, piemēram, wsrep_on=ON, tiek izmantoti, lai ak­ti­vi­zē­tu Galera rep­li­kā­ci­ju, un wsrep_provider=/usr/lib/galera/libgalera_smm.so, lai norādītu ceļu uz Galera bib­lio­tē­ku.
  • Galera klastera kon­fi­gu­rā­ci­ja: Tas ietver klastera nosaukumu (wsrep_cluster_name) un klastera adresi (wsrep_cluster_address), kas satur klastera mezglu IP adreses vai uzņēmuma no­sau­ku­mus.
  • Galera sin­hro­ni­zā­ci­jas kon­fi­gu­rā­ci­ja: konfigurē metodi State Snapshot Transfer (SST), piemēram, wsrep_sst_method=rsync.
  • Galera mezgla kon­fi­gu­rā­ci­ja: definē pa­šrei­zē­jā mezgla IP adresi vai uzņēmuma nosaukumu (wsrep_node_address) un mezgla nosaukumu (wsrep_node_name).

Pēc faila sa­gla­bā­ša­nas iz­vei­do­jiet failu otrajam mezglam:

[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

Tagad turpiniet ar pēdējo mezglu:

[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

4. solis: mainiet serveru ugunsmūri

Tā kā mezgli sav­star­pē­ji sazinās, iz­man­to­jot konkrētus portus, jums ir jāpielāgo ugunsmūra ie­sta­tī­ju­mi.

Atveriet šādus portus ugunsmūrī:

  • 3306. ports: Tas ir standarta ports MariaDB. To izmanto datu bāzes ko­mu­ni­kā­ci­jai un pie­pra­sī­ju­miem.
  • Galera porti: Papildus standarta portam 3306 Galera izmanto arī citus portus iekšējai ko­mu­ni­kā­ci­jai starp mezgliem. Standarta diapazons Galera portiem parasti ir 4567, 4568 un 4444 State Snapshot Transfer (SST).

Jūs varat definēt ugunsmūra ie­sta­tī­ju­mus savā Ubuntu serverī, iz­man­to­jot šādu komandu:

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

5. solis: Palaižiet Galera Cluster MariaDB

Pār­trau­ciet MariaDB pa­kal­po­ju­mu, ja tas jau darbojas:

sudo systemctl stop mariadb
shell

Šī komanda palaista MariaDB serveri un ini­cia­li­zē jaunu Galera klasteri pirmajā mezglā:

sudo galera_new_cluster
shell

Pār­bau­diet mezglu skaitu klasterī:

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

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

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

Pirmais mezgls tika veiksmīgi palaists.

Ak­ti­vi­zē­jiet otro mezglu:

systemctl start mariadb
shell

Pār­bau­diet, vai mezglu skaits ir pa­lie­li­nā­jies:

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

Konsolē redzam:

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

Tagad sākam trešo mezglu:

systemctl start mariadb
shell

Pār­bau­diet, vai mezgls darbojas pareizi:

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

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

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

6. solis: Pār­bau­diet rep­li­kā­ci­ju

Pār­lie­ci­nie­ties, ka varat izveidot sa­vie­no­ju­mu ar katru mezglu klasterī. Iz­man­to­jiet MariaDB klientu, lai pie­teik­tos kā galvenais lietotājs vai kā cits lietotājs ar pie­tie­ka­mām tiesībām.

mysql -u root -p
shell

Iz­vei­do­jiet jaunu testa datu bāzi vienā no klastera mezgliem:

CREATE DATABASE test_db;
sql

Pie­sa­kie­ties citos mezglos un pār­bau­diet, vai testa datu bāze ir pieejama:

SHOW DATABASES;
sql

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

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

Pie­vie­no­jiet jaunu testa tabulu testa datu bāzei:

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

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

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

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

USE test_db;
SELECT * FROM test_table;
sql

Rezultāts parāda cilvēku sarakstu ar viņu vārdiem un iden­ti­fi­kā­ci­jas numuriem:

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

Lai at­jau­ni­nā­tu datu ierakstu testa tabulā:

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

Mēģiniet dzēst datu ierakstu:

DELETE FROM test_table WHERE name = 'Bob';
sql

Pār­bau­diet citus mezglus, lai redzētu, vai at­jau­ni­nā­ju­mi un dzēšanas ir replikēti:

SELECT * FROM test_table;
sql

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

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