Η εγκατάσταση ενός cluster MariaDB με Galera Cluster βελτιώνει την αξιοπιστία και απλοποιεί την κλιμάκωση της βάσης δεδομένων σας. Στο σεμινάριό μας, θα σας δείξουμε πώς να εγκαταστήσετε ένα cluster Galera στο Ubuntu 20.04.

Οι απαιτήσεις για ένα Galera Cluster MariaDB

Για να εγκαταστήσετε ένα σύμπλεγμα MariaDB Galera στο Ubuntu 20.04, πρέπει να πληροίτε τις ακόλουθες προϋποθέσεις:

  • Πολλαπλοί διακομιστές: Απαιτούνται τουλάχιστον τρεις διακομιστές ή εικονικές μηχανές για τη δημιουργία ενός συμπλέγματος. Όλοι οι διακομιστές πρέπει να βρίσκονται στο ίδιο δίκτυο.
  • Δικαιώματα root: Χρειάζεστε πρόσβαση root ή τουλάχιστον δικαιώματα διαχειριστή στους διακομιστές.

Πώς να ρυθμίσετε το Galera Cluster MariaDB στο Ubuntu 20.04 βήμα προς βήμα

Ένα σύμπλεγμα MariaDB Galera είναι μια πρακτική λύση βάσης δεδομένων που παρέχει υψηλή διαθεσιμότητα, ακεραιότητα δεδομένων και επεκτασιμότητα για απαιτητικές εφαρμογές. Σε αυτόν τον αναλυτικό οδηγό, θα σας καθοδηγήσουμε στη διαδικασία ρύθμισης ενός συμπλέγματος MariaDB Galera στο Ubuntu 20.04. Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε τουλάχιστον τρεις διακομιστές ή εικονικές μηχανές για τη ρύθμιση του συμπλέγματος.

Βήμα 1: Ενημέρωση πακέτων

Πρώτα πρέπει να ενημερώσετε το σύστημα Ubuntu σας στην πιο πρόσφατη έκδοση. Αυτό είναι απαραίτητο για να έχετε ενημερωμένα πακέτα και ενημερώσεις ασφαλείας.

Ανοίξτε ένα τερματικό και εκτελέστε την ακόλουθη εντολή για να ενημερώσετε τις πηγές πακέτων:

sudo apt update
shell

Εγκαταστήστε όλες τις διαθέσιμες ενημερώσεις:

sudo apt upgrade -y
shell

Συνιστούμε επίσης να αφαιρέσετε παλιά ή αχρησιμοποίητα πακέτα για να καθαρίσετε τους διακομιστές:

sudo apt autoremove -y
shell

Βήμα 2: Εγκαταστήστε το MariaDB στους διακομιστές

Τώρα, εγκαταστήστε το MariaDB σε όλους τους διακομιστές σας. Από την έκδοση 10.1 και μετά, τα πακέτα Galera περιλαμβάνονται στους διακομιστές MariaDB.

sudo apt install mariadb-server
shell

Μετά την εγκατάσταση, μπορείτε να ξεκινήσετε την υπηρεσία MariaDB:

sudo systemctl start mariadb
shell

Χρησιμοποιήστε την ακόλουθη εντολή για να ρυθμίσετε το MariaDB ώστε να ενεργοποιείται αυτόματα κάθε φορά που γίνεται επανεκκίνηση του συστήματος:

sudo systemctl enable mariadb
shell

Ελέγξτε αν το MariaDB λειτουργεί:

sudo systemctl status mariadb
shell

Θα πρέπει επίσης να κάνετε μερικές βασικές ρυθμίσεις ασφαλείας και να διαμορφώσετε τη βάση δεδομένων. Για να το κάνετε αυτό, ξεκινήστε τον οδηγό εγκατάστασης:

sudo mysql_secure_installation
shell

Ο οδηγός σας καθοδηγεί στα βήματα, όπως η ρύθμιση ενός κωδικού πρόσβασης root, η κατάργηση ανώνυμων χρηστών ή η κατάργηση της δοκιμαστικής βάσης δεδομένων.

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

Το σενάριο ζητά πρώτα τον τρέχοντα κωδικό πρόσβασης root. Εάν εγκαθιστάτε το MariaDB στο Ubuntu 20.04 για πρώτη φορά, απλά πατήστε Enter και στη συνέχεια εισαγάγετε έναν νέο κωδικό πρόσβασης.

Βήμα 3: Διαμόρφωση των κόμβων Galera Cluster MariaDB

Δημιουργήστε ένα αρχείο cnf στον κατάλογο /etc/mysql/conf.d σε κάθε κόμβο για να ορίσετε τις ρυθμίσεις που αφορούν το Galera.

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

Αυτό το αρχείο περιέχει γενικές ρυθμίσεις της βάσης δεδομένων, όπως η μορφή του δυαδικού πρωτοκόλλου και ο προεπιλεγμένος μηχανισμός αποθήκευσης. Περιέχει επίσης ρυθμίσεις για το σύμπλεγμα Galera, συμπεριλαμβανομένου του ονόματος και της διεύθυνσης του συμπλέγματος.

Εισάγετε τις ακόλουθες γραμμές για τον πρώτο κόμβο:

