Kaip nustatyti „MariaDB“ (pagrindinį pavaldinį) replikaciją „CentOS/RHEL 7“ ir „Debian 8/9“


Net kai kurie IT žmonės išgirsta frazę „Duomenų bazės replikacija“, jie dažnai tai sieja su poreikiu turėti kelias tos pačios informacijos kopijas, kad būtų išvengta duomenų praradimo aparatinės įrangos gedimo ar duomenų sugadinimo atveju. Nors tai tam tikru mastu tiesa, duomenų bazės replikacija yra daug daugiau nei įprasta duomenų bazės atsarginių kopijų kūrimo ir duomenų prieinamumo koncepcija.

Tarp kitų duomenų bazės replikacijos pranašumų pagrindinio-pavaldžiojoje sąrankoje galime paminėti:

  1. Atsarginės kopijos gali būti daromos pagalbiniame serveryje, nepažeidžiant (ir neturint įtakos) rašymo operacijoms pagrindiniame serveryje.
  2. Daug išteklių reikalaujančios operacijos (pavyzdžiui, duomenų analizė) gali būti atliekamos su vergu, nedarant įtakos pagrindinio įrenginio veikimui.

Šiame straipsnyje paaiškinsime, kaip nustatyti pagrindinio ir pavaldinio replikaciją MariaDB 10.1. Priešingai nei klasikinis replikavimas, MariaDB pristatė pasaulinių operacijų ID (GTID) koncepciją v10.0, kuri leidžia pakeisti vergą į lengvai prisijunkite ir atkartokite iš kito pagrindinio kompiuterio. Be to, vergo būsena įrašoma saugiu būdu (būsenos atnaujinimai atliekami toje pačioje operacijoje kaip ir duomenų atnaujinimai).

Jei ieškote MySQL replikacijos pagal CentOS/RHEL 6, vadovaukitės šiuo vadovu. Nustatykite „MySQL“ (pagrindinį pavaldinį) replikaciją „CentOS“/RHEL 6

MariaDB 10.1 diegimas CentOS/RHEL 7 ir Debian 8/9

