Kako nastaviti replikacijo MySQL Master-Slave v Ubuntu 18.04


Podvajanje MySQL master-slave je postopek, ki omogoča kopiranje ali kopiranje datotek zbirke podatkov v enem ali več vozliščih v omrežju. Ta nastavitev zagotavlja redundanco in odpornost na napake, tako da lahko v primeru okvare v glavnem vozlišču zbirke podatkov še vedno obnovimo v vozlišču Slave. To daje uporabnikom mir, da v nobenem primeru ne bo izgubljeno, saj je repliko baz podatkov še vedno mogoče dobiti z drugega strežnika.

V tem priročniku boste izvedeli, kako izvesti replikacijo Master-slave baze podatkov MySQL v sistemu Ubuntu 18.04.

Pri namestitvi bomo imeli dva strežnika z Ubuntu 18.04 z naslednjimi naslovi IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Potopimo se zdaj in poglejmo, kako lahko v Ubuntu nastavimo nastavitev replikacije Master-slave.

1. korak: Namestite MySQL na glavna in podrejena vozlišča

Repozitoriji Ubuntu vsebujejo različico 5.7 MySQL. Če želite izkoristiti nove funkcije in se izogniti morebitnim težavam, namestite najnovejšo različico MySQL. Najprej pa posodobimo obe vozlišči z naslednjim ukazom apt.

$ sudo apt update

Če želite namestiti MySQL na obe vozlišči, izvedite ukaz.

$ sudo apt install mysql-server mysql-client

Nato odprite konfiguracijsko datoteko mysql.

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

Na glavnem vozlišču se pomaknite in poiščite atribut bind-address , kot je prikazano spodaj.

bind-address 	 =127.0.0.1

Spremenite naslov povratne zanke, da se ujema z naslovom IP glavnega vozlišča.

bind-address  	=10.128.0.28

Nato v razdelku [mysqld] podajte vrednost za atribut server-id . Številka, ki jo izberete, se ne sme ujemati z nobeno drugo številko id strežnika. Dodelimo vrednost 1 .

server-id	 =1

Na samem koncu konfiguracijske datoteke kopirajte in prilepite spodnje vrstice.

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

Zaprite konfiguracijsko datoteko in znova zaženite storitev MySQL, da bodo spremembe začele veljati na glavnem vozlišču.

$ sudo systemctl restart mysql

Če želite preveriti, ali strežnik MySQL deluje po pričakovanjih, izdajte ukaz.

$ sudo systemctl status mysql

Odlično! Strežnik MySQL deluje po pričakovanjih!

2. korak: Ustvarite novega uporabnika za kopiranje na glavnem vozlišču

V tem razdelku bomo v glavnem vozlišču ustvarili uporabnika replikacije. Da bi to dosegli, se prijavite v strežnik MySQL, kot je prikazano.

$ sudo mysql -u root -p

Nato nadaljujte in izvedite spodnja poizvedbe, da ustvarite uporabnika replike in odobrite dostop do podrejenega podrejenega. Ne pozabite uporabiti svojega naslova IP.

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

Nato zaženite naslednji ukaz.

mysql> SHOW MASTER STATUS\G

Rezultat mora biti podoben tistemu, ki ga vidite spodaj.

Bodite pozorni in upoštevajte vrednost mysql-bin.000002 in ID položaja 1643 . Te vrednosti bodo ključne pri nastavitvi podrejenega strežnika.

3. korak: konfigurirajte strežnik MySQL Slave

Pojdite na pomožni strežnik in tako kot pri glavnem strežniku odprite konfiguracijsko datoteko MySQL.

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

Tako kot glavni strežnik nadaljujte z urejanjem naslednjih vrstic.

bind-address           = 10.128.0.29

Kot prej določite vrednost za atribut server-id v razdelku [mysqld] . Tokrat izberite drugo vrednost. Gremo z 2 .

server-id		=2 

Spet prilepite spodnje vrstice na sam konec 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

Nato znova zaženite strežnik MySQL na podrejenem vozlišču.

$ sudo systemctl restart mysql

Ko končate, shranite in zapustite urejevalnik besedil

Nato se prijavite v lupino MySQL, kot je prikazano.

$ sudo mysql -u root -p

V tem koraku boste morali narediti nekaj konfiguracije, ki bo podrejenemu strežniku omogočila povezavo z glavnim strežnikom. Najprej pa zaustavite pomožne niti, kot je prikazano.

mysql> STOP SLAVE; 

Če želite podrejenemu strežniku omogočiti kopiranje glavnega strežnika, zaženite ukaz.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email ', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Če ste dovolj navdušeni, boste opazili, da smo uporabili mysql-bin.00002 vrednost in ID položaja 1643 , ki so bili prej prikazani po ustvarjanju uporabnika podrejenega podrejenega.

Poleg tega so bili uporabljeni IP naslov glavnega strežnika, uporabnik za kopiranje in geslo.

Kasneje zaženite nit, ki ste jo prej ustavili.

mysql> START SLAVE;

4. korak: Preverite podvajanje MySQL Master-Slave

Če želite preveriti, ali namestitev res deluje po pričakovanjih, bomo ustvarili novo zbirko podatkov na glavni enoti in preverili, ali je bila podvojena na strežniku MySQL Slave.

Prijavite se v MySQL v glavnem strežniku.

$ sudo mysql -u root -p

Ustvarimo testno bazo podatkov. V tem primeru bomo ustvarili bazo podatkov, imenovano replication_db.

mysql> CREATE DATABASE replication_db;

Zdaj se prijavite v svoj primerek MySQL na pomožnem strežniku.

$ sudo mysql -u root -p

Zdaj navedite zbirke podatkov z uporabo poizvedbe.

mysql> SHOW DATABASES;

Opazili boste, da je bila baza podatkov, ki ste jo ustvarili na glavni enoti, podvojena na pomožni enoti. Super! Vaša replikacija MySQL Master-slave deluje po pričakovanjih! Zdaj ste lahko prepričani, da bodo v primeru kakršne koli napake kopije datotek zbirke podatkov podvojene na podrejeni strežnik.

V tem priročniku ste izvedeli, kako nastaviti nastavitev replikacije MySQL Master-slave v Ubuntu 18.04.