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
På 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.