Hvernig á að setja upp MariaDB (Master-Slave) afritun í CentOS/RHEL 7 og Debian 8/9


Jafnvel þegar sumir upplýsingatæknifólk heyrir setninguna „afritun gagnagrunns“, tengja þeir það oft við þörfina á að hafa mörg afrit af sömu upplýsingum til að forðast gagnatap ef vélbúnaðarbilun eða gagnaspilling verður. Þó að það sé satt að vissu marki, þá er miklu meira við afritun gagnagrunna en hin almenna hugmynd að taka öryggisafrit af gagnagrunni og aðgengi að gögnum.

Meðal annarra kosta við afritun gagnagrunns í uppsetningu meistaraþræls má nefna:

  1. Hægt er að taka öryggisafrit á þrælaþjóninum án þess að hafa áhrif á (og verða fyrir áhrifum af) skrifaðgerðum í masternum.
  2. Auðlindafrekar aðgerðir (eins og gagnagreining) er hægt að framkvæma á þrælnum án þess að hafa áhrif á frammistöðu skipstjórans.

Í þessari grein munum við útskýra hvernig á að setja upp master-slave afritun í MariaDB 10.1. Öfugt við klassíska afritun, kynnti MariaDB hugtakið Global Transaction IDs (GTID) í v10.0, sem gerir kleift að breyta þræli til að tengjast og endurtaka frá öðrum meistara auðveldlega. Ofan á það er ástand þrælsins skráð á hrun-öruggan hátt (uppfærslur á ástandinu eru gerðar í sömu viðskiptum og uppfærslur á gögnunum).

Ef þú ert að leita að MySQL afritun undir CentOS/RHEL 6, fylgdu þessari handbók Uppsetning MySQL (Master-Slave) afritunar á CentOS/RHEL 6

Að setja upp MariaDB 10.1 í CentOS/RHEL 7 og Debian 8/9

