MySQL master-slave replikering er en procedure, der tillader databasefiler at blive replikeret eller kopieret på tværs af en eller flere noder i et netværk. Denne opsætning giver redundans og fejltolerance, således at i tilfælde af en fejl i Master-noden , kan databaserne stadig gendannes i Slaveknuden . Dette giver brugerne ro i sindet om, at alt ikke vil gå tabt under nogen omstændigheder, da en replika af databaserne stadig kan hentes fra en anden server.
I denne guide vil du lære, hvordan du udfører en MySQL database Master-slave replikering på en Ubuntu 18.04 system.
Forudsætninger
I opsætningen kommer vi til at have to servere, der kører Ubuntu 18.04 med følgende IP-adresser.
Master server: 10.128.0.28 Slave server: 10.128.0.29
Lad os nu dykke ned og se, hvordan vi kan konfigurere Master-slaven replikeringsopsætning på Ubuntu .
Trin 1:Installer MySQL på master- og slavenoder
Ubuntu repositories indeholder version 5.7 af MySQL . For at drage fordel af eventuelle nye funktioner og undgå potentielle problemer, bør du installere den seneste MySQL-version. Men først, lad os opdatere de to noder ved hjælp af følgende apt-kommando.
$ sudo apt update


For at installere MySQL på begge noder, udfør kommandoen.
$ sudo apt install mysql-server mysql-client


Åbn derefter mysql konfigurationsfil.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
På Master-noden , rul og find bind-address
attribut som vist nedenfor.
bind-address =127.0.0.1
Skift loopback-adressen til at matche IP-adressen på Master-noden .
bind-address =10.128.0.28


Angiv derefter en værdi for server-id
attribut i [mysqld]
afsnit. Det nummer, du vælger, bør ikke matche noget andet server-id-nummer. Lad os tildele værdien 1
.
server-id =1


Til allersidst i konfigurationsfilen skal du kopiere og indsætte linjerne nedenfor.
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
Afslut konfigurationsfilen, og genstart MySQL-tjenesten, for at ændringerne træder i kraft på Master node.
$ sudo systemctl restart mysql
For at bekræfte, at MySQL-serveren kører som forventet, skal du udsende kommandoen.
$ sudo systemctl status mysql


Perfekt! MySQL-serveren kører som forventet!
Trin 2:Opret en ny bruger til replikering på masternode
I dette afsnit skal vi oprette en replikeringsbruger i masterknuden . For at opnå dette skal du logge ind på MySQL-serveren som vist.
$ sudo mysql -u root -p
Fortsæt derefter og udfør forespørgslerne nedenfor for at oprette en replikabruger og give adgang til replikeringsslaven. Husk at bruge din IP-adresse.
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 derefter følgende kommando.
mysql> SHOW MASTER STATUS\G
Outputtet skal ligne det, du kan se nedenfor.


Vær ivrig og læg mærke til mysql-bin.000002
værdi og positions-id'et 1643
. Disse værdier vil være afgørende ved opsætning af slaveserveren .
Trin 3:Konfigurer MySQL-slaveserveren
Gå ud til slaveserveren og som vi gjorde med masterserveren , skal du åbne MySQL-konfigurationsfilen.
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Ligesom masterserveren , fortsæt med at redigere følgende linjer.
bind-address = 10.128.0.29


Som før skal du angive en værdi for server-id
attribut i [mysqld]
afsnit. Denne gang skal du vælge en anden værdi. Lad os gå med 2
.
server-id =2


Igen, indsæt linjerne nedenfor i slutningen af 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
Genstart derefter MySQL-serveren på slavenoden.
$ sudo systemctl restart mysql
Når du er færdig, skal du gemme og afslutte teksteditoren
Log derefter på MySQL-skallen som vist.
$ sudo mysql -u root -p
I dette trin skal du lave en konfiguration, der tillader slaveserveren for at oprette forbindelse til masterserveren . Men stop først slavetrådene som vist.
mysql> STOP SLAVE;
For at tillade slaveserveren for at replikere masterserveren , kør kommandoen.
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;


Hvis du er ivrig nok, vil du se, at vi har brugt mysql-bin.00002
værdi og positions-id 1643
tidligere vist efter oprettelse af slavereplikeringsbrugeren.
Derudover er masterserverens IP-adresse, replikeringsbruger og adgangskode blevet brugt.
Start senere den tråd, du tidligere havde stoppet.
mysql> START SLAVE;
Trin 4:Bekræft MySQL Master-Slave-replikeringen
For at kontrollere, om opsætningen faktisk fungerer som forventet, vil vi oprette en ny database på masteren og kontrollere, om den er blevet replikeret på MySQL-slaveserveren.
Log ind på MySQL på masterserveren .
$ sudo mysql -u root -p
Lad os oprette en testdatabase. I dette tilfælde vil vi oprette en database kaldet replikation_db .
mysql> CREATE DATABASE replication_db;
Log nu ind på din MySQL-instans i slaveserveren .
$ sudo mysql -u root -p
List nu databaserne ved hjælp af forespørgslen.
mysql> SHOW DATABASES;


Du vil bemærke den database, du oprettede på masteren er blevet replikeret på slave . Fantastisk ! Din MySQL Master-slave-replikering fungerer som forventet! Du kan nu være sikker på, at i tilfælde af fejl, vil kopier af databasefiler blive replikeret til slaveserveren.
Konklusion
I denne vejledning lærte du, hvordan du opsætter en MySQL Master-slave replikeringsopsætning på Ubuntu 18.04 .