Giunsa ang Pag-setup sa MariaDB (Master-Slave) Replication sa CentOS/RHEL 7 ug Debian 8/9


Bisan kung ang pipila ka mga IT nga mga tawo makadungog sa hugpong sa mga pulong nga Database replication, kanunay nila kini gilangkit sa panginahanglan nga adunay daghang mga kopya sa parehas nga kasayuran aron malikayan ang pagkawala sa datos kung adunay pagkapakyas sa hardware o pagkadunot sa datos. Bisan kung tinuod kana sa usa ka sukod, adunay labi pa sa pagkopya sa database kaysa sa sagad nga konsepto sa pag-backup sa usa ka database ug pagkaanaa sa datos.

Lakip sa ubang mga benepisyo sa replikasyon sa database sa usa ka master-slave setup mahimo natong hisgutan:

  1. Mahimo ang mga backup sa slave server nga dili maapektuhan (ug maapektuhan) sa mga operasyon sa pagsulat sa master.
  2. Ang mga operasyon nga kusog sa kahinguhaan (sama sa pagtuki sa datos) mahimong ipahigayon sa ulipon nga dili makaimpluwensya sa performance sa agalon.

Niini nga artikulo atong ipasabut kung giunsa ang pag-set up sa master-slave replication sa MariaDB 10.1. Sukwahi sa klasiko nga replikasyon, gipaila sa MariaDB ang konsepto sa Global Transaction IDs (GTIDs) sa v10.0, nga nagtugot sa pag-usab sa usa ka ulipon aron dali nga makonektar ug makopya gikan sa lain nga agalon. Labaw pa niana, ang kahimtang sa ulipon girekord sa usa ka paagi nga luwas sa pag-crash (ang mga pag-update sa estado gihimo sa parehas nga transaksyon sama sa mga pag-update sa datos).

Kung nangita ka ug replikasyon sa MySQL ubos sa CentOS/RHEL 6, sunda kini nga giya Setup MySQL (Master-Slave) Replication sa CentOS/RHEL 6

Pag-instalar sa MariaDB 10.1 sa CentOS/RHEL 7 ug Debian 8/9

