Перейти к содержимому

Master slave что это

  • автор:

Вы отправили слишком много запросов, поэтому ваш компьютер был заблокирован.

Для того, чтобы предотвратить автоматическое считывание информации с нашего сервиса, на Linguee допустимо лишь ограниченное количество запросов на каждого пользователя.
Пользователям, браузер которых поддерживает Javascript, доступно большее количество запросов, в отличие от пользователей, чей браузер не поддерживает Javascript. Попробуйте активировать Javascript в настройках вашего браузера, подождать несколько часов и снова воспользоваться нашим сервером.
Если же ваш компьютер является частью сети компьютеров, в которой большое количество пользователей одновременно пользуется Linguee,сообщитеоб этом нам.

Master и slave DNS-серверы

Как правило, чтобы организовать DNS-хостинг, провайдеры используют несколько DNS-серверов. Один главный и хотя бы один ведомый:

  • главный (master) — хранит и управляет ресурсными записями (описанием) доменной зоны. К главному серверу может быть подключено множество ведомых;
  • ведомый (slave) — получает и хранит информацию о доменных зонах с главного сервера. На ведомом сервере невозможно изменить описание доменной зоны. Служит для снижения нагрузки с главного DNS-сервера.

Устанавливайте master и slave DNSmanager на серверы, которые находятся в разных сетях. Такой подход снижает вероятность выхода из строя сразу двух DNS-серверов.

Как подключить slave к master

  1. Авторизуйтесь в master DNSmanager с правами реселлера.
  2. Перейдите в ИнтеграцияВедомые серверыСоздать.
  3. Укажите URL панели управления, которая будет выполнять роль slave DNS-сервера.
  4. Укажите имя Пользователя с правами реселлера в slave DNSmanager.
  5. Укажите Пароль пользователя.
  6. Чтобы синхронизировать описания доменных зон при подключении slave, включите опцию Синхронизировать.
  7. Нажмите Ok, чтобы сохранить настройки.

Синхронизация описания доменных зон

Описания доменных зон на master и slave синхронизируются автоматически.

Если требуется, то вы можете запустить синхронизацию вручную. Для этого:

  1. Авторизуйтесь в slave DNSmanager с правами реселлера.
  2. Перейдите в ГлавноеДоменные имена.
  3. Выберите нужную зону, нажмите Обновить и подтвердите действие.

Для чего нужна репликация Master-Slave Печать

Репликация базы данных MySQL по типу Master-Slave используется для более упрощенного обслуживания множественных копий данных БД MySQL копируя данные автоматически из базы данных Master на базу данных Slave. Этот процесс может быть полезен по многим причинам, включая резервное копирование, способ анализа данных без использования Master БД, или как средство для масштабирования.

Как настроить репликацию Master-Slave

Для того чтобы настроить репликацию типа Master-Slave необходимо выполнить следующие шаги:

Конфигурация сервера Master

Отредактировать конфигурационный файл /etc/mysql/my.cnf внеся в него следующие изменения:
В строку bind-address указать адрес Master сервера

Убедиться что раскомментирована строка server-id
можно использовать любое уникальное значение, но проще всего оставить 1

Раскомментировать строку log_bin указав файл из которого Slave будет копировать все изменения репликации

Наконец, раскомментировать строку binlog_do_db и указать имя БД что будет реплицироваться, в случае если будет производиться репликация нескольких БД то необходимо указать несколько соответствующих строк.

После чего можно сохранить изменения и закрыть конфигурационный файл.

Далее проводится работа из командной строки MySQL

Выполняем вход в root нашего MySQL сервера:

Создаём пользователя который будет использоваться для репликации БД, где “address” — ip-адрес сервера на который будет совершаться репликация, “password” — придуманный вами пароль:

create user ‘slave_user’@’address’ identified by ‘password’;

Далее назначаем привилегии Slave пользователю который будет использоваться для репликации БД:

GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’address’ IDENTIFIED BY ‘password’;

После чего применяем изменения привилегий:

Далее переключаемся на нужную БД:

Блокируем БД от нежелательных изменений

FLUSH TABLES WITH READ LOCK;

Далее вводим
SHOW MASTER STATUS;

Получаем примерно такой вывод:

Эти значения являются позицией где Slave БД начнёт реплицироваться. Необходимо записать значения File и Position так как они нам понадобятся в дальнейшем.

В новом окне терминала(для исключения разблокировки и внесения изменений в БД) вводим команду:

mysqldump -u root -p —opt database > database.sql

и сохраняем дамп нашей БД.

После чего разблокируем БД

На этом настройка Master-сервера завершена.

Переходим к настройке Slave-сервера:

Входим в root MySQL

После чего создаём БД с именем той, которую необходимо реплицировать.

CREATE DATABASE database;

Далее необходимо восстановить предварительно переброшенный дамп нашей БД с Master-сервера:

Изменяем конфигурационный файл /etc/mysql/my.cnf на Slave сервере.

В строку bind-address указать адрес Slave сервера

Присваиваем уникальный идентификатор нашему Slave серверу, отличный от идентификатора на Master-сервере

Далее нужно убедиться что в конфигурационном файле присутствуют строки таких параметров:
Строку начинающуюся на relay-log необходимо добавить самостоятельно. В строке binlog_do_db указывается имя БД которая будет реплицироваться.

После проверки и внесения изменений в конфигурационный файл — перезагружаем службу MySQL.

sudo service mysql restart

После перезагрузки службы входим в командную строку MySQL и вводим такую команду:

CHANGE MASTER TO MASTER_HOST=’address’,MASTER_USER=’slave_user’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS= 107;

