Πώς να ρυθμίσετε ένα σύμπλεγμα MariaDB Galera στο Ubuntu 20.04
Η εγκατάσταση ενός 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 updateshellΕγκαταστήστε όλες τις διαθέσιμες ενημερώσεις:
sudo apt upgrade -yshellΣυνιστούμε επίσης να αφαιρέσετε παλιά ή αχρησιμοποίητα πακέτα για να καθαρίσετε τους διακομιστές:
sudo apt autoremove -yshellΒήμα 2: Εγκαταστήστε το MariaDB στους διακομιστές
Τώρα, εγκαταστήστε το MariaDB σε όλους τους διακομιστές σας. Από την έκδοση 10.1 και μετά, τα πακέτα Galera περιλαμβάνονται στους διακομιστές MariaDB.
sudo apt install mariadb-servershellΜετά την εγκατάσταση, μπορείτε να ξεκινήσετε την υπηρεσία MariaDB:
sudo systemctl start mariadbshellΧρησιμοποιήστε την ακόλουθη εντολή για να ρυθμίσετε το MariaDB ώστε να ενεργοποιείται αυτόματα κάθε φορά που γίνεται επανεκκίνηση του συστήματος:
sudo systemctl enable mariadbshellΕλέγξτε αν το MariaDB λειτουργεί:
sudo systemctl status mariadbshellΘα πρέπει επίσης να κάνετε μερικές βασικές ρυθμίσεις ασφαλείας και να διαμορφώσετε τη βάση δεδομένων. Για να το κάνετε αυτό, ξεκινήστε τον οδηγό εγκατάστασης:
sudo mysql_secure_installationshellΟ οδηγός σας καθοδηγεί στα βήματα, όπως η ρύθμιση ενός κωδικού πρόσβασης 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] YshellΤο σενάριο ζητά πρώτα τον τρέχοντα κωδικό πρόσβασης root. Εάν εγκαθιστάτε το MariaDB στο Ubuntu 20.04 για πρώτη φορά, απλά πατήστε Enter και στη συνέχεια εισαγάγετε έναν νέο κωδικό πρόσβασης.
Βήμα 3: Διαμόρφωση των κόμβων Galera Cluster MariaDB
Δημιουργήστε ένα αρχείο cnf στον κατάλογο /etc/mysql/conf.d σε κάθε κόμβο για να ορίσετε τις ρυθμίσεις που αφορούν το Galera.
nano /etc/mysql/conf.d/galera.cnfshellΑυτό το αρχείο περιέχει γενικές ρυθμίσεις της βάσης δεδομένων, όπως η μορφή του δυαδικού πρωτοκόλλου και ο προεπιλεγμένος μηχανισμός αποθήκευσης. Περιέχει επίσης ρυθμίσεις για το σύμπλεγμα 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/udpshellΒήμα 5: Εκκίνηση του Galera Cluster MariaDB
Διακόψτε την υπηρεσία MariaDB εάν ήδη εκτελείται:
sudo systemctl stop mariadbshellΑυτή η εντολή εκκινεί τον διακομιστή MariaDB και αρχικοποιεί ένα νέο σύμπλεγμα Galera στον πρώτο κόμβο:
sudo galera_new_clustershellΕλέγξτε τον αριθμό των κόμβων στο σύμπλεγμα:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellΘα πρέπει να λάβετε την ακόλουθη έξοδο:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellΟ πρώτος κόμβος ξεκίνησε με επιτυχία.
Ενεργοποιήστε τον δεύτερο κόμβο:
systemctl start mariadbshellΕλέγξτε αν ο αριθμός των κόμβων έχει αυξηθεί:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellΣτην κονσόλα βλέπουμε:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellΤώρα ξεκινάμε τον τρίτο κόμβο:
systemctl start mariadbshellΕλέγξτε αν ο κόμβος λειτουργεί σωστά:
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 -pshellΔημιουργήστε μια νέα δοκιμαστική βάση δεδομένων σε έναν από τους κόμβους του συμπλέγματος:
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