Ang among testing environment naglangkob sa mosunod nga mga makina (parehong CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Aron ma-install ang pinakabag-o nga bersyon sa MariaDB, kinahanglan namon nga idugang ang ilang mga repository sa among mga server. Kung naggamit ka sa mas daan nga bersyon sa MariaDB isulti ang 5.5, hunahunaa ang pag-upgrade sa pinakabag-o nga bersyon sa 10.1 gamit ang artikulo sa ubos.

  1. Upgrde ang MariaDB 5.5 ngadto sa MariaDB 10.1

Paghimo og file nga ginganlag MariaDB.repo sulod sa /etc/yum.repos.d nga adunay mosunod nga sulod sa Master ug Slave nga sistema:

# MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

I-save ang file ug i-install ang MariaDB sa duha ka server gamit ang yum:

# yum update && yum install MariaDB-server MariaDB-client

Idugang ang yawe sa pag-authenticate sa mga pakete ug ang repositoryo sa MariaDB:

# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

Pahinumdom: Ilisan ang distribution name ug codename sa taas nga highlighted line.

I-install gamit ang apt-get command:

# apt-get update
# apt-get install mariadb-server

Kung na-install na nimo ang MariaDB, padagana ang mysql_secure_installation nga pamaagi sa master ug slave, magbutang kita usa ka sample nga database sa pagsulay sa master machine.

Pag-set up sa Sample MySQL Database sa Agalon

I-set up na namo sa master server ang database nga Employees gikan sa https://github.com/datacharmer/test_db (nga naghatag og dataset sa 4 ka milyon nga mga rekord nga mikaylap sa unom ka mga lamesa) sa duha ka yano nga mga lakang:

I-clone ang repository ug gamita kini aron ma-import ang sample database sa imong pag-install sa MariaDB:

# git clone https://github.com/datacharmer/test_db
# cd test_db
# mysql < employees.sql

Pag-configure sa MySQL Server sa Master

Aron ma-configure ang master, sunda kini nga mga lakang:

LAKANG 1: I-edit ang /etc/my.cnf file. Ubos sa [mysqld] nga seksyon, idugang ang mosunod nga upat ka linya:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

ug i-restart ang MariaDB:

# systemctl restart mariadb

STEP 2: Pag-log on sa MariaDB server isip gamut, paghimo sa user nga ulipon ug pag-assign sa gikinahanglan nga mga grants:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

Ang kataposang sugo (SHOW MASTER STATUS) mibalik sa kasamtangan nga posisyon sa binary log (ang eksaktong mga koordinasyon nga nagpakita sa eksakto kung asa nga punto ang ulipon kinahanglan magsugod sa pagkopya gikan sa:

STEP 3: Exit sa MariaDB prompt (uban sa exit;) ug gamita ang mosunod nga command aron makakuha og snapshot sa database sa mga empleyado. Kung naigo nimo ang Enter, maaghat ka nga i-type ang password para sa gamut nga imong gi-set up sa sayo pa pinaagi sa mysql_secure_installation:

# mysqldump -u root -p employees > employees-dump.sql

Human makompleto ang dump, kumonekta pag-usab sa database server aron maablihan ang mga lamesa ug dayon mogawas:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

LAKANG 4: Kopyaha ang dump sa ulipon:

# scp employees-dump.sql [email :/root/ 

LAKANG 5: Pagdalagan ang mysql_upgrade nga pamaagi aron ma-upgrade ang mga lamesa sa sistema (giaghat ka sa pagsulod sa root password sa MariaDB):

# mysql_upgrade -u root -p

LAKANG 6: Tugoti ang serbisyo sa database pinaagi sa firewall:

# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
# firewall-cmd --reload

Karon atong i-configure ang ulipon.

Pag-configure sa MySQL Server sa Slave

Aron ma-configure ang ulipon, sunda kini nga mga lakang:

LAKANG 1: Paghimo og account aron mahimo ang mga buluhaton sa pagkopya. Sumpaysumpaya ang lokal nga MariaDB server gamit ang:

# mysql -u root –p

ug isulod ang password nga imong gi-set up sa sayo pa.

LAKANG 2: Sa higayon nga konektado sa database server, paghimo sa user ug usa ka walay sulod nga database, ug paghatag permiso:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

LAKANG 3: Exit ang MariaDB prompt ug i-load ang dump nga gihimo sa master server:

# mysql -u root -p employees < employees-dump.sql

LAKANG 4: I-edit ang /etc/my.cnf file para mag-assign ug server ID sa slave ubos sa [mysqld] section. Timan-i nga kini kinahanglan nga lahi nga integer kaysa 1, ingon nga gigamit namon ang 1 sa master:

server_id=2
replicate-do-db=employees

I-restart ang database server:

# systemctl restart mariadb

LAKANG 5: Pagdalagan ang mysql_upgrade nga pamaagi aron ma-upgrade ang mga lamesa sa sistema (giaghat ka sa pagsulod sa root password sa MariaDB):

# mysql_upgrade -u root -p

LAKANG 6: Sa higayon nga ang dump ma-import na ngadto sa ulipon, kita sa pipila lamang ka mga lakang sa pagsugod sa pagkopya. Pag-log on sa database ug padagana ang mosunod nga mga sugo sa MariaDB prompt. Hatagi ug espesyal nga pagtagad ang MASTER_LOG_FILE ug MASTER_LOG_POS variables, nga kinahanglang motakdo sa mga bili nga gibalik sa SHOW MASTER STATUS sa STEP 2 sa “Configuring the master” sa ibabaw.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

LAKANG 7: Sugdi ang ulipon ug susiha ang kahimtang niini nga dili mogawas sa prompt sa MariaDB:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

Dili nga kinahanglan nimo kini karon, apan timan-i nga mahimo nimong hunongon ang ulipon sa:

MariaDB [(none)]> STOP SLAVE;

kung ang SHOW SLAVE STATUS\G; nga sugo mubalik ug bisan unsang mga sayop. Gamita kana nga mga sayup aron masulbad ang problema ug dayon padagan ang START SLAVE; aron masulayan pag-usab.

Sulayi ang MySQL/MariaDB Database Replication

Atong idugang ang usa ka rekord sa lamesa sa mga empleyado sa master server:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Unya pamatud-i nga kini nga pagbag-o gisundog sa ulipon:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

Sama sa imong nakita, ang pagkopya nagtrabaho sa husto gikan sa agalon hangtod sa ulipon.

Summary

Sa kini nga artikulo gipasabut namon kung giunsa ang pag-install sa labing bag-ong bersyon sa MariaDB sa CentOS/RHEL 7 ug Debian 8/9, ug gihisgutan kung giunsa ang pag-set up sa master-slave nga replikasyon sa mga GTID. Para sa dugang nga impormasyon, mahimo nimong tan-awon ang Giya sa Pag-replika sa MariaDB, ug ayaw pagpanuko sa pagkontak kanamo gamit ang porma sa ubos kung naa kay mga pangutana o komento.