Jinsi ya Kusanidi Replication ya MySQL Master-Slave kwenye Ubuntu 18.04


Urudiaji wa utumwa mkuu wa MySQL ni utaratibu unaoruhusu faili za hifadhidata kunakiliwa au kunakiliwa katika nodi moja au zaidi kwenye mtandao. Mipangilio hii hutoa uhitaji na uvumilivu wa makosa hivi kwamba katika tukio la kutofaulu katika nodi ya Mwalimu, hifadhidata bado zinaweza kurejeshwa katika nodi ya Mtumwa. Hii huwapa watumiaji amani ya akili kwamba yote hayatapotea kwa hali yoyote kwani nakala ya hifadhidata bado inaweza kupatikana kutoka kwa seva tofauti.

Katika mwongozo huu, utajifunza jinsi ya kufanya urudufishaji wa utumwa wa MySQL kwenye mfumo wa Ubuntu 18.04.

Katika usanidi, tutakuwa na seva mbili zinazoendesha Ubuntu 18.04 na anwani zifuatazo za IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Hebu sasa tuzame na tuone jinsi tunavyoweza kusanidi usanidi wa urudufishaji wa mtumwa Mkuu kwenye Ubuntu.

Hatua ya 1: Sakinisha MySQL kwenye Nodi za Mwalimu na Mtumwa

Hifadhi za Ubuntu zina toleo la 5.7 la MySQL. Ili kufaidika na vipengele vyovyote vipya na kuepuka matatizo yanayoweza kutokea, unapaswa kusakinisha toleo jipya zaidi la MySQL. Lakini kwanza, wacha tusasishe nodi mbili kwa kutumia amri ifuatayo inayofaa.

$ sudo apt update

Ili kusakinisha MySQL kwenye nodi zote mbili, tekeleza amri.

$ sudo apt install mysql-server mysql-client

Ifuatayo, Fungua faili ya usanidi ya mysql.

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

Kwenye kifundo kikuu, tembeza na utafute sifa ya bind-anwani kama inavyoonyeshwa hapa chini.

bind-address 	 =127.0.0.1

Badilisha anwani ya kitanzi ili ilingane na anwani ya IP ya nodi Kuu.

bind-address  	=10.128.0.28

Kisha, bainisha thamani ya sifa ya server-id katika sehemu ya [mysqld]. Nambari unayochagua haifai kulingana na nambari nyingine yoyote ya kitambulisho cha seva. Hebu tuweke thamani 1.

server-id	 =1

Mwishoni mwa faili ya usanidi, nakili na ubandike mistari iliyo hapa chini.

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

Toka kwenye faili ya usanidi na uanze upya huduma ya MySQL ili mabadiliko yaanze kutumika kwenye nodi ya Mwalimu.

$ sudo systemctl restart mysql

Ili kuthibitisha kuwa seva ya MySQL inafanya kazi kama inavyotarajiwa, toa amri.

$ sudo systemctl status mysql

Kamili! Seva ya MySQL inafanya kazi kama inavyotarajiwa!

Hatua ya 2: Unda Mtumiaji Mpya kwa Rudia kwenye Njia Kuu

Katika sehemu hii, tutaunda mtumiaji wa replication katika nodi kuu. Ili kufikia hili, ingia kwenye seva ya MySQL kama inavyoonyeshwa.

$ sudo mysql -u root -p

Ifuatayo, endelea na utekeleze hoja zilizo hapa chini ili kuunda nakala ya mtumiaji na kutoa ufikiaji kwa mtumwa wa kunakili. Kumbuka kutumia anwani yako ya 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';

Ifuatayo, endesha amri ifuatayo.

mysql> SHOW MASTER STATUS\G

Matokeo yanapaswa kuwa sawa na yale unaweza kuona hapa chini.

Kuwa mwangalifu na kumbuka thamani ya mysql-bin.000002 na Kitambulisho cha Nafasi 1643. Maadili haya yatakuwa muhimu wakati wa kusanidi seva ya mtumwa.

Hatua ya 3: Sanidi Seva ya Mtumwa ya MySQL

Nenda kwa seva ya mtumwa na kama tulivyofanya na seva kuu, fungua faili ya usanidi ya MySQL.

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

Kama seva kuu, endelea kuhariri mistari ifuatayo.

bind-address           = 10.128.0.29

Kama hapo awali, bainisha thamani ya sifa ya server-id katika sehemu ya [mysqld]. Wakati huu chagua thamani tofauti. Twende na 2.

server-id		=2 

Tena, bandika mistari iliyo hapa chini mwishoni kabisa mwa faili ya usanidi.

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

Ifuatayo anzisha tena seva ya MySQL kwenye nodi ya watumwa.

$ sudo systemctl restart mysql

Mara baada ya kumaliza, hifadhi na uondoke kwenye kihariri cha maandishi

Ifuatayo, ingia kwenye ganda la MySQL kama inavyoonyeshwa.

$ sudo mysql -u root -p

Katika hatua hii, utahitaji kufanya usanidi fulani ambao utaruhusu seva ya mtumwa kuunganishwa na seva kuu. Lakini kwanza, acha nyuzi za watumwa kama inavyoonyeshwa.

mysql> STOP SLAVE; 

Ili kuruhusu seva ya mtumwa kunakili seva kuu, endesha amri.

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;

Ikiwa una nia ya kutosha, utaona kwamba tumetumia mysql-bin.00002 thamani na kitambulisho cha nafasi 1643 kilichoonyeshwa mapema baada ya kuunda mtumiaji wa kurudia mtumwa.

Zaidi ya hayo, anwani ya IP ya seva kuu, mtumiaji wa replication na nenosiri zimetumika.

Baadaye, anzisha uzi uliokuwa umesimamisha hapo awali.

mysql> START SLAVE;

Hatua ya 4: Thibitisha Urudufu wa Mtumwa wa MySQL

Ili kuangalia ikiwa usanidi unafanya kazi kweli inavyotarajiwa, tutaunda hifadhidata mpya kwenye bwana na kuangalia ili kuona ikiwa imeigwa kwenye seva ya MySQL Slave.

Ingia kwenye MySQL kwenye seva kuu.

$ sudo mysql -u root -p

Wacha tuunda hifadhidata ya majaribio. Katika kesi hii, tutaunda hifadhidata inayoitwa replication_db.

mysql> CREATE DATABASE replication_db;

Sasa, ingia kwa mfano wako wa MySQL kwenye seva ya mtumwa.

$ sudo mysql -u root -p

Sasa orodhesha hifadhidata kwa kutumia hoja.

mysql> SHOW DATABASES;

Utagundua hifadhidata uliyounda kwa bwana imeigwa kwenye mtumwa. Inashangaza! Replication yako ya MySQL Master-slave inafanya kazi kama inavyotarajiwa! Sasa unaweza kuwa na uhakika kwamba katika tukio la kushindwa yoyote, nakala za faili za hifadhidata zitaigwa kwa seva ya watumwa.

Katika mwongozo huu, umejifunza jinsi ya kusanidi usanidi wa urudufishaji wa watumwa wa MySQL kwenye Ubuntu 18.04.