MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да настроите MariaDB (Master-Slave) репликация в CentOS/RHEL 7 и Debian 8/9

Дори когато някои ИТ хора чуят фразата „Репликация на база данни “, те често го свързват с необходимостта от наличието на множество копия на една и съща информация, за да се избегне загуба на данни в случай на хардуерна повреда или повреда на данните. Въпреки че до известна степен това е вярно, репликацията на база данни е много повече от общата концепция за архивиране на база данни и наличност на данни.

Сред другите предимства на репликацията на база данни в настройка главен-подчинен можем да споменем:

  1. Резервните копия могат да се правят на подчинения сървър, без да се засягат (и да бъдат засегнати) операциите на запис в главния.
  2. Ресуроемки операции (като анализ на данни) могат да се извършват на подчинения, без да се влияе върху производителността на главния.

В тази статия ще обясним как да настроите репликация главен-подчинен в MariaDB 10.1 . За разлика от класическата репликация, MariaDB въведе концепцията за глобални идентификатори на транзакции (GTIDs ) в v10.0 , което позволява лесно да промените подчинен, за да се свърже и репликира от различен главен. На всичкото отгоре състоянието на подчинения се записва по безопасен при срив начин (актуализациите на състоянието се извършват в същата транзакция като актуализациите на данните).

Ако търсите MySQL репликация под CentOS/RHEL 6 , следвайте това ръководство. Настройка на MySQL (Master-Slave) репликация на CentOS/RHEL 6

Инсталиране на MariaDB 10.1 в CentOS/RHEL 7 и Debian 8/9

Нашата среда за тестване се състои от следните машини (и двете са CentOS 7 ):

Master:192.168.0.18Slave:192.168.0.19

За да инсталираме най-новата версия на MariaDB, ще трябва да добавим техните хранилища към нашите сървъри. Ако използвате по-стара версия на MariaDB, да речем 5.5, помислете за надграждане до най-новата версия 10.1, като използвате статията по-долу.

  1. Надстройте MariaDB 5.5 до MariaDB 10.1

В CentOS/RHEL

Създайте файл с име MariaDB.repo вътре в /etc/yum.repos.d със следното съдържание и на двете Master и Slave системи:

# Списък с хранилища на MariaDB 10.1 CentOS – създаден на 23.01.2016 г. 14:16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

Запазете файла и инсталирайте MariaDB на двата сървъра, като използвате yum:

# yum update &&yum install MariaDB-сървър MariaDB-client

В Debian/Ubuntu

Добавете ключа за удостоверяване на пакети и хранилището на 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 главен'

Забележка :Заменете име на дистрибуцията и кодово име в маркирания по-горе ред.

Инсталирайте с помощта на apt-get команда:

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

След като инсталирате MariaDB, стартирайте mysql_secure_installation процедура както на главната, така и на подчинената, нека настроим примерна тестова база данни в главната машина.

Настройване на примерна MySQL база данни на Master

Сега ще настроим в главния сървър Employees база данни от https://github.com/datacharmer/test_db (което предоставя набор от данни от 4 милиони записи, разпределени в шест таблици) в две прости стъпки:

Клонирайте хранилището и го използвайте, за да импортирате примерната база данни във вашата инсталация на MariaDB:

# git клонинг https://github.com/datacharmer/test_db# cd test_db# mysql <служители.sql

Конфигуриране на MySQL сървър на Master

За да конфигурирате главния, изпълнете следните стъпки:

СТЪПКА 1: Редактирайте /etc/my.cnf файл. Под [mysqld] раздел, добавете следните четири реда:

log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18

и рестартирайте MariaDB:

# systemctl рестартирайте mariadb

СТЪПКА 2: Влезте в сървъра на MariaDB като root, създайте подчинен потребител и задайте необходимите разрешения:

MariaDB [(няма)]> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ 'slave'@'localhost' ИДЕНТИФИЦИРАН ОТ 'SlavePassword';MariaDB [(няма)]> ПРЕДОСТАВЯНЕ НА РЕПЛИКАЦИЯ ЗА РЕПЛИКАЦИЯ НА *.* НА подчинено устройство, ИДЕНТИФИЦИРАНА ОТ 'SlavePassword' С ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ;MariaDB [(няма)]> ПРИВИЛЕГИИ НА FLUSH;MariaDB [(няма)]> ФЛУШ ТАБЛИЦИ С ПРОЧЕТЕНЕ ЗАКЛЮЧВАНЕ;MariaDB [(няма)]> ПОКАЗВАНЕ НА ГЛАВНИЯ СТАТУС;

