Jinsi ya Kusanidi Marudio ya MariaDB (Mwalimu-Mtumwa) katika CentOS/RHEL 7 na Debian 8/9


Hata wakati baadhi ya watu wa TEHAMA wanaposikia maneno Replication ya Hifadhidata, mara nyingi huihusisha na hitaji la kuwa na nakala nyingi za taarifa sawa ili kuepuka upotevu wa data katika tukio la hitilafu ya maunzi au uharibifu wa data. Ingawa hiyo ni kweli kwa kiasi fulani, kuna mengi zaidi ya urudufishaji wa hifadhidata kuliko dhana ya kawaida ya kuhifadhi hifadhidata na upatikanaji wa data.

Miongoni mwa faida zingine za urudiaji wa hifadhidata katika usanidi wa mtumwa-bwana tunaweza kutaja:

  1. Hifadhi rudufu zinaweza kufanywa kwenye seva ya watumwa bila kuathiri (na kuathiriwa na) shughuli za uandishi katika bwana.
  2. Operesheni zinazotumia rasilimali nyingi (kama vile uchanganuzi wa data) zinaweza kufanywa kwa mtumwa bila kuathiri utendakazi wa bwana.

Katika makala haya tutaelezea jinsi ya kusanidi replication ya bwana-mtumwa katika MariaDB 10.1. Kinyume na urudufishaji wa kawaida, MariaDB ilianzisha dhana ya Vitambulisho vya Muamala wa Kimataifa (GTIDs) katika v10.0, ambayo inaruhusu kubadilisha mtumwa kuunganishwa na kunakili kutoka kwa bwana tofauti kwa urahisi. Juu ya hayo, hali ya mtumwa imeandikwa kwa njia ya ajali-salama (sasisho kwa hali hufanyika katika shughuli sawa na sasisho za data).

Ikiwa unatafuta urudufishaji wa MySQL chini ya CentOS/RHEL 6, fuata mwongozo huu Weka Replication ya MySQL (Master-Slave) kwenye CentOS/RHEL 6

Inasakinisha MariaDB 10.1 katika CentOS/RHEL 7 na Debian 8/9

