Πώς να ρυθμίσετε το MySQL Master-Slave Replication στο Ubuntu 18.04


Η αναπαραγωγή MySQL master-slave είναι μια διαδικασία που επιτρέπει την αναπαραγωγή ή την αντιγραφή αρχείων βάσης δεδομένων σε έναν ή περισσότερους κόμβους σε ένα δίκτυο. Αυτή η ρύθμιση παρέχει πλεονασμό και ανοχή σφαλμάτων έτσι ώστε σε περίπτωση αποτυχίας στον Κύριο κόμβο, οι βάσεις δεδομένων να μπορούν να ανακτηθούν στον Slave node. Αυτό δίνει στους χρήστες ηρεμία ότι δεν θα χαθούν όλα σε καμία περίπτωση, καθώς ένα αντίγραφο των βάσεων δεδομένων μπορεί ακόμα να ανακτηθεί από διαφορετικό διακομιστή.

Σε αυτόν τον οδηγό, θα μάθετε πώς να εκτελείτε μια αναπαραγωγή βάσης δεδομένων MySQL Master-slave σε ένα σύστημα Ubuntu 18.04.

Προαπαιτούμενα

Κατά τη ρύθμιση, θα έχουμε δύο διακομιστές που θα εκτελούν το Ubuntu 18.04 με τις ακόλουθες διευθύνσεις IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Ας δούμε τώρα πώς μπορούμε να διαμορφώσουμε τη ρύθμιση αναπαραγωγής Master-slave στο Ubuntu.

Βήμα 1: Εγκαταστήστε τη MySQL σε κόμβους Master και Slave

Τα αποθετήρια Ubuntu περιέχουν την έκδοση 5.7 του MySQL. Για να επωφεληθείτε από τυχόν νέες δυνατότητες και να αποφύγετε πιθανά προβλήματα, θα πρέπει να εγκαταστήσετε την πιο πρόσφατη έκδοση της MySQL. Αλλά πρώτα, ας ενημερώσουμε τους δύο κόμβους χρησιμοποιώντας την ακόλουθη εντολή apt.

sudo apt update

Για να εγκαταστήσετε το MySQL και στους δύο κόμβους, εκτελέστε την εντολή.

sudo apt install mysql-server mysql-client

Στη συνέχεια, ανοίξτε το αρχείο διαμόρφωσης mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Στον Κύριο κόμβο, πραγματοποιήστε κύλιση και εντοπίστε το χαρακτηριστικό bind-address όπως φαίνεται παρακάτω.

bind-address 	 =127.0.0.1

Αλλάξτε τη διεύθυνση επαναφοράς ώστε να ταιριάζει με τη διεύθυνση IP του Κύριου κόμβου.

bind-address  	=10.128.0.28

Στη συνέχεια, καθορίστε μια τιμή για το χαρακτηριστικό server-id στην ενότητα [mysqld]. Ο αριθμός που θα επιλέξετε δεν πρέπει να ταιριάζει με κανέναν άλλο αριθμό αναγνωριστικού διακομιστή. Ας εκχωρήσουμε την τιμή 1.

server-id	 =1

Στο τέλος του αρχείου ρυθμίσεων, αντιγράψτε και επικολλήστε τις παρακάτω γραμμές.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

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

sudo systemctl restart mysql

Για να επαληθεύσετε ότι ο διακομιστής MySQL εκτελείται όπως αναμένεται, εκδώστε την εντολή.

sudo systemctl status mysql

Τέλειος! Ο διακομιστής MySQL λειτουργεί όπως αναμένεται!

Βήμα 2: Δημιουργήστε έναν νέο χρήστη για αναπαραγωγή στον κύριο κόμβο

Σε αυτήν την ενότητα, θα δημιουργήσουμε έναν χρήστη αναπαραγωγής στον κύριο κόμβο. Για να το πετύχετε αυτό, συνδεθείτε στον διακομιστή MySQL όπως φαίνεται.

sudo mysql -u root -p

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

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Στη συνέχεια, εκτελέστε την ακόλουθη εντολή.

mysql> SHOW MASTER STATUS\G