Последната команда (ПОКАЗВАНЕ НА ГЛАВНИЯ СТАТУС ) връща текущата позиция в двоичния дневник (точните координати, които показват точно от коя точка ведомото устройство трябва да започне репликиране:

СТЪПКА 3: Излезте от подканата на MariaDB (с exit; ) и използвайте следната команда, за да направите моментна снимка на базата данни на служителите. Когато натиснете Enter , ще бъдете подканени да въведете паролата за root, която сте задали по-рано чрез mysql_secure_installation :

# mysqldump -u root -p служители> служители-dump.sql

След като изхвърлянето приключи, свържете се отново със сървъра на базата данни, за да отключите таблиците и след това излезте:

MariaDB [(няма)]> ОТКЛЮЧВАНЕ НА ТАБЛИЦИ;MariaDB [(няма)]> изход;

СТЪПКА 4: Копирайте изхвърлянето в подчинения:

# scp staff-dump.sql [email protected]:/root/ 

СТЪПКА 5: Изпълнете mysql_upgrade процедура за надграждане на системните таблици (ще бъдете подканени да въведете root паролата на MariaDB):

# mysql_upgrade -u корен -p

СТЪПКА 6: Разрешете услугата на базата данни през защитната стена:

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

Сега нека конфигурираме подчинения.

Конфигуриране на MySQL сървър на подчинен

За да конфигурирате подчинения, следвайте тези стъпки:

СТЪПКА 1: Създайте акаунт за изпълнение на задачите за репликация. Свържете се с локалния сървър на MariaDB с:

# mysql -u корен –p

и въведете паролата, която сте задали по-рано.

СТЪПКА 2: След като се свържете със сървъра на базата данни, създайте потребителя и празна база данни и дайте разрешения:

MariaDB [(няма)]> СЪЗДАВАНЕ НА БАЗА ДАННИ служители;MariaDB [(няма)]> ПРЕДОСТАВЯТЕ ВСИЧКИ ПРИВИЛЕГИИ НА служители.* НА 'slave'@'localhost' С ОПЦИЯ ЗА ПРЕДОСТАВЯНЕ;MariaDB [(няма)]> ПРИВИЛЕГИИ НА ФЛУШ;

СТЪПКА 3: Излезте от подканата на MariaDB и заредете дъмпа, създаден в главния сървър:

# mysql -u root -p служители <служители-dump.sql

СТЪПКА 4: Редактирайте /etc/my.cnf файл, за да зададете ID на сървъра към подчинения под [mysqld] раздел. Имайте предвид, че трябва да е различно от 1 , както използвахме 1 в главния:

server_id=2replicate-do-db=employees

Рестартирайте сървъра на базата данни:

# systemctl рестартирайте mariadb

СТЪПКА 5: Изпълнете mysql_upgrade процедура за надграждане на системните таблици (ще бъдете подканени да въведете root паролата на MariaDB):

# mysql_upgrade -u корен -p

СТЪПКА 6: След като дъмпът бъде импортиран в подчинения, остават само няколко стъпки, за да започнем да копираме. Влезте в базата данни и изпълнете следните команди в подканата на MariaDB. Обърнете специално внимание на MASTER_LOG_FILE и MASTER_LOG_POS променливи, които трябва да съответстват на стойностите, върнати от ПОКАЖЕНЕ НА ГЛАВНИЯ СТАТУС в СТЪПКА 2 от „Конфигуриране на главния“ по-горе.

MariaDB [(няма)]> Промяна на Master на 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: Стартирайте подчинения и проверете състоянието му, без да излизате от подканата на MariaDB:

MariaDB [(няма)]> START SLAVE;MariaDB [(няма)]> ПОКАЗВАНЕ НА СТАТУС НА ПОДЧИСТВОТО\G;

Не че имате нужда от това сега, но имайте предвид, че можете да спрете подчинения с:

MariaDB [(няма)]> СПРЕНЕ НА РАБОТА;

ако SHOW SLAVE STATUS\G; командата връща всякакви грешки. Използвайте тези грешки, за да отстраните неизправности и след това стартирайте START SLAVE; за да тествате отново.

Тествайте MySQL/MariaDB репликация на база данни

Нека добавим запис към служителите таблица в главния сървър:

MariaDB [(няма)]> ВЪВЕТЕ ВЪВ служители (emp_no, birth_date, first_name, last_name, gender, hire_date) СТОЙНОСТИ (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

След това проверете дали тази промяна е репликирана в подчинения:

MariaDB [(няма)]> ИЗПОЛЗВАЙТЕ служители;MariaDB [(няма)]> ИЗБЕРЕТЕ * ОТ служители КЪДЕ emp_no=500000;

Както можете да видите, репликацията работи правилно от главен към подчинен.

Резюме

В тази статия сме обяснили как да инсталирате най-новата версия на MariaDB в CentOS/RHEL 7 и Debian 8/9 и обсъдихме как да настроим репликация главен-подчинен с GTID. За повече информация може да искате да се обърнете към Ръководството за репликация на MariaDB и не се колебайте да се свържете с нас чрез формуляра по-долу, ако имате въпроси или коментари.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Моята MySQL база данни е извън дисковото пространство

  2. Обработване на проблеми с репликацията от не-GTID към GTID MariaDB клъстери от база данни

  3. Покажете съпоставянето в MariaDB

  4. Автоматизирано тестване на процеса на надстройка за MySQL/MariaDB/Percona сървър

  5. 2 начина за връщане на редове, които съдържат само небуквени и цифрови знаци в MariaDB