Enter your email address below and subscribe to our newsletter

Ρύθμιση MySQL Replication για Υψηλή Διαθεσιμότητα

Setting up MySQL replication Ensuring data availability and redundancy is a critical aspect of database management.

Share your love

Η διασφάλιση της διαθεσιμότητας και της πλεονασμού των δεδομένων αποτελεί κρίσιμο στοιχείο της διαχείρισης βάσεων δεδομένων. Setting up MySQL replication επιτρέπει στις επιχειρήσεις να επιτύχουν υψηλή διαθεσιμότητα, ανάκτηση από καταστροφές και βελτιωμένη απόδοση. Το MySQL replication επιτρέπει τον αυτόματο συγχρονισμό δεδομένων μεταξύ ενός master server και ενός ή περισσότερων slave servers, μειώνοντας το downtime και εξασφαλίζοντας αδιάλειπτη πρόσβαση σε κρίσιμες πληροφορίες.

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

Τι είναι το MySQL Replication;

Το MySQL replication είναι μια διαδικασία που επιτρέπει τον αυτόματο συγχρονισμό δεδομένων μεταξύ δύο ή περισσότερων MySQL servers. Είναι απαραίτητο για την επίτευξη redundancy, load balancing, and disaster recovery.

Τύποι MySQL Replication

  1. Master-Slave Replication Ένας master διαχειρίζεται εγγραφές, ενώ ένας ή περισσότεροι slaves αναπαράγουν τα δεδομένα για read queries.
  2. Master-Master Replication Δύο ή περισσότεροι servers λειτουργούν ταυτόχρονα ως master και slave, επιτρέποντας εγγραφές και αναγνώσεις.
  3. Group Replication Λύση βασισμένη σε cluster με ανοχή σφαλμάτων και ενσωματωμένο αυτόματο failover.
  4. Semi-Synchronous Replication Διασφαλίζει ότι τουλάχιστον ένας slave έχει λάβει τη συναλλαγή πριν αυτή ολοκληρωθεί.

Για αυτόν τον οδηγό, θα επικεντρωθούμε στο Master-Slave Replicationτο οποίο είναι και το πιο συχνά χρησιμοποιούμενο.

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

Πριν ξεκινήσουμε, βεβαιωθείτε ότι διαθέτετε:

  • Two or more MySQL servers (Master and Slave) installed.
  • Root access to both servers.
  • A stable network connection between the servers.
  • MySQL version 5.7 or later (recommended).

Για περισσότερες λεπτομέρειες, δείτε την επίσημη τεκμηρίωση: MySQL Replication Guide

Step-by-Step Guide to Setting Up MySQL Master-Slave Replication

Configure the Master Server

Step 1: Edit the MySQL Configuration File

Open the my.cnf or mysqld.cnf file (usually located in /etc/mysql/) and modify the following settings:

[mysqld]
bind-address = 0.0.0.0
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase   # Specify the database to replicate

Restart MySQL for changes to take effect:

sudo systemctl restart mysql

Step 2: Create a Replication User

Log in to MySQL and create a dedicated user for replication:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'StrongPassword';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

Step 3: Get the Binary Log Position

Run the following command to get the log file name and position:

SHOW MASTER STATUS;

Take note of File and Position values, as they will be needed on the slave server.

Configure the Slave Server

Step 1: Edit the MySQL Configuration File

Modify the my.cnf or mysqld.cnf file on the slave server:

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log

Restart MySQL:

sudo systemctl restart mysql

Step 2: Connect to the Master Server

Run the following SQL commands to connect the slave to the master:

CHANGE MASTER TO 
    MASTER_HOST='Master_IP_Address',
    MASTER_USER='replicator',
    MASTER_PASSWORD='StrongPassword',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=123456;

(Replace Master_IP_Address, mysql-bin.000001, and 123456 with the actual values from the master server.)

Step 3: Start Replication

START SLAVE;

Verify that replication is running:

SHOW SLAVE STATUS \G;

If Slave_IO_Running and Slave_SQL_Running are both ‘Yes’, replication is working correctly!

Verifying Replication

To test the setup, insert data into the master server:

USE mydatabase;
INSERT INTO users (id, name) VALUES (1, 'John Doe');

Now, check the slave server:

SELECT * FROM users;

If the record appears, your replication is successfully set up!


Troubleshooting Common Issues

Replication stopped unexpectedly? Check the error log:

tail -f /var/log/mysql/error.log

Slave SQL or IO thread not running? Restart replication:

STOP SLAVE;
START SLAVE;
SHOW SLAVE STATUS \G;

Master and slave desynchronized? Resync by taking a fresh dump from the master:

mysqldump -u root -p --all-databases --master-data > backup.sql

Copy the dump to the slave and restore it:

mysql -u root -p < backup.sql

Restart replication after restoring.

For additional troubleshooting steps, refer to this MySQL troubleshooting guide: MySQL Troubleshooting

Συμπέρασμα

Η ρύθμιση MySQL replication αποτελεί καθοριστικό παράγοντα για υψηλή διαθεσιμότητα, εξισορρόπηση φορτίου και ανάκτηση από καταστροφές. Είτε διαχειρίζεστε μια μικρή ιστοσελίδα είτε μια επιχειρησιακού επιπέδου εφαρμογή, το replication διασφαλίζει ότι τα δεδομένα σας παραμένουν διαθέσιμα ακόμη και σε περίπτωση αστοχιών.

🔹 Next Steps: Consider implementing failover mechanisms like MySQL Group Replication or using a load balancer such as HAProxy to improve performance even further!

For more advanced replication setups, check this guide on Group Replication.

Vasileios Dionysopoulos
Vasileios Dionysopoulos
Άρθρα: 17

Stay informed and not overwhelmed, subscribe now!