Mūsų testavimo aplinką sudaro šie įrenginiai (abu yra CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Norėdami įdiegti naujausią MariaDB versiją, turėsime pridėti jų saugyklas į savo serverius. Jei naudojate senesnę MariaDB versiją, tarkime 5.5, apsvarstykite galimybę atnaujinti į naujausią 10.1 versiją naudodami toliau pateiktą straipsnį.

  1. Atnaujinkite MariaDB 5.5 į MariaDB 10.1

CentOS/RHEL

Sukurkite failą pavadinimu MariaDB.repo, esantį /etc/yum.repos.d su šiuo turiniu ir Master, ir Slave< sistemos:

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šsaugokite failą ir įdiekite MariaDB abiejuose serveriuose naudodami yum:

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

„Debian“/„Ubuntu“.

Pridėkite raktą, kad patvirtintumėte paketus ir MariaDB saugyklą:

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'

Pastaba: anksčiau paryškintoje eilutėje pakeiskite platinimo pavadinimą ir kodo pavadinimą.

Įdiekite naudodami komandą apt-get:

apt-get update
apt-get install mariadb-server

Įdiegę „MariaDB“, paleiskite mysql_secure_installation procedūrą tiek pagrindiniame, tiek pavalduje, o pagrindiniame įrenginyje sukurkime bandomosios duomenų bazės pavyzdį.

„Master“ pavyzdinės „MySQL“ duomenų bazės nustatymas

Dabar pagrindiniame serveryje nustatysime Darbuotojų duomenų bazę iš https://github.com/datacharmer/test_db (kurioje pateikiamas 4 duomenų rinkinys milijonai įrašų, paskirstytų šešiose lentelėse) dviem paprastais veiksmais:

Klonuokite saugyklą ir naudokite ją pavyzdinei duomenų bazei importuoti į „MariaDB“ diegimą:

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

„MySQL Server“ konfigūravimas „Master“.

Norėdami sukonfigūruoti pagrindinį įrenginį, atlikite šiuos veiksmus:

1 ŽINGSNIS: redaguokite failą /etc/my.cnf. Skiltyje [mysqld] pridėkite šias keturias eilutes:

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

ir iš naujo paleiskite MariaDB:

systemctl restart mariadb

2 ŽINGSNIS: prisijunkite prie MariaDB serverio kaip root, sukurkite vartotojo vergą ir priskirkite reikiamas dotacijas:

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;

Komanda paskutinė (SHOW MASTER STATUS) grąžina dabartinę padėtį dvejetainiame žurnale (tikslios koordinatės, kurios tiksliai nurodo, nuo kurio taško pavaldinys turėtų pradėti replikuoti):

3 ŽINGSNIS: išeikite iš MariaDB raginimo (su exit;) ir naudokite šią komandą, kad padarytumėte momentinę darbuotojų duomenų bazės nuotrauką. Kai paspausite Enter, būsite paraginti įvesti root slaptažodį, kurį anksčiau nustatėte naudodami mysql_secure_installation:

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

Baigę išrašymą, vėl prisijunkite prie duomenų bazės serverio, kad atrakintumėte lenteles, ir išeikite:

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

4 ŽINGSNIS: nukopijuokite iškeltį į pavaldinį:

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

5 ŽINGSNIS: paleiskite mysql_upgrade procedūrą, kad atnaujintumėte sistemos lenteles (būsite paraginti įvesti MariaDB root slaptažodį):

mysql_upgrade -u root -p

6 ŽINGSNIS: leiskite duomenų bazės paslaugą per užkardą:

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

Dabar sukonfigūruokime vergą.

„MySQL Server“ konfigūravimas „Slave“.

Norėdami sukonfigūruoti vergą, atlikite šiuos veiksmus:

1 ŽINGSNIS: sukurkite paskyrą, kad atliktumėte replikacijos užduotis. Prisijunkite prie vietinio MariaDB serverio naudodami:

mysql -u root –p

ir įveskite slaptažodį, kurį nustatėte anksčiau.

2 ŽINGSNIS: Prisijungę prie duomenų bazės serverio, sukurkite naudotoją ir tuščią duomenų bazę bei suteikite leidimus:

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

3 ŽINGSNIS: išeikite iš MariaDB raginimo ir įkelkite pagrindiniame serveryje sukurtą išklotinę:

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

4 ŽINGSNIS: redaguokite failą /etc/my.cnf, kad priskirtumėte serverio ID vergui pagal [mysqld]< /kodas> skyrių. Atminkite, kad jis turi būti kitoks sveikasis skaičius nei 1, nes pagrindiniame laukelyje naudojome 1:

server_id=2
replicate-do-db=employees

Iš naujo paleiskite duomenų bazės serverį:

systemctl restart mariadb

5 ŽINGSNIS: paleiskite mysql_upgrade procedūrą, kad atnaujintumėte sistemos lenteles (būsite paraginti įvesti MariaDB root slaptažodį):

mysql_upgrade -u root -p

6 ŢINGSNIS: kai iškrovimas bus importuotas į vergą, tereikia atlikti kelis veiksmus ir pradėti replikuoti. Prisijunkite prie duomenų bazės ir paleiskite šias komandas MariaDB eilutėje. Ypatingą dėmesį atkreipkite į MASTER_LOG_FILE ir MASTER_LOG_POS kintamuosius, kurie turėtų atitikti reikšmes, kurias grąžina SHOW MASTER STATUS, atlikus 2 veiksmą „Pagrindinio įrenginio konfigūravimas“ aukščiau.

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;

7 ŽINGSNIS: paleiskite vergą ir patikrinkite jo būseną neišeidami iš MariaDB raginimo:

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

Ne todėl, kad jums to reikia dabar, bet atminkite, kad vergą galite sustabdyti naudodami:

MariaDB [(none)]> STOP SLAVE;

jei komanda SHOW SLAVE STATUS\G; grąžina klaidas. Naudokite šias klaidas trikčių šalinimui ir paleiskite START SLAVE;, kad išbandytumėte dar kartą.

Išbandykite „MySQL“/„MariaDB“ duomenų bazės replikaciją

Pridėkite įrašą į darbuotojų lentelę pagrindiniame serveryje:

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

Tada patikrinkite, ar šis pakeitimas buvo pakartotas vergume:

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

Kaip matote, replikacija veikia tinkamai nuo pagrindinio iki vergo.

Santrauka

Šiame straipsnyje paaiškinome, kaip įdiegti naujausią MariaDB versiją CentOS/RHEL 7 ir Debian 8/9, ir aptarėme, kaip nustatyti pagrindinio ir pavaldaus replikaciją naudojant GTID. Norėdami gauti daugiau informacijos, galbūt norėsite peržiūrėti MariaDB replikacijos vadovą ir nedvejodami susisiekite su mumis naudodami toliau pateiktą formą, jei turite klausimų ar komentarų.