Kā iestatīt MariaDB (Master-Slave) replikāciju centOS/RHEL 7 un Debian 8/9


Pat tad, kad daži IT cilvēki dzird frāzi “Datu bāzes replikācija”, viņi to bieži saista ar nepieciešamību iegūt vairākas vienas un tās pašas informācijas kopijas, lai aparatūras kļūmes vai datu bojājumu gadījumā izvairītos no datu zaudēšanas. Lai gan tas zināmā mērā ir taisnība, datu bāzes replikācijai ir daudz vairāk nekā kopējai datu bāzes dublēšanas koncepcijai un datu pieejamībai.

Starp citām datu bāzes replikācijas priekšrocībām galvenā-verga iestatījumā mēs varam pieminēt:

  1. Dublējumkopijas var veikt vergu serverī, neietekmējot (un neietekmējot) galvenajā rakstīšanas operācijas.
  2. Darbiniekus ar resursiem (piemēram, datu analīzi) var veikt ar vergu, neietekmējot kapteiņa sniegumu.

Šajā rakstā mēs paskaidrosim, kā iestatīt galvenā-verga replikāciju MariaDB 10.1. Atšķirībā no klasiskās replikācijas, MariaDB v10.0 versijā ieviesa globālo darījumu ID (GTID) jēdzienu, kas ļauj mainīt vergu, lai viegli izveidotu savienojumu ar citu master un atkārtotu no tā. Papildus tam verga stāvoklis tiek reģistrēts drošā avārijā (stāvokļa atjaunināšana tiek veikta tajā pašā darījumā kā datu atjaunināšana).

Ja meklējat MySQL replikāciju zem CentOS/RHEL 6, izpildiet šo rokasgrāmatu MySQL (Master-Slave) replikācijas iestatīšana CentOS/RHEL 6

MariaDB 10.1 instalēšana CentOS/RHEL 7 un Debian 8/9

Mūsu testēšanas vide sastāv no šādām mašīnām (abas ir CentOS 7):

Master: 192.168.0.18
Slave: 192.168.0.19

Lai instalētu jaunāko MariaDB versiju, mums būs jāpievieno viņu krātuves mūsu serveriem. Ja izmantojat vecāku MariaDB versiju, piemēram, 5.5, apsveriet jaunināšanu uz jaunāko versiju 10.1, izmantojot zemāk esošo rakstu.

  1. Jauniniet MariaDB 5.5 uz MariaDB 10.1

Izveidojiet failu ar nosaukumu MariaDB.repo /etc/yum.repos.d ar šādu saturu gan Master, gan Slave sistēmās:

# 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

Saglabājiet failu un instalējiet MariaDB abos serveros, izmantojot yum:

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

Pievienojiet atslēgu pakotņu un MariaDB repozitorija autentificēšanai:

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

Piezīme: Aizstājiet izplatīšanas nosaukumu un koda nosaukumu iepriekš iezīmētajā rindā.

Instalējiet, izmantojot komandu apt-get:

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

Kad esat instalējis MariaDB, palaidiet procedūru mysql_secure_installation gan galvenajā, gan vergā, izveidojiet testa datu bāzes paraugu galvenajā mašīnā.

MySQL datu bāzes parauga iestatīšana Master

Tagad galvenajā serverī mēs izveidosim datu bāzi Darbinieki no https://github.com/datacharmer/test_db (kas nodrošina 4 miljonu ierakstu datu kopu, kas sadalīts sešās tabulās) divās vienkāršās darbībās:

Klonējiet krātuvi un izmantojiet to, lai importētu datu bāzes paraugu savā MariaDB instalācijā:

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

MySQL servera konfigurēšana Master

Lai konfigurētu galveno, veiciet šīs darbības:

1. SOLIS: rediģējiet failu /etc/my.cnf . Sadaļā [mysqld] pievienojiet šādas četras rindas:

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

un restartējiet MariaDB:

# systemctl restart mariadb

2. SOLIS: Piesakieties MariaDB serverī kā root, izveidojiet lietotāja vergu un piešķiriet nepieciešamās dotācijas:

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;

