Репликация и кластер
Репликация базы данных — это процесс, при котором создается копия базы данных и поддерживается ее актуальность. Это значит, что все изменения в основной базе данных автоматически передаются в копию.
Репликация позволяет:
-
разгрузить основную базу данных, распределяя запросы между копиями,
-
иметь резервную копию, которая всегда готова к использованию,
-
работать с несколькими базами данных, расположенными в разных географических точках. Это повышает скорость доступа к данным.
Master-Slave репликация
Подключение дополнительных серверов баз данных снижает нагрузку на основную базу. Чтение данных происходит из копий slave, а запись — в основную базу master.
С версии 24.0.0 Главного модуля вся нагрузка может быть перенаправлена на slave-серверы.
-
До первого запроса на изменение данных система работает в обычном режиме.
-
При запросе на изменение фиксируется список измененных таблиц.
-
При последующих запросах выборки проверяется, изменялись ли таблицы. Если нет, запросы продолжают обрабатываться через slave-серверы.
При использовании нескольких веб-серверов в файле /bitrix/.settings.php на всех серверах должен быть указан адрес подключения к главной базе данных. Необходимо использовать прямой IP-адрес. Адрес localhost использовать запрещено.
Как подключить
-
Перейдите на страницу Настройки > Веб-кластер > Группа #1 > Репликация.
Модуль Веб-кластер доступен только в редакциях Энтерпрайз.
-
Нажмите кнопку Добавить slave базу данных.
-
Следуйте рекомендациям мастера и исправьте параметры
masterбазы данных, критичные для настройки репликации. -
Укажите параметры подключения к
slaveбазе данных. -
Следуйте рекомендациям мастера и исправьте параметры
slaveбазы данных, критичные для настройки репликации. -
Введите
Название подключения.
После завершения мастер добавит базу в список, но она будет неактивна. В меню действий выберите Начать использовать и следуйте инструкциям.

Запуск репликации начинается с копирования базы данных. Во время этого процесса публичная часть сайта будет закрыта. Административная часть останется доступной. Изменения данных, внесенные в этот период, могут привести к рассогласованию и повлиять на работу сайта.
После успешного подключения 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';— для отображения статистики в интерфейсе, -
GRANT SUPER on *.* TO 'bitrixcluster_slave'@'%';— для отображения запуска/остановки 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-базе для каждого подключения slave.
GRANT REPLICATION SLAVE on *.* TO 'bitrixcluster_replica'@'%' IDENTIFIED BY 'Rr6wNCPJH+WU';— для загрузки бинарных логов с master-сервера.
Пароль Rr6wNCPJH+WU приведен для примера, замените его на свой.
Настройка параметров базы данных
Чтобы изменить настройки подключения базы данных, на странице Настройки > Веб-кластер > Группа #1 > Репликация дважды кликните по базе в таблице или выберите пункт Изменить в меню действий. Откроется форма «Настройка параметров главной базы/slave базы данных»:

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

Особенности работы с master-базой
Если происходит запись в master-базу, последующие чтения данных также будут происходить из нее. Это гарантирует актуальность данных, так как синхронизация со slave может иметь задержку.
Когда нужно создать собственные запросы на запись в системе, например, для веб-аналитики, то следует использовать методы StartUsingMasterOnly и StopUsingMasterOnly класса CDatabase. Эти методы позволяют временно переключиться на использование только основной базы данных.
-
StartUsingMasterOnly— начинает использование только master-базы для записи. -
StopUsingMasterOnly— завершает использование только master-базы.
Вы можете обернуть API-вызовы на запись этими методами. Однако убедитесь, что после этого в коде не будет чтения данных, так как они могут еще не быть синхронизированы с копиями.
Резервная копия
Slave-базу данных можно настроить для использования в качестве резервной копии. В этом случае чтение данных из нее не выполняется.
Чтобы перевести базу в режим копирования, выполните следующие действия:
-
откройте форму Настройка параметров slave базы данных,
-
отметьте опцию Для резервного копирования.
Резервное копирование данных выполняется постоянно.
Master-Master репликация
Master-Master репликация позволяет обеим базам данных быть активными для чтения и записи. Настройка выполняется на уровне базы данных. Для настройки можно использовать документацию MySQL: