sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan konfigureres MySQL Master-Slave Replication på Ubuntu 18.04

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

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 .


  1. Fjern automatisk referenceobjekter ved sletning i MongoDB

  2. Redis 10 gange mere hukommelsesforbrug end data

  3. Spring Data Redis Expire Key

  4. Hvordan ødelægger man job, der står i kø af resque-arbejdere?