Где: address — ip-адрес Master-сервера,

slave_user — пользователь на Master сервере который назначен для работы репликации

password — пароль к этому пользователю,

mysql-bin.000001 и 107 — значения которые записывались ранее при выводе SHOW MASTER STATUS на Master-сервере которые говорят Slave серверу о том с какого значения необходимо начинать репликацию, для корректной синхронизации БД, а также позицию в лог-файле.

После проведения всех манипуляций активируем Slave сервер.

После чего репликация будет запущена.

Для проверки статуса репликации

Вводим в командную строку MySQL следующую команду:

SHOW SLAVE STATUS\G;

После чего необходимо проконтролировать наличие ошибок в выводе и синхронизацию значений Master-сервера со Slave-сервером, где на Master-сервере вводится команда

SHOW MASTER STATUS;

Также, если значение Exec_Master_Log_pos продолжает изменяться со временем то репликация Master-Slave была настроена корректно.

Репликация master slave MySQL

Репликация master slave позволяет обеспечить системе надежность и гарантирует ее работоспособность при выходе из строя основного сервера БД.

Репликация базы данных это прием, применяемый в архитектуре информационных систем, результатом применения которого является распределение нагрузки при работе с одной базой данных на несколько серверов. В MySQL репликация Master-Slave используется чаще, но применяется и второй тип репликации — Master-Master.

Репликация Master-Slave предполагает дублирование данных на подчиненный сервер MySQL, производится подобное дублирование с целью обеспечения надежности. В случае выхода из строя Master сервера его функции переключаются на Slave.

Настройка MASTER SLAVE репликации в Debian

Будем использовать два сервера с адресами:

  • Master сервер 192.168.0.1
  • Slave сервер 192.168.0.2

Для демонстрации используются VDS объединенные в локальную сеть.
Чтобы всегда наверняка знать на каком сервере мы выполняем ту или иную команду отредактируем файлы /etc/hosts на обоих серверах

192.168.0.1 master

192.168.0.2 slave

Заменим существующие значения в /etc/hostname на master и slave соответственно, чтобы изменения вступили в силу сервера перезагрузим.

1. Производим настройки на мастер сервере.

root@master:/#

Редактируем основной конфигурационный файл сервера баз данных

Выбираем ID сервера — число можно указать любое, по умолчанию стоит 1 — строку достаточно раскомментировать

Задаем путь к бинарному логу — также указано по умолчанию, раскомментируем

Задаем название базы данных, которую будем реплицировать на другой сервер

Перезапускаем Mysql чтобы конфигурационный файл считался и изменения вступили в силу:

2. Задаем пользователю необходимые права

Заходим в консоль сервера баз данных:

Даем пользователю на подчиненном сервере необходимые права:

GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘123’;

Блокируем все таблицы в БД

Проверяем статус Master-сервера:

3. Создаем дамп базы данных на сервере

Создаем дамп базы данных:

mysqldump -u root -p db1 > db1.sql

Разблокируем таблицы в консоли mysql:

4. Переносим дамп базы на Slave-сервер

Дальнейшие действия производим на Slave-сервере

root@slave:/#

5. Созданием базу данных

6. Вносим изменения в my.cnf

Назначаем ID инкрементируя значение установленное на Master сервере

Задаем путь к relay логу

и путь bin логу на Master сервере

7. Задаем подключение к Master серверу

CHANGE MASTER TO MASTER_HOST=’192.168.0.1′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’123′, MASTER_LOG_FILE = ‘mysql-bin.000001’, MASTER_LOG_POS = 327;

Запускаем репликацию на подчиненном сервере:

Проверить работу репликации на Slave можно запросом:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 107
Relay_Log_File: mysql-relay-bin.000003
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 555
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

Поскольку каких-либо ошибок не возникло можно сделать вывод о том, что репликация настроена корректно. Настройка завершена.

Распределение запросов на чтение и запись по разными серверам, включенным в процесс репликации

Репликация может осуществляться и с целью повышения производительности системы, однако производительность здесь практически всегда вторична.

При работе приложения с БД самыми частыми операциями являются операции SELECT — запросы на считывание данных, модификация данных — запросы DELETE, INSERT, UPDATE, ALTER статистически происходит гораздо реже.

Чтобы в случае выхода из строя одного из серверов не произошло потери данных операции на изменение информации в таблицах всегда обрабатываются Master-сервером. Затем изменения реплицируются на Slave. Считывание же можно производить с сервера играющего роль Slave.
За счет этого можно получить выигрыш в производительности вместе с надежностью.

Решение популярно, но не всегда применимо поскольку при репликации могут наблюдаться задержки — если такое случается считывать информацию также приходится с Master-сервера.

 Репликация master slave

Направление запросов определенного типа к тому или иному серверу баз данных реализуется на уровне приложения.

Если выполнять разделение SELECT запросов и всех остальных на программном уровне отправляя их на нужный сервер — при выходе из строя одного из них приложение, которое обслуживает инфраструктура, окажется неработоспособно. Чтобы это работало нужно предусматривать более сложную схему и резервировать каждый из серверов.

Репликация применяется для отказоустойчивости, не для масштабирования

MASTER SLAVE репликация является хорошим инструментом обеспечения отказоустойчивости, в качестве главного минуса имеет рассинхронизацию копирования данных и задержки, которые могут быть критичны.

Полностью их избежать позволяет использование более современного решения Galera Cluster. Оно отличается простой настройкой, надежностью и отсутствием необходимости вручную копировать SQL дампы баз данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *