Zoeken op website

Hoe MySQL Master-Slave-replicatie in te stellen op Ubuntu 18.04


MySQL master-slave-replicatie is een procedure waarmee databasebestanden kunnen worden gerepliceerd of gekopieerd over een of meer knooppunten in een netwerk. Deze opstelling zorgt voor redundantie en fouttolerantie, zodat in het geval van een storing in het Master-knooppunt de databases nog steeds kunnen worden hersteld in het Slave-knooppunt. Dit geeft gebruikers de gemoedsrust dat alles in geen geval verloren zal gaan, omdat een replica van de databases nog steeds van een andere server kan worden opgehaald.

In deze handleiding leert u hoe u een MySQL database Master-slave replicatie uitvoert op een Ubuntu 18.04 systeem.

Vereisten

In de configuratie hebben we twee servers met Ubuntu 18.04 met de volgende IP-adressen.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Laten we er nu in duiken en kijken hoe we de Master-slave replicatie-instellingen op Ubuntu kunnen configureren.

Stap 1: Installeer MySQL op master- en slave-knooppunten

Ubuntu-opslagplaatsen bevatten versie 5.7 van MySQL. Om te profiteren van nieuwe functies en mogelijke problemen te voorkomen, moet u de nieuwste MySQL-versie installeren. Maar laten we eerst de twee knooppunten bijwerken met behulp van de volgende apt-opdracht.

sudo apt update

Om MySQL op beide knooppunten te installeren, voert u de opdracht uit.

sudo apt install mysql-server mysql-client

Open vervolgens het mysql configuratiebestand.

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

Blader op het Master-knooppunt en zoek het kenmerk bind-address, zoals hieronder weergegeven.

bind-address 	 =127.0.0.1

Wijzig het loopback-adres zodat het overeenkomt met het IP-adres van het Master-knooppunt.

bind-address  	=10.128.0.28

Geef vervolgens een waarde op voor het kenmerk server-id in de sectie [mysqld]. Het nummer dat u kiest, mag niet overeenkomen met een ander server-id-nummer. Laten we de waarde 1 toekennen.

server-id	 =1

Helemaal aan het einde van het configuratiebestand kopieert en plakt u de onderstaande regels.

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

Sluit het configuratiebestand af en start de MySQL-service opnieuw zodat de wijzigingen van kracht worden op het hoofdknooppunt.

sudo systemctl restart mysql

Voer de opdracht uit om te controleren of de MySQL-server naar verwachting werkt.

sudo systemctl status mysql

Perfect! MySQL-server draait zoals verwacht!

Stap 2: Maak een nieuwe gebruiker voor replicatie op het hoofdknooppunt

In deze sectie gaan we een replicatiegebruiker maken in het masterknooppunt. Om dit te bereiken logt u in op de MySQL-server, zoals weergegeven.

sudo mysql -u root -p

Ga vervolgens verder en voer de onderstaande query's uit om een replicagebruiker te maken en toegang te verlenen aan de replicatieslave. Vergeet niet uw IP-adres te gebruiken.

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';

Voer vervolgens de volgende opdracht uit.

mysql> SHOW MASTER STATUS\G

De uitvoer zou vergelijkbaar moeten zijn met wat u hieronder kunt zien.

Wees alert en noteer de waarde mysql-bin.000002 en de positie-ID 1643. Deze waarden zijn van cruciaal belang bij het instellen van de slaveserver.

Stap 3: Configureer de MySQL-slaveserver

Ga naar de slaveserver en open, net als bij de Masterserver, het MySQL-configuratiebestand.

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

Net als bij de masterserver gaat u verder met het bewerken van de volgende regels.

bind-address           = 10.128.0.29

Geef net als voorheen een waarde op voor het kenmerk server-id in de sectie [mysqld]. Selecteer deze keer een andere waarde. Laten we beginnen met 2.

server-id		=2 

Plak de onderstaande regels opnieuw helemaal aan het einde van het configuratiebestand.

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

Start vervolgens de MySQL-server opnieuw op het slave-knooppunt.

sudo systemctl restart mysql

Als u klaar bent, slaat u de tekst op en sluit u de teksteditor af

Log vervolgens in op de MySQL-shell zoals weergegeven.

sudo mysql -u root -p

In deze stap moet u een configuratie uitvoeren waarmee de slaveserver verbinding kan maken met de masterserver. Maar stop eerst de slave-threads zoals weergegeven.

mysql> STOP SLAVE; 

Om de slaveserver de Masterserver te laten repliceren, voert u de opdracht uit.

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;

Als je scherp genoeg bent, zul je zien dat we de waarde mysql-bin.00002 en positie-ID 1643 hebben gebruikt die eerder werd weergegeven na het aanmaken van de slave-replicatiegebruiker.

Bovendien zijn het IP-adres, de replicatiegebruiker en het wachtwoord van de masterserver gebruikt.

Start later de draad die u eerder had gestopt.

mysql> START SLAVE;

Stap 4: Controleer de MySQL Master-Slave-replicatie

Om te controleren of de installatie inderdaad werkt zoals verwacht, gaan we een nieuwe database op de master aanmaken en controleren of deze is gerepliceerd op de MySQL Slave-server.

Log in op MySQL op de Masterserver.

sudo mysql -u root -p

Laten we een testdatabase maken. In dit geval maken we een database met de naam replication_db.

mysql> CREATE DATABASE replication_db;

Log nu in op uw MySQL-instantie op de slaveserver.

sudo mysql -u root -p

Geef nu de databases weer die de query gebruiken.

mysql> SHOW DATABASES;

U zult merken dat de database die u op de master heeft gemaakt, is gerepliceerd op slave. Geweldig ! Uw MySQL Master-slave-replicatie werkt zoals verwacht! U kunt er nu zeker van zijn dat in geval van een storing kopieën van de databasebestanden naar de slaveserver worden gerepliceerd.

Conclusie

In deze handleiding hebt u geleerd hoe u een MySQL Master-slave-replicatie-opstelling kunt instellen op Ubuntu 18.04.