Kako postaviti MySQL Master-Slave replikaciju na Ubuntu 18.04


MySQL master-slave replikacija je postupak koji omogućuje repliciranje ili kopiranje datoteka baze podataka preko jednog ili više čvorova u mreži. Ova postavka pruža redundanciju i toleranciju na pogreške tako da se u slučaju kvara u Master čvoru baze podataka i dalje mogu oporaviti u Slave čvoru. To korisnicima daje mir da sve neće biti izgubljeno u bilo kojoj situaciji jer se replika baza podataka još uvijek može dohvatiti s drugog poslužitelja.

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

Preduvjeti

U postavkama ćemo imati dva poslužitelja koji pokreću Ubuntu 18.04 sa sljedećim IP adresama.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Zaronimo sada i pogledajmo kako možemo konfigurirati postavku replikacije Master-slave na Ubuntu.

Korak 1: Instalirajte MySQL na glavne i podređene čvorove

Ubuntu spremišta sadrže verziju 5.7 MySQL. Kako biste iskoristili sve nove značajke i izbjegli potencijalne probleme, trebate instalirati najnoviju verziju MySQL-a. Ali prvo, ažurirajmo dva čvora pomoću sljedeće apt naredbe.

sudo apt update

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

sudo apt install mysql-server mysql-client

Zatim otvorite mysql konfiguracijsku datoteku.

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

Na glavnom čvoru pomaknite se i pronađite atribut bind-address kao što je prikazano u nastavku.

bind-address 	 =127.0.0.1

Promijenite povratnu adresu tako da odgovara IP adresi glavnog čvora.

bind-address  	=10.128.0.28

Zatim navedite vrijednost za atribut server-id u odjeljku [mysqld]. Broj koji odaberete ne smije odgovarati nijednom drugom broju ID-a poslužitelja. Dodijelimo vrijednost 1.

server-id	 =1

Na samom kraju konfiguracijske datoteke kopirajte i zalijepite donje retke.

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 ponovno pokrenite MySQL uslugu kako bi promjene stupile na snagu na glavnom čvoru.

sudo systemctl restart mysql

Da biste provjerili radi li MySQL poslužitelj prema očekivanjima, izdajte naredbu.

sudo systemctl status mysql

Savršen! MySQL poslužitelj radi prema očekivanjima!

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

U ovom odjeljku stvorit ćemo korisnika replikacije u glavnom čvoru. Da biste to postigli, prijavite se na MySQL poslužitelj kao što je prikazano.

sudo mysql -u root -p

Zatim nastavite i izvršite upite u nastavku da biste kreirali korisnika replike i odobrili pristup podređenom uređaju replikacije. Ne zaboravite koristiti 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

Ispis bi trebao biti sličan onome što vidite u nastavku.

Budite oprezni i zabilježite vrijednost mysql-bin.000002 i ID pozicije 1643. Ove će vrijednosti biti presudne prilikom postavljanja podređenog poslužitelja.

Korak 3: Konfigurirajte MySQL podređeni poslužitelj

Idite na pomoćni poslužitelj i kao što smo učinili s Glavnim poslužiteljem, otvorite MySQL konfiguracijsku datoteku.

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

Baš kao glavni poslužitelj, nastavite s uređivanjem sljedećih redaka.

bind-address           = 10.128.0.29

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

server-id		=2 

Opet zalijepite donje retke 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 ponovno pokrenite MySQL poslužitelj na podređenom čvoru.

sudo systemctl restart mysql

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

Zatim se prijavite u MySQL ljusku kao što je prikazano.

sudo mysql -u root -p

U ovom koraku morat ćete napraviti konfiguraciju koja će podređenom poslužitelju omogućiti povezivanje s glavnim poslužiteljem. Ali prvo zaustavite podređene niti kao što je prikazano.

mysql> STOP SLAVE; 

Da biste dopustili podređenom poslužitelju da replicira Glavni poslužitelj, 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 upotrijebili vrijednost mysql-bin.00002 i ID pozicije 1643 ranije prikazane nakon stvaranja podređenog korisnika replikacije.

Uz to, korišteni su IP adresa glavnog poslužitelja, korisnik replikacije i lozinka.

Kasnije pokrenite nit koju ste ranije zaustavili.

mysql> START SLAVE;

Korak 4: Provjerite MySQL Master-Slave replikaciju

Kako bismo provjerili radi li postavka doista prema očekivanjima, stvorit ćemo novu bazu podataka na glavnom poslužitelju i provjeriti je li replicirana na MySQL podređenom poslužitelju.

Prijavite se u MySQL na glavnom poslužitelju.

sudo mysql -u root -p

Kreirajmo probnu bazu podataka. U ovom slučaju, stvorit ćemo bazu podataka pod nazivom replication_db.

mysql> CREATE DATABASE replication_db;

Sada se prijavite na svoju MySQL instancu na podređenom poslužitelju.

sudo mysql -u root -p

Sada navedite baze podataka pomoću upita.

mysql> SHOW DATABASES;

Primijetit ćete da je baza podataka koju ste stvorili na master replicirana na slave. Super ! Vaša MySQL Master-slave replikacija radi prema očekivanjima! Sada možete biti sigurni da će u slučaju bilo kakvog kvara kopije datoteka baze podataka biti replicirane na podređeni poslužitelj.

Zaključak

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