[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
  • Γενικές ρυθμίσεις βάσης δεδομένων: Περιλαμβάνει ρυθμίσεις όπως binlog_format=ROW για τη μορφή των δυαδικών αρχείων καταγραφής και default-storage-engine=innodb για τον προεπιλεγμένο μηχανισμό αποθήκευσης.
  • Διαμόρφωση παροχέα Galera: Ρυθμίσεις όπως wsrep_on=ON χρησιμοποιούνται για την ενεργοποίηση της αναπαραγωγής Galera και wsrep_provider=/usr/lib/galera/libgalera_smm.so για τον καθορισμό της διαδρομής προς τη βιβλιοθήκη Galera.
  • Διαμόρφωση συμπλέγματος Galera: Περιλαμβάνει το όνομα του συμπλέγματος (wsrep_cluster_name) και τη διεύθυνση του συμπλέγματος (wsrep_cluster_address), η οποία περιέχει τις διευθύνσεις IP ή τα ονόματα κεντρικών υπολογιστών των κόμβων στο σύμπλεγμα.
  • Διαμόρφωση συγχρονισμού Galera: Διαμορφώνει τη μέθοδο για τη μεταφορά στιγμιότυπου κατάστασης (SST), π.χ. wsrep_sst_method=rsync.
  • Διαμόρφωση κόμβου Galera: Ορίζει τη διεύθυνση IP ή το όνομα κεντρικού υπολογιστή του τρέχοντος κόμβου (wsrep_node_address) και το όνομα του κόμβου (wsrep_node_name).

Αφού αποθηκεύσετε το αρχείο, δημιουργήστε ένα για τον δεύτερο κόμβο:

[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

Τώρα συνεχίστε με τον τελευταίο κόμβο:

[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: Αλλάξτε το τείχος προστασίας στους διακομιστές

Καθώς οι κόμβοι επικοινωνούν μεταξύ τους μέσω συγκεκριμένων θυρών, πρέπει να προσαρμόσετε τις ρυθμίσεις του τείχους προστασίας.

Ανοίξτε τις ακόλουθες θύρες στο τείχος προστασίας σας:

  • Θύρα 3306: Αυτή είναι η τυπική θύρα για το MariaDB. Χρησιμοποιείται για την επικοινωνία και τα αιτήματα της βάσης δεδομένων.
  • Θύρες Galera: Εκτός από την τυπική θύρα 3306, η Galera χρησιμοποιεί και άλλες θύρες για την εσωτερική επικοινωνία μεταξύ των κόμβων. Το τυπικό εύρος για τις θύρες Galera είναι συνήθως 4567, 4568 και 4444 για τη μεταφορά στιγμιότυπου κατάστασης (SST).

Μπορείτε να ορίσετε τις ρυθμίσεις του τείχους προστασίας στον διακομιστή Ubuntu με την ακόλουθη εντολή:

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

Βήμα 5: Εκκίνηση του Galera Cluster MariaDB

Διακόψτε την υπηρεσία MariaDB εάν ήδη εκτελείται:

sudo systemctl stop mariadb
shell

Αυτή η εντολή εκκινεί τον διακομιστή MariaDB και αρχικοποιεί ένα νέο σύμπλεγμα Galera στον πρώτο κόμβο:

sudo galera_new_cluster
shell

Ελέγξτε τον αριθμό των κόμβων στο σύμπλεγμα:

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

Θα πρέπει να λάβετε την ακόλουθη έξοδο:

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

Ο πρώτος κόμβος ξεκίνησε με επιτυχία.

Ενεργοποιήστε τον δεύτερο κόμβο:

systemctl start mariadb
shell

Ελέγξτε αν ο αριθμός των κόμβων έχει αυξηθεί:

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

Στην κονσόλα βλέπουμε:

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

Τώρα ξεκινάμε τον τρίτο κόμβο:

systemctl start mariadb
shell

Ελέγξτε αν ο κόμβος λειτουργεί σωστά:

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

Τώρα θα πρέπει να υπάρχουν τρεις κόμβοι στο σύμπλεγμα:

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

Βήμα 6: Δοκιμάστε την αναπαραγωγή

Βεβαιωθείτε ότι μπορείτε να δημιουργήσετε σύνδεση με κάθε κόμβο του συμπλέγματος. Χρησιμοποιήστε τον πελάτη MariaDB για να συνδεθείτε ως χρήστης root ή ως άλλος χρήστης με επαρκή δικαιώματα.

mysql -u root -p
shell

Δημιουργήστε μια νέα δοκιμαστική βάση δεδομένων σε έναν από τους κόμβους του συμπλέγματος:

CREATE DATABASE test_db;
sql

Συνδεθείτε στους άλλους κόμβους και ελέγξτε αν η δοκιμαστική βάση δεδομένων είναι διαθέσιμη:

SHOW DATABASES;
sql

Η βάση δεδομένων δοκιμής θα πρέπει να εμφανίζεται στη λίστα των βάσεων δεδομένων:

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

Προσθέστε έναν νέο πίνακα δοκιμών στη βάση δεδομένων δοκιμών:

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

Εισάγετε κάποια δοκιμαστικά δεδομένα στη στήλη name του πίνακα δοκιμών:

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

Ελέγξτε τους άλλους κόμβους για να δείτε αν ο πίνακας δοκιμής και τα εισαχθέντα δεδομένα έχουν μεταφερθεί:

USE test_db;
SELECT * FROM test_table;
sql

Η έξοδος μας δείχνει τη λίστα των ατόμων με τα ονόματά τους και τα αναγνωριστικά τους:

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

Για να ενημερώσετε μια εγγραφή δεδομένων στον πίνακα δοκιμών:

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

Δοκιμάστε να διαγράψετε μια εγγραφή δεδομένων:

DELETE FROM test_table WHERE name = 'Bob';
sql

Ελέγξτε τους άλλους κόμβους για να δείτε αν οι ενημερώσεις και οι διαγραφές έχουν αναπαραχθεί:

SELECT * FROM test_table;
sql

Οι αλλαγές εμφανίζονται με επιτυχία σε κάθε κόμβο:

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