Дори когато някои ИТ хора чуят фразата „Репликация на база данни“, Те често го свързват с необходимостта да имат няколко копия на една и съща информация, за да се избегне загуба на данни в случай на хардуерна повреда или повреда на данни. Въпреки че това е вярно до известна степен, репликацията на база данни има много повече от общата концепция за архивиране на база данни и наличност на данни.
Сред другите предимства на репликацията на база данни при настройка master-slave можем да споменем:
В тази статия ще обясним как да настроите репликация master-slave в MariaDB 10.1. За разлика от класическата репликация, MariaDB въведе концепцията за Глобални идентификатори на транзакции
(GTID) в v10.0, което позволява лесно да се смени подчинен, за да се свърже и да се копира от различен мастър. На всичкото отгоре състоянието на подчиненото устройство се записва по безопасен за срив начин (актуализациите на състоянието се извършват в същата транзакция като актуализациите на данните).Ако търсите MySQL репликация под CentOS/RHEL 6, следвайте това ръководство Настройка на MySQL (Master-Slave) репликация на CentOS/RHEL 6
Нашата среда за тестване се състои от следните машини (и двете са CentOS 7):
Капитан: 192.168.0.18. Подчинен: 192.168.0.19.
За да инсталираме най -новата версия на MariaDB, ще трябва да добавим техните хранилища към нашите сървъри. Ако използвате по -стара версия на MariaDB, кажете 5.5, помислете за надграждане до най -новата версия 10.1, като използвате статията по -долу.
Създайте файл с име MariaDB.repo
вътре /etc/yum.repos.d със следното съдържание и на двете Майстор и Роб системи:
# MariaDB 10.1 CentOS хранилище списък-създаден 2016-01-23 14:16 UTC. # http://mariadb.org/mariadb/repositories/ [mariadb] име = MariaDB. baseurl = http://yum.mariadb.org/10.1/centos7-amd64. gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB. gpgcheck = 1.
Запазете файла и инсталирайте MariaDB на двата сървъра, използвайки yum:
# yum update && yum install MariaDB-сървър MariaDB-клиент.
Добавете ключа за удостоверяване на пакети и хранилището 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-сървър.
След като инсталирате MariaDB, стартирайте mysql_secure_installation
процедура както за главен, така и за подчинен, нека настроим примерна тестова база данни в главната машина.
Сега ще настроим в главния сървър Служители
база данни от https://github.com/datacharmer/test_db (който предоставя набор от данни за 4 милиони записи, разпределени в шест таблици) в две прости стъпки:
Клонирайте хранилището и го използвайте за импортиране на примерната база данни във вашата MariaDB инсталация:
# git клонинг https://github.com/datacharmer/test_db. # cd test_db. # mysqlКонфигуриране на MySQL сървър на Master
За да конфигурирате капитана, изпълнете следните стъпки:
ЕТАП 1: Редактирайте
/etc/my.cnf
файл. Под[mysqld]
раздел, добавете следните четири реда:кошче за регистрация. server_id = 1. replicate-do-db = служители. bind-address = 192.168.0.18.и рестартирайте MariaDB:
# systemctl рестартирайте mariadb.СТЪПКА 2: Влезте в сървъра на MariaDB като root, създайте подчинен потребител и задайте необходимите субсидии:
MariaDB [(няма)]> CREATE USER 'slave'@'localhost' ИДЕНТИФИЦИРАНО ОТ 'SlavePassword'; MariaDB [(няма)]> ГРАНТ РЕПЛИКАЦИЯ РАБ ВЪВ *. * КЪМ РАБ ИДЕНТИФИЦИРАН ОТ 'SlavePassword' С ОПЦИЯ ГРАНТ; MariaDB [(няма)]> ФЛУШ ПРИВИЛЕГИ; MariaDB [(няма)]> ТАБЛИЦИ ЗА ПРОДУКЦИЯ С ЧЕТЕН ЗАКЛЮЧВАНЕ; MariaDB [(няма)]> ПОКАЖЕТЕ СТАТУС НА МАЙСТРА;The последен команда (ПОКАЖЕТЕ СТАТУС НА МАЙСТРА) връща текущата позиция в двоичния регистър (точните координати, които показват точно от коя точка подчиненият трябва да започне да се репликира от:
СТЪПКА 3: Излезте от подканата MariaDB (с
изход;
) и използвайте следната команда, за да направите моментна снимка на базата данни на служителите. Когато удариш Въведете, ще бъдете подканени да въведете паролата за root, която сте задали по -раноmysql_secure_installation
:# mysqldump -u root -p служители> служители -dump.sql.След като дампът приключи, свържете се отново със сървъра на базата данни, за да отключите таблиците и след това излезте:
MariaDB [(няма)]> ОТКЛЮЧВАЙТЕ ТАБЛИЦИ; MariaDB [(няма)]> изход;СТЪПКА 4: Копирайте дампа на подчинения:
# scp служители-dump.sql [защитен имейл]:/root/
СТЪПКА 5: Стартирайте
mysql_upgrade
процедура за надграждане на системните таблици (ще бъдете подканени да въведете основната парола на MariaDB):# mysql_upgrade -u root -p.СТЪПКА 6: Разрешете услугата за бази данни през защитната стена:
# защитна стена-cmd --add-service = mysql. # firewall-cmd --add-service = mysql --permanent. # защитна стена-cmd-презареждане.Сега нека конфигурираме роба.
Конфигуриране на MySQL сървър на Slave
За да конфигурирате подчинения, изпълнете следните стъпки:
ЕТАП 1: Създайте акаунт за изпълнение на задачите за репликация. Свържете се с локалния MariaDB сървър с:
# mysql -u корен –p.и въведете паролата, която сте задали по -рано.
СТЪПКА 2: След като се свържете със сървъра на базата данни, създайте потребителя и празна база данни и предоставете разрешения:
MariaDB [(няма)]> СЪЗДАВАЙТЕ БАЗА ДАННИ; MariaDB [(няма)]> ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ на служителите.* НА 'slave'@'' localhost 'С ОПЦИЯ ЗА ГРАНТ; MariaDB [(няма)]> ФЛУШ ПРИВИЛЕГИ;СТЪПКА 3: Излезте от подканата MariaDB и заредете дампа, създаден в главния сървър:
# mysql -u root -p служителиСТЪПКА 4: Редактирайте
/etc/my.cnf
файл за присвояване на сървър документ за самоличност на роба под[mysqld]
раздел. Имайте предвид, че трябва да е различно цяло число от 1, както използвахме 1 в капитана:server_id = 2. replicate-do-db = служители.Рестартирайте сървъра на базата данни:
# systemctl рестартирайте mariadb.СТЪПКА 5: Стартирайте
mysql_upgrade
процедура за надграждане на системните таблици (ще бъдете подканени да въведете основната парола на MariaDB):# mysql_upgrade -u root -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 = текущи_постове;СТЪПКА 7: Стартирайте подчинения и проверете състоянието му, без да излизате от подканата MariaDB:
MariaDB [(няма)]> СТАРТ РАБ; MariaDB [(няма)]> ПОКАЖЕТЕ СТАТУС НА РАБОВЕ \ G;Не че имате нужда от това сега, но имайте предвид, че можете да спрете роба с:
MariaDB [(няма)]> СТОП РОБ;ако
ПОКАЖЕТЕ СТАТУС НА РАБОВЕ \ G;
командата връща всички грешки. Използвайте тези грешки за отстраняване на неизправности и след това стартирайтеСТАРТ РАБ;
да тествам отново.Тествайте MySQL/MariaDB репликация на база данни
Нека добавим запис към служители таблица в главния сървър:
MariaDB [(няма)]> INSERT INTO служители (emp_no, roden_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');След това проверете дали тази промяна е репликирана в подчиненото устройство:
MariaDB [(няма)]> USE служители; MariaDB [(няма)]> SELECT * ОТ служители КЪДЕ emp_no = 500000;Както можете да видите, репликацията работи правилно от master към slave.
Резюме
В тази статия сме обяснили как да инсталирате най -новата версия на MariaDB в CentOS/RHEL 7 и Debian 8/9 и обсъдиха как да настроите репликация master-slave с GTID. За повече информация може да искате да се обърнете към Ръководство за репликация на MariaDB, и не се колебайте да се свържете с нас чрез формата по -долу, ако имате въпроси или коментари.