Otu esi edozi MySQL Master-Slave Replication na Ubuntu 18.04


MySQL master-slave replication bụ usoro na-enye ohere ka emegharị ma ọ bụ depụta faịlụ nchekwa data gafee otu ọnụ ma ọ bụ karịa na netwọk. Ntọlite a na-enye nkwụsịghachi na ntachi obi dị ka na ọ bụrụ na ọdịda dị na Master node, a ka nwere ike nwetaghachi ọdụ data na oghere ohu. Nke a na-enye ndị ọrụ udo nke uche na ihe niile agaghị efu n'ime ihe ọ bụla dị ka oyiri nke ọdụ data ka enwere ike nwetaghachi na sava dị iche.

N'ime ntuziaka a, ị ga-amụta otu esi eme MySQL nchekwa data Master-ohu na sistemụ Ubuntu 18.04.

Na nhazi ahụ, anyị ga-enwe sava abụọ na-agba Ubuntu 18.04 na adreesị IP ndị a.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Ka anyị banye ugbu a wee hụ ka anyị nwere ike isi hazie nrụpụta nrụgharị Master-ohu na Ubuntu.

Kwụpụ 1: Wụnye MySQL na Master and Slave Nodes

Ebe nchekwa Ubuntu nwere ụdị 5.7 nke MySQL. Iji jiri njirimara ọhụrụ ọ bụla wee zere nsogbu ndị nwere ike ime, ị kwesịrị ịwụnye ụdị MySQL ọhụrụ. Mana nke mbụ, ka anyị melite ọnụ abụọ ahụ site na iji iwu dabara adaba.

$ sudo apt update

Iji wụnye MySQL na ọnụ abụọ, mebie iwu ahụ.

$ sudo apt install mysql-server mysql-client

Ọzọ, mepee faịlụ nhazi mysql.

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

N'elu ọnụ ụzọ nna ukwu, pịgharịa gaa na chọta bind-address dị ka egosiri n'okpuru.

bind-address 	 =127.0.0.1

Gbanwee adreesị loopback ka ọ dabara na adreesị IP nke ọnụ Master.

bind-address  	=10.128.0.28

Na-esote, kọwaa uru maka àgwà server-id na ngalaba [mysqld]. Nọmba ị họọrọ agaghị adaba na nọmba sava-ID ọ bụla ọzọ. Ka anyị kenye uru 1.

server-id	 =1

Na njedebe nke faịlụ nhazi ahụ, detuo ma mado ahịrị ndị dị n'okpuru.

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

Wepụ faịlụ nhazi ahụ wee malitegharịa ọrụ MySQL maka mgbanwe ndị ahụ ka ọ dị na Master node.

$ sudo systemctl restart mysql

Iji nyochaa na MySQL nkesa na-agba ọsọ dị ka a tụrụ anya, nye iwu.

$ sudo systemctl status mysql

Zuru oke! Ihe nkesa MySQL na-arụ ọrụ dịka a tụrụ anya!

Kwụpụ 2: Mepụta onye ọrụ ọhụrụ maka mmegharị na Master Node

N'akụkụ a, anyị ga-emepụta onye na-emegharị ihe n'ime oghere ukwu. Iji mezuo nke a, banye na sava MySQL dị ka egosiri.

$ sudo mysql -u root -p

Na-esote, gaba na mebie ajụjụ ndị dị n'okpuru ka ịmepụta onye ọrụ oyiri wee nye ohere ịnweta ohu mmegharị ahụ. Cheta iji adreesị IP gị.

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

Na-esote, mee iwu na-esonụ.

mysql> SHOW MASTER STATUS\G

Ihe mmepụta kwesịrị ịdị ka nke ị nwere ike ịhụ n'okpuru.

Kpachara anya ma rịba ama uru mysql-bin.000002 yana NJ ọnọdụ 1643. Ụkpụrụ ndị a ga-adị mkpa mgbe ị na-edozi ihe nkesa ohu.

Kwụpụ 3: Hazie sava MySQL

Gaa na sava ohu na dị ka anyị mere ihe nkesa Master, mepee faịlụ nhazi MySQL.

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

Dịka ihe nkesa nna ukwu, gaba n'ihu dezie ahịrị ndị a.

bind-address           = 10.128.0.29

Dịka ọ dị na mbụ, kọwapụta uru maka njirimara server-id na ngalaba [mysqld]. Oge a họrọ uru dị iche. Ka anyị jiri 2 gaa.

server-id		=2 

Ọzọ, mado ahịrị ndị dị n'okpuru na njedebe nke faịlụ nhazi ahụ.

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

Ọzọ malitegharịa ihe nkesa MySQL na ọnụ ohu.

$ sudo systemctl restart mysql

Ozugbo emechara, chekwaa wee pụọ na ndezi ederede

Ọzọ, banye na MySQL shei dị ka egosiri.

$ sudo mysql -u root -p

N'ime usoro a, ị ga-achọ ịme nhazi nke ga-ekwe ka ihe nkesa ohu jikọọ na ihe nkesa nna ukwu. Mana buru ụzọ kwụsị eriri ohu dị ka egosiri.

mysql> STOP SLAVE; 

Ka ikwe ka ihe nkesa ohu megharịa ihe nkesa Master, mee iwu ahụ.

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;

Ọ bụrụ na ị na-anụ ọkụ n'obi, ị ga-ahụ na anyị ejirila mysql-bin.00002 uru na ọnọdụ ID 1643 gosipụtara na mbụ mgbe emechara onye ọrụ mmegharị ohu.

Na mgbakwunye, ejirila adreesị IP nke ihe nkesa Master, onye na-emegharịgharị na paswọọdụ.

E mesịa, malite threadi ahụ ị kwụsịrị na mbụ.

mysql> START SLAVE;

Kwụpụ 4: Nyochaa MySQL Master-Slave Replication

Iji lelee ma ntọlite na-arụ ọrụ n'ezie dịka a tụrụ anya ya, anyị ga-emepụta nchekwa data ọhụrụ na nna ukwu wee lelee ma ọ bụrụ na emegharịrị ya na sava MySQL.

Banye na MySQL na ihe nkesa Master.

$ sudo mysql -u root -p

Ka anyị mepụta nchekwa data ule. N'okwu a, anyị ga-emepụta nchekwa data a na-akpọ replication_db.

mysql> CREATE DATABASE replication_db;

Ugbu a, banye na ihe atụ MySQL na sava ohu.

$ sudo mysql -u root -p

Ugbu a depụta ọdụ data site na iji ajụjụ.

mysql> SHOW DATABASES;

Ị ga-achọpụta na nchekwa data ị mepụtara na nna ukwu ka emegharịrị na ohu. Dị egwu! Ntugharị MySQL Master-ohu na-arụ ọrụ dịka a tụrụ anya ya! Ị nwere ike ijide n'aka ugbu a na ọ bụrụ na ọdịda ọ bụla, a ga-emegharị faịlụ nchekwa data na sava ohu.

N'ime ntuziaka a, ị mụtara ka esi melite MySQL Master-ohu replication setup na Ubuntu 18.04.