Prófunarumhverfi okkar samanstendur af eftirfarandi vélum (báðar CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Til að setja upp nýjustu útgáfuna af MariaDB þurfum við að bæta geymslum þeirra við netþjóna okkar. Ef þú ert að nota eldri útgáfu af MariaDB segjum 5.5 skaltu íhuga að uppfæra í nýjustu 10.1 útgáfuna með því að nota greinina hér að neðan.

  1. Uppfærðu MariaDB 5.5 í MariaDB 10.1

Búðu til skrá sem heitir MariaDB.repo inni í /etc/yum.repos.d með eftirfarandi innihaldi á bæði Master og Slave kerfum:

# 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

Vistaðu skrána og settu upp MariaDB á báðum netþjónum með því að nota yum:

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

Bættu við lyklinum til að sannvotta pakka og MariaDB geymsluna:

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

Athugið: Skiptu um dreifingarheiti og kóðaheiti í auðkenndu línunni hér að ofan.

Settu upp með því að nota apt-get skipunina:

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

Þegar þú hefur sett upp MariaDB skaltu keyra mysql_secure_installation málsmeðferðina á bæði skipstjóra og þræl, við skulum setja upp sýnishornsprófunargagnagrunn í aðalvélinni.

Setja upp sýnishorn af MySQL gagnagrunni á Master

Við munum nú setja upp Starfsmenn gagnagrunninn á aðalþjóninum frá https://github.com/datacharmer/test_db (sem veitir gagnapakka með 4 milljón færslum dreift á sex töflur) í tveimur einföldum skrefum:

Klónaðu geymsluna og notaðu hana til að flytja inn sýnishornið í MariaDB uppsetninguna þína:

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

Stilla MySQL Server á Master

Til að stilla meistarann skaltu fylgja þessum skrefum:

SKREF 1: Breyttu /etc/my.cnf skránni. Undir [mysqld] hlutanum skaltu bæta við eftirfarandi fjórum línum:

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

og endurræstu MariaDB:

# systemctl restart mariadb

SKREF 2: Skráðu þig inn á MariaDB netþjóninn sem rót, búðu til notendaþrælinn og úthlutaðu nauðsynlegum styrkjum:

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;

Síðasta skipunin (SHOW MASTER STATUS) skilar núverandi stöðu í tvíundarskránni (nákvæm hnit sem gefa til kynna nákvæmlega á hvaða tímapunkti þrællinn ætti að byrja að endurtaka frá:

SKREF 3: Farðu úr MariaDB hvetjunni (með exit;) og notaðu eftirfarandi skipun til að taka skyndimynd af gagnagrunni starfsmanna. Þegar þú ýtir á Enter verðurðu beðinn um að slá inn lykilorðið fyrir root sem þú settir upp áðan í gegnum mysql_secure_installation:

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

Eftir að tappinu er lokið skaltu tengjast gagnagrunnsþjóninum aftur til að opna töflurnar og hætta síðan:

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

SKREF 4: Afritaðu sorphauginn til þrælsins:

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

SKREF 5: Keyrðu mysql_upgrade málsmeðferðina til að uppfæra kerfistöflurnar (þú verður beðinn um að slá inn MariaDB rót lykilorðið):

# mysql_upgrade -u root -p

SKREF 6: Leyfðu gagnagrunnsþjónustunni í gegnum eldvegginn:

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

Nú skulum við stilla þrælinn.

Stillir MySQL Server á Slave

Til að stilla þrælinn skaltu fylgja þessum skrefum:

SKREF 1: Búðu til reikninginn til að framkvæma afritunarverkefnin. Tengstu við staðbundna MariaDB netþjóninn með:

# mysql -u root –p

og sláðu inn lykilorðið sem þú settir upp áðan.

SKREF 2: Þegar þú hefur tengt við gagnagrunnsþjóninn skaltu búa til notandann og tóman gagnagrunn og veita heimildir:

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

SKREF 3: Farðu úr MariaDB hvetjunni og hlaðið sorpinu sem búið var til á aðalþjóninum:

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

SKREF 4: Breyttu /etc/my.cnf skránni til að úthluta auðkenni miðlara til þrælsins undir [mysqld] hlutanum. Athugaðu að það þarf að vera önnur heil tala en 1, þar sem við notuðum 1 í masternum:

server_id=2
replicate-do-db=employees

Endurræstu gagnagrunnsþjóninn:

# systemctl restart mariadb

SKREF 5: Keyrðu mysql_upgrade málsmeðferðina til að uppfæra kerfistöflurnar (þú verður beðinn um að slá inn MariaDB rót lykilorðið):

# mysql_upgrade -u root -p

SKREF 6: Þegar sorphaugurinn hefur verið fluttur inn til þrælsins erum við aðeins nokkur skref til að byrja að endurtaka. Skráðu þig inn í gagnagrunninn og keyrðu eftirfarandi skipanir í MariaDB hvetjunni. Gefðu sérstaka athygli að MASTER_LOG_FILE og MASTER_LOG_POS breytunum, sem ættu að passa við gildin sem SÝNA MASTER STATUS skilaði í SKREF 2 í „Stilling meistarans“ hér að ofan.

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;

SKREF 7: Ræstu þrælinn og athugaðu stöðu hans án þess að fara út úr MariaDB hvetjunni:

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

Ekki það að þú þurfir þetta núna, en athugaðu að þú getur stöðvað þrælinn með:

MariaDB [(none)]> STOP SLAVE;

ef SHOW SLAVE STATUS\G; skipunin skilar einhverjum villum. Notaðu þessar villur til að leysa og keyrðu síðan START SLAVE; til að prófa aftur.

Prófaðu afritun MySQL/MariaDB gagnagrunns

Við skulum bæta færslu við starfsmannatöfluna á aðalþjóninum:

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

Staðfestu síðan að þessi breyting hafi verið endurtekin í þrælnum:

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

Eins og þú sérð virkar afritunin rétt frá meistara til þræls.

Samantekt

Í þessari grein höfum við útskýrt hvernig á að setja upp nýjustu útgáfuna af MariaDB í CentOS/RHEL 7 og Debian 8/9 og rætt hvernig á að setja upp master-slave afritun með GTID. Fyrir frekari upplýsingar gætirðu viljað vísa til MariaDB afritunarleiðbeiningarinnar og ekki hika við að hafa samband við okkur með því að nota formið hér að neðan ef þú hefur spurningar eða athugasemdir.