MySQL master-slave replikering är en procedur som gör att databasfiler kan replikeras eller kopieras över en eller flera noder i ett nätverk. Denna inställning ger redundans och feltolerans så att i händelse av ett fel i Masternoden , kan databaserna fortfarande återställas i Slavnoden . Detta ger användarna sinnesfrid att allt inte kommer att gå förlorat i alla fall eftersom en replik av databaserna fortfarande kan hämtas från en annan server.
I den här guiden kommer du att lära dig hur du utför en MySQL databas Master-slave replikering på en Ubuntu 18.04 system.
Förutsättningar
I installationen kommer vi att ha två servrar som kör Ubuntu 18.04 med följande IP-adresser.
Master server: 10.128.0.28 Slave server: 10.128.0.29
Låt oss nu dyka in och se hur vi kan konfigurera Master-slave replikeringsinställningar på Ubuntu .
Steg 1:Installera MySQL på master- och slavnoder
Ubuntu arkiv innehåller version 5.7 av MySQL . För att dra nytta av alla nya funktioner och undvika potentiella problem bör du installera den senaste MySQL-versionen. Men först, låt oss uppdatera de två noderna med följande apt-kommando.
$ sudo apt update
För att installera MySQL på båda noderna, kör kommandot.
$ sudo apt install mysql-server mysql-client
Öppna sedan mysql konfigurationsfil.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
På Master-noden , bläddra och leta reda på bind-address
attribut som visas nedan.
bind-address =127.0.0.1
Ändra loopback-adressen så att den matchar IP-adressen för Masternoden .
bind-address =10.128.0.28
Ange sedan ett värde för server-id
attribut i [mysqld]
sektion. Numret du väljer bör inte matcha något annat server-id-nummer. Låt oss tilldela värdet 1
.
server-id =1
I slutet av konfigurationsfilen, kopiera och klistra in raderna nedan.
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
Avsluta konfigurationsfilen och starta om MySQL-tjänsten för att ändringarna ska träda i kraft på huvudnoden.
$ sudo systemctl restart mysql
För att verifiera att MySQL-servern körs som förväntat, utfärda kommandot.
$ sudo systemctl status mysql
Perfekt! MySQL-servern körs som förväntat!
Steg 2:Skapa en ny användare för replikering på huvudnoden
I det här avsnittet kommer vi att skapa en replikeringsanvändare i masternoden . För att uppnå detta, logga in på MySQL-servern som visas.
$ sudo mysql -u root -p
Fortsätt sedan och kör frågorna nedan för att skapa en replikanvändare och ge åtkomst till replikeringsslaven. Kom ihåg att använda din IP-adress.
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';
Kör sedan följande kommando.
mysql> SHOW MASTER STATUS\G
Utdata bör likna det du kan se nedan.
Var angelägen och notera mysql-bin.000002
värde och positions-ID 1643
. Dessa värden kommer att vara avgörande när du konfigurerar slavservern .
Steg 3:Konfigurera MySQL-slavservern
Gå ut till slavservern och som vi gjorde med Masterservern , öppna MySQL-konfigurationsfilen.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Precis som huvudservern , fortsätt att redigera följande rader.
bind-address = 10.128.0.29
Som tidigare, ange ett värde för server-id
attribut i [mysqld]
sektion. Välj ett annat värde den här gången. Låt oss gå med 2
.
server-id =2
Återigen, klistra in raderna nedan i slutet av konfigurationsfilen.
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
Starta sedan om MySQL-servern på slavnoden.
$ sudo systemctl restart mysql
När du är klar, spara och avsluta textredigeraren
Logga sedan in på MySQL-skalet som visas.
$ sudo mysql -u root -p
I det här steget måste du göra någon konfiguration som tillåter slavservern för att ansluta till huvudservern . Men först, stoppa slavtrådarna som visas.
mysql> STOP SLAVE;
För att tillåta slavservern för att replikera huvudservern , kör kommandot.
mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;
Om du är tillräckligt sugen kommer du att se att vi har använt mysql-bin.00002
värde och positions-ID 1643
visades tidigare efter att slavreplikeringsanvändaren skapats.
Dessutom har huvudserverns IP-adress, replikeringsanvändare och lösenord använts.
Starta senare tråden som du tidigare stoppat.
mysql> START SLAVE;
Steg 4:Verifiera MySQL Master-Slave-replikeringen
För att kontrollera om installationen verkligen fungerar som förväntat, kommer vi att skapa en ny databas på mastern och kontrollera om den har replikerats på MySQL-slavservern.
Logga in på MySQL på Master-servern .
$ sudo mysql -u root -p
Låt oss skapa en testdatabas. I det här fallet kommer vi att skapa en databas som heter replikering_db .
mysql> CREATE DATABASE replication_db;
Logga nu in på din MySQL-instans i slavservern .
$ sudo mysql -u root -p
Lista nu databaserna med hjälp av frågan.
mysql> SHOW DATABASES;
Du kommer att märka databasen du skapade på master har replikerats på slav . Grymt bra ! Din MySQL Master-slave-replikering fungerar som förväntat! Du kan nu vara säker på att kopior av databasfiler replikeras till slavservern i händelse av fel.
Slutsats
I den här guiden lärde du dig hur du ställer in en MySQL Master-slave replikeringsinställningar på Ubuntu 18.04 .