Pēdējā komanda (RĀDĪT MASTERA STATUSU) atgriež pašreizējo stāvokli binārā žurnālā (precīzas koordinātas, kas precīzi norāda, kurā brīdī vergam jāsāk replikēt:

3. SOLIS: Aizveriet uzvedni MariaDB (ar exit; ) un izmantojiet šo komandu, lai izveidotu darbinieku datu bāzes momentuzņēmumu. Nospiežot Enter, jums tiks lūgts ievadīt paroli saknei, kuru iestatījāt agrāk, izmantojot mysql_secure_installation :

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

Kad izgāšana ir pabeigta, vēlreiz izveidojiet savienojumu ar datu bāzes serveri, lai atbloķētu tabulas un pēc tam izietu:

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

4. SOLIS: Kopējiet izgāztuvi vergam:

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

5. SOLIS: Palaidiet procedūru mysql_upgrade , lai jauninātu sistēmas tabulas (jums tiks piedāvāts ievadīt MariaDB saknes paroli):

# mysql_upgrade -u root -p

6. SOLIS: Atļaujiet datu bāzes pakalpojumam, izmantojot ugunsmūri:

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

Tagad konfigurēsim vergu.

MySQL servera konfigurēšana vergā

Lai konfigurētu vergu, rīkojieties šādi:

1. SOLIS: izveidojiet kontu, lai veiktu replikācijas uzdevumus. Izveidojiet savienojumu ar vietējo MariaDB serveri, izmantojot:

# mysql -u root –p

un ievadiet paroli, kuru iestatījāt agrāk.

2. SOLIS: Kad esat izveidojis savienojumu ar datu bāzes serveri, izveidojiet lietotāju un tukšu datu bāzi un piešķiriet atļaujas:

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

3. SOLIS: Aizveriet uzvedni MariaDB un ielādējiet galveno serverī izveidoto izgāztuvi:

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

4. SOLIS: rediģējiet failu /etc/my.cnf , lai sadaļā [mysqld] piešķirtu vergam servera ID. Ņemiet vērā, ka tam jābūt atšķirīgam skaitlim nekā 1, jo galvenajā ierīcē mēs izmantojām 1:

server_id=2
replicate-do-db=employees

Restartējiet datu bāzes serveri:

# systemctl restart mariadb

5. SOLIS: Palaidiet procedūru mysql_upgrade , lai jauninātu sistēmas tabulas (jums tiks piedāvāts ievadīt MariaDB saknes paroli):

# mysql_upgrade -u root -p

6. SOLIS: Kad izgāztuve ir importēta vergam, mums ir tikai daži soļi, lai sāktu replikāciju. Piesakieties datu bāzē un izpildiet šīs komandas uzvednē MariaDB. Pievērsiet īpašu uzmanību mainīgajiem MASTER_LOG_FILE un MASTER_LOG_POS , kuriem jāatbilst SHOW MASTER STATUS atgrieztajām vērtībām iepriekš “Master konfigurēšana” 2. SOLĪ.

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. SOLIS: Startējiet vergu un pārbaudiet tā statusu, neizejot no uzvednes MariaDB:

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

Ne tas, ka jums tas tagad vajadzīgs, bet ņemiet vērā, ka jūs varat apturēt vergu ar:

MariaDB [(none)]> STOP SLAVE;

ja komanda RĀDĪT VERGA STATUSU\G; atgriež kļūdas. Izmantojiet šīs kļūdas, lai novērstu problēmu, un pēc tam palaidiet START SLAVE; , lai veiktu atkārtotu pārbaudi.

Pārbaudiet MySQL/MariaDB datu bāzes replikāciju

Pievienosim ierakstu galvenā servera darbinieku tabulai:

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

Pēc tam pārbaudiet, vai šīs izmaiņas tika atkārtotas vergā:

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

Kā redzat, replikācija no kapteiņa uz vergu darbojas pareizi.

Kopsavilkums

Šajā rakstā mēs esam paskaidrojuši, kā instalēt jaunāko MariaDB versiju CentOS/RHEL 7 un Debian 8/9, kā arī apspriests, kā iestatīt galvenā-verga replikāciju ar GTID. Lai iegūtu papildinformāciju, ieteicams atsaukties uz MariaDB replicēšanas rokasgrāmatu un, ja jums ir jautājumi vai komentāri, sazinieties ar mums, izmantojot zemāk esošo veidlapu.