Η έξοδος πρέπει να είναι παρόμοια με αυτή που μπορείτε να δείτε παρακάτω.

Να είστε προσεκτικοί και να σημειώσετε την τιμή mysql-bin.000002 και το αναγνωριστικό θέσης 1643. Αυτές οι τιμές θα είναι κρίσιμες κατά τη ρύθμιση του slave server.

Βήμα 3: Διαμορφώστε τον διακομιστή MySQL Slave

Κατευθυνθείτε στον υποτελή διακομιστή και όπως κάναμε με τον Κύριο διακομιστή, ανοίξτε το αρχείο διαμόρφωσης MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Ακριβώς όπως ο κύριος διακομιστής, προχωρήστε στην επεξεργασία των παρακάτω γραμμών.

bind-address           = 10.128.0.29

Όπως και πριν, καθορίστε μια τιμή για το χαρακτηριστικό server-id στην ενότητα [mysqld]. Αυτή τη φορά επιλέξτε μια διαφορετική τιμή. Ας πάμε με το 2.

server-id		=2 

Και πάλι, επικολλήστε τις παρακάτω γραμμές στο τέλος του αρχείου διαμόρφωσης.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Επόμενη επανεκκίνηση του διακομιστή MySQL στον υποτελή κόμβο.

sudo systemctl restart mysql

Μόλις τελειώσετε, αποθηκεύστε και βγείτε από το πρόγραμμα επεξεργασίας κειμένου

Στη συνέχεια, συνδεθείτε στο κέλυφος MySQL όπως φαίνεται.

sudo mysql -u root -p

Σε αυτό το βήμα, θα χρειαστεί να κάνετε κάποια διαμόρφωση που θα επιτρέπει στον slave server να συνδεθεί με τον master server. Αλλά πρώτα, σταματήστε τα slave νήματα όπως φαίνεται.

mysql> STOP SLAVE; 

Για να επιτρέψετε στον slave server να αναπαράγει τον Master server, εκτελέστε την εντολή.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Εάν είστε αρκετά πρόθυμοι, θα παρατηρήσετε ότι χρησιμοποιήσαμε την τιμή mysql-bin.00002 και το αναγνωριστικό θέσης 1643 που εμφανίστηκαν νωρίτερα μετά τη δημιουργία του υποτελούς χρήστη αναπαραγωγής.

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

Αργότερα, ξεκινήστε το νήμα που είχατε σταματήσει νωρίτερα.

mysql> START SLAVE;

Βήμα 4: Επαληθεύστε την αναπαραγωγή MySQL Master-Slave

Για να ελέγξουμε εάν η ρύθμιση λειτουργεί πράγματι όπως αναμένεται, θα δημιουργήσουμε μια νέα βάση δεδομένων στην κύρια και θα ελέγξουμε αν έχει αναπαραχθεί στον διακομιστή MySQL Slave.

Συνδεθείτε στη MySQL στον Κύριο διακομιστή.

sudo mysql -u root -p

Ας δημιουργήσουμε μια δοκιμαστική βάση δεδομένων. Σε αυτήν την περίπτωση, θα δημιουργήσουμε μια βάση δεδομένων που ονομάζεται replication_db.

mysql> CREATE DATABASE replication_db;

Τώρα, συνδεθείτε στην παρουσία MySQL στον slave server.

sudo mysql -u root -p

Τώρα απαριθμήστε τις βάσεις δεδομένων χρησιμοποιώντας το ερώτημα.

mysql> SHOW DATABASES;

Θα παρατηρήσετε ότι η βάση δεδομένων που δημιουργήσατε στο κύριο έχει αντιγραφεί στο slave. Φοβερό ! Η αναπαραγωγή Master-slave της MySQL λειτουργεί όπως αναμένεται! Μπορείτε τώρα να είστε σίγουροι ότι σε περίπτωση αποτυχίας, αντίγραφα των αρχείων της βάσης δεδομένων θα αντιγραφούν στον υποτελή διακομιστή.

συμπέρασμα

Σε αυτόν τον οδηγό, μάθετε πώς να ρυθμίζετε μια ρύθμιση αναπαραγωγής MySQL Master-slave στο Ubuntu 18.04.