Slik konfigurerer du MySQL Master-Slave-replikering på Ubuntu 18.04


MySQL master-slave-replikering er en prosedyre som lar databasefiler replikeres eller kopieres over én eller flere noder i et nettverk. Dette oppsettet gir redundans og feiltoleranse slik at i tilfelle feil i Master-noden, kan databasene fortsatt gjenopprettes i Slavenoden. Dette gir brukerne trygghet om at alt ikke vil gå tapt under noen omstendigheter ettersom en kopi av databasene fortsatt kan hentes fra en annen server.

I denne veiledningen skal du lære hvordan du utfører en MySQL database Master-slave replikering på et Ubuntu 18.04 system.

Forutsetninger

I oppsettet kommer vi til å ha to servere som kjører Ubuntu 18.04 med følgende IP-adresser.

Master server: 10.128.0.28
Slave server: 10.128.0.29

La oss nå dykke inn og se hvordan vi kan konfigurere Master-slave-replikeringsoppsettet på Ubuntu.

Trinn 1: Installer MySQL på master- og slavenoder

Ubuntu-repositorier inneholder versjon 5.7 av MySQL. For å dra nytte av eventuelle nye funksjoner og unngå potensielle problemer, bør du installere den nyeste MySQL-versjonen. Men først, la oss oppdatere de to nodene ved å bruke følgende apt-kommando.

sudo apt update

For å installere MySQL på begge noder, utfør kommandoen.

sudo apt install mysql-server mysql-client

Deretter åpner du mysql-konfigurasjonsfilen.

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

Master-noden, rull og finn binding-address-attributtet som vist nedenfor.

bind-address 	 =127.0.0.1

Endre tilbakekoblingsadressen slik at den samsvarer med IP-adressen til Master-noden.

bind-address  	=10.128.0.28

Deretter spesifiser en verdi for server-id-attributtet i [mysqld]-delen. Nummeret du velger skal ikke samsvare med andre server-ID-nummer. La oss tilordne verdien 1.

server-id	 =1

Helt på slutten av konfigurasjonsfilen kopierer og limer du inn linjene 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

Avslutt konfigurasjonsfilen og start MySQL-tjenesten på nytt for at endringene skal tre i kraft på hovednoden.

sudo systemctl restart mysql

For å bekrefte at MySQL-serveren kjører som forventet, utfør kommandoen.

sudo systemctl status mysql

Perfekt! MySQL-serveren kjører som forventet!

Trinn 2: Opprett en ny bruker for replikering på masternode

I denne delen skal vi opprette en replikeringsbruker i masternoden. For å oppnå dette, logg inn på MySQL-serveren som vist.

sudo mysql -u root -p

Fortsett deretter og utfør spørringene nedenfor for å opprette en replikabruker og gi tilgang til replikeringsslaven. Husk å bruke 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';

Deretter kjører du følgende kommando.

mysql> SHOW MASTER STATUS\G

Utgangen skal være lik det du kan se nedenfor.

Vær ivrig og legg merke til mysql-bin.000002-verdien og posisjons-ID-en 1643. Disse verdiene vil være avgjørende når du setter opp slaveserveren.

Trinn 3: Konfigurer MySQL-slaveserveren

Gå ut til slaveserveren og som vi gjorde med Master-serveren, åpne MySQL-konfigurasjonsfilen.

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

Akkurat som hovedserveren, fortsett å redigere følgende linjer.

bind-address           = 10.128.0.29

Som før, spesifiser en verdi for server-id-attributtet i [mysqld]-delen. Velg en annen verdi denne gangen. La oss gå med 2.

server-id		=2 

Igjen, lim inn linjene nedenfor helt på slutten av konfigurasjonsfilen.

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 deretter MySQL-serveren på nytt på slavenoden.

sudo systemctl restart mysql

Når du er ferdig, lagrer og avslutter du tekstredigeringsprogrammet

Deretter logger du på MySQL-skallet som vist.

sudo mysql -u root -p

I dette trinnet må du gjøre noen konfigurasjoner som lar slaveserveren koble seg til masterserveren. Men først, stopp slavetrådene som vist.

mysql> STOP SLAVE; 

For å la slaveserveren replikere hovedserveren, kjør kommandoen.

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;

Hvis du er ivrig nok, vil du se at vi har brukt mysql-bin.00002-verdien og posisjons-ID 1643 tidligere vist etter å ha opprettet slavereplikeringsbrukeren.

I tillegg har hovedserverens IP-adresse, replikeringsbruker og passord blitt brukt.

Senere starter du tråden du tidligere hadde stoppet.

mysql> START SLAVE;

Trinn 4: Bekreft MySQL Master-Slave-replikeringen

For å sjekke om oppsettet faktisk fungerer som forventet, skal vi opprette en ny database på masteren og sjekke om den har blitt replikert på MySQL-slaveserveren.

Logg på MySQL i Master-serveren.

sudo mysql -u root -p

La oss lage en testdatabase. I dette tilfellet vil vi opprette en database kalt replikasjon_db.

mysql> CREATE DATABASE replication_db;

Logg nå på MySQL-forekomsten på slaveserveren.

sudo mysql -u root -p

List nå databasene ved å bruke spørringen.

mysql> SHOW DATABASES;

Du vil legge merke til at databasen du opprettet på master har blitt replikert på slave. Rått ! MySQL Master-slave-replikeringen din fungerer som forventet! Du kan nå være trygg på at i tilfelle feil vil kopier av databasefiler bli replikert til slaveserveren.

Konklusjon

I denne veiledningen lærte du hvordan du setter opp et MySQL Master-slave-replikeringsoppsett på Ubuntu 18.04.