Kif Twaqqaf MySQL Master-Slave Replication fuq Ubuntu 18.04


MySQL master-slave replika hija proċedura li tippermetti li l-fajls tad-database jiġu replikati jew ikkupjati fuq nodu wieħed jew aktar f'netwerk. Din is-setup tipprovdi redundancy u tolleranza għall-ħsarat b'tali mod li f'każ ta 'falliment fin-node Master, id-databases xorta jistgħu jiġu rkuprati fin-node Slav. Dan jagħti lill-utenti paċi tal-moħħ li kollox mhux se jintilef fl-ebda eventwalità peress li replika tad-databases xorta tista 'tiġi rkuprata minn server differenti.

F'din il-gwida, inti se titgħallem kif twettaq database MySQL Master-slave replikazzjoni fuq sistema Ubuntu 18.04.

Fis-setup, se jkollna żewġ servers li jaħdmu Ubuntu 18.04 bl-indirizzi IP li ġejjin.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Ejja issa nimxu u naraw kif nistgħu kkonfiguraw is-setup tar-replikazzjoni Master-slave fuq Ubuntu.

Pass 1: Installa MySQL fuq Master u Slave Nodes

Ir-repożitorji ta' Ubuntu fihom il-verżjoni 5.7 ta' MySQL. Biex tieħu vantaġġ minn kwalunkwe karatteristika ġdida u tevita kwistjonijiet potenzjali, għandek tinstalla l-aħħar verżjoni MySQL. Imma l-ewwel, ejja naġġornaw iż-żewġ nodi billi tuża l-kmand apt li ġej.

$ sudo apt update

Biex tinstalla MySQL fuq iż-żewġ nodi, tesegwixxi l-kmand.

$ sudo apt install mysql-server mysql-client

Sussegwentement, Iftaħ il-fajl tal-konfigurazzjoni mysql.

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

Fuq in-node Master, iscroll u sib l-attribut bind-address kif muri hawn taħt.

bind-address 	 =127.0.0.1

Ibdel l-indirizz loopback biex taqbel mal-indirizz IP tan-node Master.

bind-address  	=10.128.0.28

Sussegwentement, speċifika valur għall-attribut server-id fit-taqsima [mysqld]. In-numru li tagħżel m'għandux jaqbel ma' xi numru ieħor ta' server-id. Ejja nassenjaw il-valur 1.

server-id	 =1

Fl-aħħar nett tal-fajl tal-konfigurazzjoni, ikkupja u waħħal il-linji hawn taħt.

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

Oħroġ mill-fajl tal-konfigurazzjoni u erġa ibda s-servizz MySQL biex il-bidliet jidħlu fis-seħħ fuq in-node Master.

$ sudo systemctl restart mysql

Biex tivverifika li s-server MySQL qed jaħdem kif mistenni, agħti l-kmand.

$ sudo systemctl status mysql

Perfetta! MySQL server qed jaħdem kif mistenni!

Pass 2: Oħloq Utent Ġdid għar-Replikazzjoni fuq Master Node

F'din it-taqsima, se noħolqu utent ta 'replikazzjoni fin-node prinċipali. Biex tikseb dan, idħol fis-server MySQL kif muri.

$ sudo mysql -u root -p

Sussegwentement, ipproċedi u wettaq il-mistoqsijiet hawn taħt biex toħloq utent replika u tagħti aċċess lill-iskjav tar-replikazzjoni. Ftakar li tuża l-indirizz IP tiegħek.

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

Sussegwentement, mexxi l-kmand li ġej.

mysql> SHOW MASTER STATUS\G

L-output għandu jkun simili għal dak li tista 'tara hawn taħt.

Kun ħerqan u nnota l-valur mysql-bin.000002 u l-ID tal-Pożizzjoni 1643. Dawn il-valuri se jkunu kruċjali meta jitwaqqaf is-server slave.

Pass 3: Ikkonfigura s-Server Slave MySQL

Oħroġ lejn is-server tal-iskjavi u bħalma għamilna mas-server Master, iftaħ il-fajl tal-konfigurazzjoni MySQL.

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

Eżatt bħas-server prinċipali, ipproċedi biex teditja l-linji li ġejjin.

bind-address           = 10.128.0.29

Bħal qabel, speċifika valur għall-attribut server-id fit-taqsima [mysqld]. Din id-darba agħżel valur differenti. Ejja mmorru b'2.

server-id		=2 

Għal darb'oħra, waħħal il-linji hawn taħt fl-aħħar nett tal-fajl tal-konfigurazzjoni.

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

Li jmiss ibda mill-ġdid is-server MySQL fuq node slave.

$ sudo systemctl restart mysql

Ladarba jsir, issalva u oħroġ mill-editur tat-test

Sussegwentement, idħol fil-qoxra MySQL kif muri.

$ sudo mysql -u root -p

F'dan il-pass, ser ikollok bżonn tagħmel xi konfigurazzjoni li tippermetti lis-server slave jikkonnettja mas-server kaptan. Imma l-ewwel, waqqaf il-ħjut slave kif muri.

mysql> STOP SLAVE; 

Biex tippermetti lis-server slave jirreplika s-server Master, mexxi l-kmand.

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;

Jekk int ħerqan biżżejjed, tosserva li użajna l-valur mysql-bin.00002 u l-ID tal-pożizzjoni 1643 murija qabel wara li ħloqna l-utent tar-replikazzjoni tal-iskjavi.

Barra minn hekk, intużaw l-indirizz IP, l-utent tar-replikazzjoni u l-password tas-server Master.

Aktar tard, ibda l-ħajt li kont waqaf qabel.

mysql> START SLAVE;

Pass 4: Ivverifika r-Replikazzjoni MySQL Master-Slave

Biex niċċekkjaw jekk is-setup tabilħaqq qed jaħdem kif mistenni, se noħolqu database ġdida fuq il-kaptan u niċċekkjaw biex naraw jekk ġietx replikata fuq is-server MySQL Slave.

Idħol fil-MySQL fis-server Master.

$ sudo mysql -u root -p

Ejja noħolqu database tat-test. F'dan il-każ, se noħolqu database msejħa replication_db.

mysql> CREATE DATABASE replication_db;

Issa, idħol fl-istanza MySQL tiegħek fis-server tal-iskjavi.

$ sudo mysql -u root -p

Issa elenka d-databases billi tuża l-mistoqsija.

mysql> SHOW DATABASES;

Tinduna li d-database li ħloqt fuq il-kaptan ġiet replikata fuq slave. Biża '! Ir-replikazzjoni MySQL Master-slave tiegħek qed taħdem kif mistenni! Issa tista' sserraħ rasek li fil-każ ta' xi falliment, kopji tal-fajls tad-database jiġu replikati fis-server tal-iskjavi.

F'din il-gwida, tgħallimt kif twaqqaf setup ta' replikazzjoni MySQL Master-slave fuq Ubuntu 18.04.