Kako postaviti MySQL Master-Slave replikaciju na Ubuntu 18.04


MySQL master-slave replikacija je procedura koja omogućava da se datoteke baze podataka repliciraju ili kopiraju preko jednog ili više čvorova u mreži. Ovo podešavanje pruža redundantnost i toleranciju grešaka tako da u slučaju kvara u Master čvoru, baze podataka se i dalje mogu oporaviti u Podređenom čvoru. Ovo daje korisnicima bezbrižnost da neće sve biti izgubljeno ni u kom slučaju jer se replika baza podataka i dalje može preuzeti sa drugog servera.

U ovom vodiču ćete naučiti kako izvršiti replikaciju MySQL baze podataka Master-slave na Ubuntu 18.04 sistemu.

Preduvjeti

U podešavanju ćemo imati dva servera koji rade na Ubuntu 18.04 sa sljedećim IP adresama.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Hajdemo sada da zaronimo i vidimo kako možemo konfigurirati postavku replikacije Master-slave na Ubuntuu.

Korak 1: Instalirajte MySQL na Master i Slave čvorove

Ubuntu spremišta sadrže verziju 5.7 MySQL. Da biste iskoristili sve nove funkcije i izbjegli potencijalne probleme, trebali biste instalirati najnoviju verziju MySQL-a. Ali prvo, hajde da ažuriramo dva čvora koristeći sljedeću apt naredbu.

sudo apt update

Da instalirate MySQL na oba čvora, izvršite naredbu.

sudo apt install mysql-server mysql-client

Zatim otvorite mysql konfiguracijski fajl.

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

Na Master čvoru, skrolujte i pronađite atribut bind-address kao što je prikazano ispod.

bind-address 	 =127.0.0.1

Promijenite adresu povratne petlje da odgovara IP adresi Master čvora.

bind-address  	=10.128.0.28

Zatim navedite vrijednost za atribut server-id u odjeljku [mysqld]. Broj koji odaberete ne bi trebao odgovarati ni jednom drugom broju ID-a servera. Dodijelimo vrijednost 1.

server-id	 =1

Na samom kraju konfiguracijske datoteke, kopirajte i zalijepite redove ispod.

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

Izađite iz konfiguracijske datoteke i ponovo pokrenite MySQL servis da bi promjene stupile na snagu na glavnom čvoru.

sudo systemctl restart mysql

Da biste potvrdili da MySQL server radi kako se očekuje, izdajte naredbu.

sudo systemctl status mysql

Savršeno! MySQL server radi prema očekivanjima!

Korak 2: Kreirajte novog korisnika za replikaciju na glavnom čvoru

U ovom dijelu ćemo kreirati korisnika replikacije u glavnom čvoru. Da biste to postigli, prijavite se na MySQL server kao što je prikazano.

sudo mysql -u root -p

Zatim nastavite i izvršite upite ispod da kreirate korisnika replike i odobrite pristup slave-u za replikaciju. Ne zaboravite da koristite svoju IP adresu.

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';

Zatim pokrenite sljedeću naredbu.

mysql> SHOW MASTER STATUS\G

Izlaz bi trebao biti sličan onome što možete vidjeti u nastavku.

Budite oprezni i zabilježite vrijednost mysql-bin.000002 i ID pozicije 1643. Ove vrijednosti će biti ključne prilikom postavljanja slave servera.

Korak 3: Konfigurirajte MySQL Slave Server

Idite na slave server i kao što smo uradili sa Glavnim serverom, otvorite MySQL konfiguracioni fajl.

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

Baš kao i glavni server, nastavite sa uređivanjem sljedećih redova.

bind-address           = 10.128.0.29

Kao i prije, navedite vrijednost za atribut server-id u odjeljku [mysqld]. Ovaj put odaberite drugu vrijednost. Idemo s 2.

server-id		=2 

Opet, zalijepite redove ispod na sam kraj konfiguracijske datoteke.

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

Zatim ponovo pokrenite MySQL server na slave čvoru.

sudo systemctl restart mysql

Kada završite, sačuvajte i izađite iz uređivača teksta

Zatim se prijavite na MySQL shell kao što je prikazano.

sudo mysql -u root -p

U ovom koraku, morat ćete napraviti neku konfiguraciju koja će omogućiti slave server da se poveže na glavni server. Ali prvo zaustavite slave niti kao što je prikazano.

mysql> STOP SLAVE; 

Da dozvolite slave serveru da replicira glavni server, pokrenite naredbu.

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;

Ako ste dovoljno zainteresirani, primijetit ćete da smo koristili vrijednost mysql-bin.00002 i ID pozicije 1643 ranije prikazane nakon kreiranja podređenog korisnika replikacije.

Dodatno, korištena je IP adresa glavnog servera, korisnik replikacije i lozinka.

Kasnije pokrenite nit koju ste ranije zaustavili.

mysql> START SLAVE;

Korak 4: Provjerite MySQL Master-Slave replikaciju

Da bismo proverili da li podešavanje zaista radi kako se očekuje, kreiraćemo novu bazu podataka na glavnom serveru i proveriti da li je replicirana na MySQL Slave server.

Prijavite se na MySQL na Master serveru.

sudo mysql -u root -p

Kreirajmo testnu bazu podataka. U ovom slučaju, kreirat ćemo bazu podataka pod nazivom replication_db.

mysql> CREATE DATABASE replication_db;

Sada se prijavite na svoju MySQL instancu na slave serveru.

sudo mysql -u root -p

Sada navedite baze podataka koristeći upit.

mysql> SHOW DATABASES;

Primijetit ćete da je baza podataka koju ste kreirali na masteru replicirana na slave. Sjajno! Vaša MySQL Master-slave replikacija radi kako se očekuje! Sada možete biti sigurni da će u slučaju bilo kakvog kvara, kopije datoteka baze podataka biti replicirane na slave server.

Zaključak

U ovom vodiču ste naučili kako postaviti postavku replikacije MySQL Master-slave na Ubuntu 18.04.