Kako postaviti MySQL replikaciju u RHEL, Rocky i AlmaLinux


Replikacija podataka je proces kopiranja vaših podataka na više servera kako bi se poboljšala dostupnost podataka i poboljšala pouzdanost i performanse aplikacije. U replikaciji MySQL, podaci se kopiraju iz baze podataka sa glavnog servera na druge čvorove u realnom vremenu kako bi se osigurala konzistentnost podataka i također da bi se osigurala rezervna kopija i redundantnost.

U ovom vodiču pokazujemo kako možete postaviti MySQL (Master-Slave) replikaciju u distribucijama zasnovanim na RHEL-u kao što su CentOS, Fedora, Rocky Linux, i AlmaLinux.

Postavljanje MySQL replikacije

Dakle, ovo je naša MySQL laboratorijska postavka za replikaciju.

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

Hajde da počnemo…

Korak 1: Instalirajte MySQL na Master i Slave server

Počećemo tako što ćemo instalirati MySQL bazu podataka na master i slave server.

sudo dnf install @mysql

Kada je instalacija završena, odredite točku za pokretanje poslužitelja baze podataka.

sudo systemctl start mysqld

Zatim omogućite da se pokrene do pokretanja sistema ili nakon ponovnog pokretanja.

sudo systemctl enable mysqld

Nakon toga, potvrdite da MySQL server baze podataka radi kao što je prikazano:

sudo systemctl status mysqld

Korak 2: Osigurajte MySQL na glavnom i slave serveru

Sljedeći korak je osigurati MySQL bazu podataka i na master i slave serveru. To je zato što su podrazumevane postavke nesigurne i predstavljaju neke rupe koje hakeri lako mogu iskoristiti.

Dakle, da biste ojačali MySQL, pokrenite naredbu:

sudo mysql_secure_installation

Prvo, od vas će se tražiti da postavite MySQL root lozinku. Obavezno navedite jaku root lozinku, po mogućnosti sa više od 8 znakova koji su mješavina velikih, malih, specijalnih i numeričkih znakova.

Za preostale upite unesite 'Y' da biste podesili server baze podataka na preporučene postavke.

Kada završite sa instalacijom i učvršćivanjem MySQL na glavnom i podređenom čvoru, sljedeće je da konfigurirate glavni čvor.

Korak 3: Konfigurirajte glavni čvor (server)

Sljedeći korak je da konfigurirate Master čvor i dodijelite mu pristup slave čvoru. Prvo, moramo urediti mysql-server.cnf konfiguracijski fajl.

sudo vim /etc/my.cnf.d/mysql-server.cnf

Dodajte sljedeće redove ispod [mysqld] odjeljka.

bind-address	 = 10.128.0.14
server-id 	 = 1
log_bin		 = mysql-bin

Kada završite, sačuvajte promjene i izađite. Zatim ponovo pokrenite MySQL server.

sudo sysemctl restart mysqld

Zatim se prijavite u MySQL ljusku.

sudo mysql -u root -p

Izvršite sljedeće naredbe da kreirate korisnika baze podataka koji će se koristiti za povezivanje glavnog i podređenog uređaja za replikaciju.

mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

Primijenite promjene i izađite iz MySQL servera.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Provjerite status mastera.

mysql> SHOW MASTER STATUS\G

Zabilježite naziv datoteke i poziciju. Ovo će vam trebati kasnije kada postavljate slave za replikaciju. U našem slučaju, imamo naziv datoteke kao mysql-bin.000001 i poziciju 1232.

Korak 4: Konfigurirajte slave čvor (server)

Sada se vratite na Slave čvor. Još jednom, uredite mysql-server.cnf konfiguracijski fajl.

sudo vim /etc/my.cnf.d/mysql-server.cnf

Kao i prije, zalijepite ove linije ispod [mysqld] odjeljka. Promijenite IP adresu da odgovara IP adresi slave-a. Također, dodijelite drugi ID servera. Ovdje smo mu dodijelili vrijednost 2.

bind-address	 = 10.128.15.211
server-id	 = 2
log_bin 	 = mysql-bin

Sačuvajte promjene i izađite iz datoteke. Zatim ponovo pokrenite server baze podataka.

sudo systemctl restart mysqld

Da konfigurišete Slave čvor da se replicira sa glavnog čvora, prijavite se na MySQL server slave-a.

sudo mysql -u root -p

Prvo i najvažnije, zaustavite niti replikacije:

mysql> STOP SLAVE;

Zatim izvršite sljedeću naredbu da konfigurirate slave čvor da replicira baze podataka s glavnog.

mysql> CHANGE MASTER TO
     MASTER_HOST='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='P@ssword321' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

Imajte na umu da oznake MASTER_LOG_FILE i MASTER_LOG_POS odgovaraju vrijednostima datoteke i Pozicije iz Master čvora na kraju Korak 1.

MASTER_HOST, MASTER_USER, i MASTER_PASSWORD odgovaraju glavnoj IP adresi, korisniku replikacije i lozinki korisnika replikacije.

Zatim pokrenite podređene niti replikacije:

mysql> START SLAVE;

Korak 4: Testiranje MySQL Master-Slave replikacije

Sada, da biste testirali da li replikacija između glavnog i podređenog čvora radi, prijavite se na MySQL server baze podataka na glavnom čvoru:

sudo mysql -u root -p

Kreirajte testnu bazu podataka. Ovdje se naša testna baza podataka zove replication_db.

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

Sada idite na slave čvor, prijavite se na MySQL server i potvrdite da je baza podataka replication_db prisutna. Iz donjeg izlaza možemo vidjeti da je baza podataka prisutna. Ovo je potvrda da je izvršena replikacija od glavnog do podređenog čvora.

mysql> SHOW DATABASES;

I to je to, uspješno smo demonstrirali kako možete postaviti MySQL model replikacije master-slave koji može replicirati baze podataka od glavnog čvora do slave čvora.