Полный цикл в digital

Репликация и кластер баз данных

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

Виды репликаций

В системах управления базами данных (СУБД) существуют два вида репликации:

  1. Master-Slave
  2. Master-Master

Master-Slave

Принцип работы: есть один главный сервер Master и один или несколько подчинённых Slave. Master принимает все запросы на запись (добавление, изменение, удаление данных), а Slaves только читают данные и получают обновления от Master.

Достоинства:

  • Разгрузка Master чтение можно распределить по нескольким Slaves, что повышает производительность
  • Резервирование, если Master сломается, можно переключиться на один из Slaves
  • Масштабируемость, можно добавлять новые Slaves без перегрузки основного сервера

Недостатки:

  • Задержка синхронизации, данные на Slaves могут немного отставать от Master
  • Усли Master падает, вручную или с помощью дополнительных механизмов нужно выбрать новый сервер
  • Не подходит для интенсивной записи, записи идут только в один узел, он может стать узким местом

Master-Master

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

Достоинства:

  • Высокая отказоустойчивость — если один сервер выходит из строя, другой продолжает работать
  • Балансировка нагрузки — можно распределять запросы между серверами, снижая нагрузку на каждый из них

Недостатки:

  • Конфликты данных, если два сервера изменяют одни и те же данные одновременно, могут возникнуть проблемы с их синхронизацией
  • Сложность настройки и поддержки, требуется механизм разрешения конфликтов и контроль синхронизации
  • Задержки репликации, хотя данные синхронизируются, это не всегда происходит мгновенно, что может привести к временным рассинхронизациям

Master-Slave репликация

Подключение дополнительных серверов баз данных снижает нагрузку на основную базу. Чтение данных происходит из копий slave, запись идет в основную базу master.

С версии 24.0.0 главного модуля вся нагрузка может быть перенаправлена на slave серверы:

  1. До первого запроса на изменение данных система работает в обычном режиме
  2. При запросе на изменение фиксируется список измененных таблиц
  3. При последующих запросах выборки проверяется, изменялись ли таблицы. Если нет, запросы продолжают обрабатываться через slave серверы

При использовании нескольких веб-серверов в файле /bitrix/.settings.php на всех серверах должен быть указан адрес подключения к главной базе данных. Необходимо использовать прямой IP-адрес. Адрес localhost использовать запрещено.

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

  1. Перейдите на страницу Настройки -> Веб-кластер -> Группа #1 -> Репликация
  2. Нажмите кнопку Добавить slave базу данных
  3. Следуйте рекомендациям мастера и исправьте параметры master базы данных, критичные для настройки репликации
  4. Укажите параметры подключения к slave базе данных
  5. Следуйте рекомендациям мастера и исправьте параметры slave базы данных, критичные для настройки репликации
  6. Введите Название подключения

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

Запуск репликации начинается с копирования базы данных. Во время этого процесса публичная часть сайта будет закрыта. Административная часть останется доступной. Изменения данных, внесенные в этот период, могут привести к рассогласованию и повлиять на работу сайта.

После успешного подключения slave-сервера отображается его статус.

Для репликации нужны разные серверы с быстрым каналом связи, которые обеспечивают высокую пропускную способность и низкую задержку. В настройках модуля Веб-кластер можно указать время отставания slave базы от master базы, после которого она будет отключена для предотвращения рассинхронизации.

Привилегии

Для работы репликации учетные записи серверов должны иметь привилегии: SUPER, REPLICATION CLIENT, REPLICATION SLAVE.

Рекомендуется объединить их в одну учетную запись.

Учетная запись для работы с базой данных на всех узлах кластера
GRANT SELECT, LOCK TABLES, CREATE TEMPORARY TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, REPLICATION CLIENT, RELOAD ON bitrixcluster.* TO 'bitrixcluster'@'%' IDENTIFIED BY 'Rr6wNCPJH+WU';

REPLICATION CLIENT для отображения статистики master базы.

RELOAD используется в master базе во время переноса таблиц в slave базу для FLUSH TABLES WITH READ LOCK.

Учетная запись для управления slave-нодами

Создается в каждой slave базе и указывается при подключении.

Для отображения статистики в интерфейсе:

GRANT REPLICATION CLIENT on *.* TO 'bitrixcluster_slave'@'%' IDENTIFIED BY 'Rr6wNCPJH+WU';

Для отображения запуска/остановки slave базы и изменения параметров репликации из административного интерфейса:

GRANT SUPER on *.* TO 'bitrixcluster_slave'@'%';

Для экспорта данных из master базы в slave базу:

GRANT SELECT, LOCK TABLES, CREATE TEMPORARY TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON bitrixcluster.* TO 'bitrixcluster_slave'@'%' IDENTIFIED BY 'Rr6wNCPJH+WU'
Учетная запись для загрузки бинарных логов

Создается на master базе для каждого подключения slave.

Для загрузки бинарных логов с master сервера:

GRANT REPLICATION SLAVE on *.* TO 'bitrixcluster_replica'@'%' IDENTIFIED BY 'Rr6wNCPJH+WU';

Пароль Rr6wNCPJH+WU приведен для примера, замените его на свой.

Настройка параметров базы данных

Чтобы изменить настройки подключения базы данных, на странице Настройки -> Веб-кластер -> Группа #1 -> Репликация дважды кликните по базе в таблице или выберите пункт Изменить в меню действий. Откроется форма Настройка параметров главной базы/slave базы данных:

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

Для главной базы существует дополнительная опция, которая позволяет минимизировать нагрузку на нее.

Особенности работы с master-базой

Если происходит запись в master базу, последующие чтения данных также будут происходить из нее. Это гарантирует актуальность данных, так как синхронизация со slave может иметь задержку.

Когда нужно создать собственные запросы на запись в системе, например, для веб-аналитики, то следует использовать методы StartUsingMasterOnly и StopUsingMasterOnly класса CDatabase. Эти методы позволяют временно переключиться на использование только основной базы данных.

  1. StartUsingMasterOnly начинает использование только master-базы для записи
  2. StopUsingMasterOnly завершает использование только master базы

Вы можете обернуть API-вызовы на запись этими методами. Однако убедитесь, что после этого в коде не будет чтения данных, так как они могут еще не быть синхронизированы с копиями.

Резервная копия

Slave базу данных можно настроить для использования в качестве резервной копии. В этом случае чтение данных из нее не выполняется.

Чтобы перевести базу в режим копирования, выполните следующие действия:

  1. Откройте форму Настройка параметров slave базы данных
  2. Отметьте опцию Для резервного копирования

Master-Master репликация

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

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!