Mazingira yetu ya majaribio yana mashine zifuatazo (zote ni CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Ili kusakinisha toleo jipya zaidi la MariaDB, tutahitaji kuongeza hazina zao kwenye seva zetu. Ikiwa unatumia toleo la zamani la MariaDB sema 5.5, zingatia kupata toleo jipya zaidi la 10.1 ukitumia kifungu kilicho hapa chini.

  1. Boresha MariaDB 5.5 hadi MariaDB 10.1

Unda faili iitwayo MariaDB.repo ndani ya /etc/yum.repos.d yenye maudhui yafuatayo kwenye mifumo ya Mwalimu na Mtumwa:

# 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

Hifadhi faili na usakinishe MariaDB kwenye seva zote mbili kwa kutumia yum:

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

Ongeza ufunguo wa kuthibitisha vifurushi na hazina ya 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'

Kumbuka: Badilisha jina la usambazaji na jina la msimbo katika mstari ulioangaziwa hapo juu.

Sakinisha kwa kutumia apt-get amri:

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

Baada ya kusakinisha MariaDB, endesha utaratibu wa mysql_secure_installation kwa bwana na mtumwa, hebu tuweke sampuli ya hifadhidata ya majaribio katika mashine kuu.

Kuweka Sampuli ya Hifadhidata ya MySQL kwenye Mwalimu

Sasa tutaweka katika seva kuu hifadhidata ya Wafanyikazi kutoka https://github.com/datacharmer/test_db (ambayo hutoa mkusanyiko wa rekodi milioni 4 zilizoenea juu ya majedwali sita) katika hatua mbili rahisi:

Funga hazina na uitumie kuagiza hifadhidata ya sampuli kwenye usakinishaji wako wa MariaDB:

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

Kusanidi Seva ya MySQL kwenye Master

Ili kusanidi bwana, fuata hatua hizi:

HATUA YA 1: Hariri /etc/my.cnf faili. Chini ya [mysqld] sehemu, ongeza mistari minne ifuatayo:

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

na uanze tena MariaDB:

# systemctl restart mariadb

HATUA YA 2: Ingia kwa seva ya MariaDB kama mzizi, unda mtumwa wa mtumiaji na upe ruzuku zinazohitajika:

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;

Amri ya mwisho ( SHOW MASTER STATUS ) inarudisha nafasi ya sasa katika logi ya binary (viwianishi kamili vinavyoonyesha ni mahali gani hasa mtumwa anapaswa kuanza kuiga kutoka:

HATUA YA 3: Ondoka kwenye kidokezo cha MariaDB (kwa toka;) na utumie amri ifuatayo kupiga picha ya hifadhidata ya wafanyikazi. Unapogonga Enter, utaulizwa kuandika nenosiri la mzizi uliloweka awali kupitia mysql_secure_installation:

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

Baada ya utupaji kukamilika, unganisha kwenye seva ya hifadhidata tena ili kufungua meza na kisha uondoke:

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

HATUA YA 4: Nakili dampo kwa mtumwa:

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

HATUA YA 5: Endesha utaratibu wa mysql_upgrade ili kuboresha majedwali ya mfumo (utaombwa kuweka nenosiri la msingi la MariaDB):

# mysql_upgrade -u root -p

HATUA YA 6: Ruhusu huduma ya hifadhidata kupitia ngome:

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

Sasa hebu tusanidi mtumwa.

Kusanidi Seva ya MySQL kwenye Slave

Ili kusanidi mtumwa, fuata hatua hizi:

HATUA YA 1: Fungua akaunti ili kutekeleza majukumu ya kurudia. Unganisha kwa seva ya ndani ya MariaDB na:

# mysql -u root –p

na ingiza nenosiri uliloweka mapema.

HATUA YA 2: Mara tu imeunganishwa kwenye seva ya hifadhidata, tengeneza mtumiaji na hifadhidata tupu, na upe ruhusa:

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

HATUA YA 3: Ondoka kwa haraka ya MariaDB na upakie utupaji ulioundwa kwenye seva kuu:

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

HATUA YA 4: Hariri faili ya /etc/my.cnf ili kukabidhi kitambulisho cha seva kwa mtumwa chini ya sehemu ya [mysqld]. Kumbuka kuwa inahitaji kuwa nambari kamili tofauti na 1, kama tulivyotumia 1 katika bwana:

server_id=2
replicate-do-db=employees

Anzisha tena seva ya hifadhidata:

# systemctl restart mariadb

HATUA YA 5: Endesha utaratibu wa mysql_upgrade ili kuboresha majedwali ya mfumo (utaombwa kuweka nenosiri la msingi la MariaDB):

# mysql_upgrade -u root -p

HATUA YA 6: Mara tu dampo litakapoletwa kwa mtumwa, ni hatua chache tu za kuanza kuiga. Ingia kwenye hifadhidata na uendeshe amri zifuatazo katika haraka ya MariaDB. Zingatia sana vigeu vya MASTER_LOG_FILE na MASTER_LOG_POS, ambavyo vinapaswa kuendana na thamani zilizorejeshwa na SHOW MASTER STATUS katika HATUA ya 2 ya Kuweka mipangilio kuu hapo juu.

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;

HATUA YA 7: Anzisha mtumwa na uangalie hali yake bila kutoka kwa haraka ya MariaDB:

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

Sio kwamba unahitaji hii sasa, lakini kumbuka kuwa unaweza kumsimamisha mtumwa na:

MariaDB [(none)]> STOP SLAVE;

ikiwa amri ya ONYESHA HALI YA MTUMWA\G; italeta hitilafu zozote. Tumia hitilafu hizo kusuluhisha na kisha uendeshe START SLAVE; ili kujaribu tena.

Jaribu Marudio ya Hifadhidata ya MySQL/MariaDB

Wacha tuongeze rekodi kwenye jedwali la wafanyikazi kwenye seva kuu:

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

Kisha hakikisha kwamba mabadiliko haya yaliigwa kwa mtumwa:

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

Kama unaweza kuona, urudufishaji unafanya kazi ipasavyo kutoka kwa bwana hadi mtumwa.

Muhtasari

Katika makala haya tumeelezea jinsi ya kusakinisha toleo jipya zaidi la MariaDB katika CentOS/RHEL 7 na Debian 8/9, na tukajadili jinsi ya kusanidi urudiaji wa utumwa mkuu na GTID. Kwa habari zaidi, unaweza kutaka kurejelea Mwongozo wa Kurudufisha wa MariaDB, na usisite kuwasiliana nasi kwa kutumia fomu iliyo hapa chini ikiwa una maswali au maoni.