Spec-Zone.ru › MySQL 5.7

17.2.1.2 Настройка экземпляра для репликации группы

В этом разделе описаны параметры конфигурации для экземпляров MySQL Server, которые вы хотите использовать для репликации группы. Для получения дополнительной информации см. Раздел 17.3, «Требования и ограничения».

  • Системы хранения данных

  • Фреймворк репликации

  • Настройки репликации группы

Системы хранения данных

Для репликации группы данные должны храниться в транзакционной системе хранения InnoDB (подробности см. в Разделе 17.3.1, «Требования к репликации группы»). Использование других систем хранения данных, включая временную систему хранения MEMORY, может привести к ошибкам в репликации группы. Установите системную переменную disabled_storage_engines следующим образом, чтобы предотвратить их использование:

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

Обратите внимание, что при отключенной системе хранения MyISAM, при обновлении экземпляра MySQL до версии, где mysql_upgrade по-прежнему используется (до MySQL 8.0.16), mysql_upgrade может завершиться с ошибкой. Для решения этой проблемы можно временно включить эту систему хранения, выполнить mysql_upgrade, а затем отключить её снова при перезапуске сервера. Более подробную информацию см. в Разделе 4.4.7, «mysql_upgrade — Проверка и обновление таблиц MySQL».

Фреймворк репликации

Следующие параметры конфигурируют репликацию в соответствии с требованиями MySQL Group Replication.

server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

Эти параметры настраивают сервер для использования уникального идентификатора 1, для включения глобальных идентификаторов транзакций и для хранения метаданных репликации в системных таблицах вместо файлов. Кроме того, это указывает серверу включить бинарное протоколирование, использовать формат на основе строк и отключить контрольные суммы событий бинарного журнала. Подробнее см. в Разделе 17.3.1, «Требования к репликации группы».

END_OF_DOCUMENT_MARKER ```
Настройки групповой репликации

На этом этапе файл опций гарантирует, что сервер настроен и получает указание на инициализацию инфраструктуры репликации при заданной конфигурации. В следующем разделе настраиваются параметры групповой репликации для сервера.

plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "s1:33061"
group_replication_group_seeds= "s1:33061,s2:33061,s3:33061"
group_replication_bootstrap_group=off
  • plugin-load-add добавляет плагин групповой репликации в список плагинов, которые сервер загружает при запуске. В производственной среде это предпочтительнее, чем ручная установка плагина.

  • Настройка group_replication_group_name сообщает плагину, что группа, к которой он присоединяется или которую создаёт, имеет имя "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa".

    Значение group_replication_group_name должно быть корректным UUID. Этот UUID используется внутри для установки GTID для событий групповой репликации в двоичном журнале. Вы можете использовать SELECT UUID() для генерации UUID.

  • Настройка переменной group_replication_start_on_boot на значение off указывает плагину не запускать операции автоматически при запуске сервера. Это важно при настройке групповой репликации, так как гарантирует возможность настройки сервера перед ручным запуском плагина. После настройки члена можно установить group_replication_start_on_boot на on, чтобы групповая репликация запускалась автоматически при запуске сервера.

  • Настройка group_replication_local_address устанавливает сетевой адрес и порт, которые член использует для внутренней коммуникации с другими членами группы. Групповая репликация использует этот адрес для внутренних соединений между членами, включающих удалённые экземпляры движка групповой коммуникации (XCom, разновидность Paxos).

    Важно

    Этот адрес должен отличаться от hostname и port, используемых для SQL, и его нельзя использовать для клиентских приложений. Он должен использоваться только для внутренней коммуникации между членами группы при работе с групповой репликацией.

    Сетевой адрес, настроенный с помощью group_replication_local_address, должен быть разрешим всеми членами группы. Например, если каждый экземпляр сервера находится на разных машинах с фиксированным сетевым адресом, можно использовать IP-адрес машины, например 10.0.0.1. Если используется имя хоста, необходимо использовать полное доменное имя и убедиться, что оно разрешается через DNS, правильно настроенные файлы /etc/hosts или другие процессы разрешения имён. С MySQL 8.0.14 можно использовать IPv6-адреса (или имена хостов, разрешаемые до них), а также IPv4-адреса. В группе могут быть члены, использующие IPv6, и члены, использующие IPv4. Более подробную информацию о поддержке групповой репликации для IPv6-сетей и смешанных IPv4 и IPv6 группах см. .

    Рекомендуемый порт для group_replication_local_address — 33061. group_replication_local_address используется групповой репликацией как уникальный идентификатор члена группы в группе репликации. Можно использовать один и тот же порт для всех членов группы репликации, если имена хостов или IP-адреса все разные, как показано в этом руководстве. В качестве альтернативы можно использовать одно и то же имя хоста или IP-адрес для всех членов, если все порты разные, как показано, например, в разделе 17.2.2 «Развёртывание групповой репликации локально».

  • Настройка group_replication_group_seeds устанавливает имя хоста и порт членов группы, которые используются новым членом для установления соединения с группой. Эти члены называются семенами группы. После установления соединения информация о членстве в группе отображается в performance_schema.replication_group_members. Обычно список group_replication_group_seeds содержит hostname:port внутреннего сетевого адреса каждого члена группы, настроенного с помощью group_replication_local_address, но это необязательно, и можно выбрать подмножество членов группы в качестве семян.

    Важно

    hostname:port, указанные в group_replication_group_seeds, — это внутренний сетевой адрес семенного члена, настроенный с помощью group_replication_local_address, а не SQL-hostname:port, используемый для клиентских соединений, и показанный, например, в таблице performance_schema.replication_group_members.

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

    Предупреждение

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

    Рекомендуется сначала запустить сервер-инициализатор и позволить ему создать группу. Затем сделать его семенным членом для остальных присоединяющихся членов. Это гарантирует, что при присоединении остальных членов сформирована группа.

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

  • Настройка group_replication_bootstrap_group указывает плагину, нужно ли запускать инициализацию группы. В данном случае, хотя s1 — первый член группы, мы устанавливаем этот параметр в выключенное состояние в файле опций. Вместо этого мы настраиваем group_replication_bootstrap_group при работе экземпляра, чтобы убедиться, что только один член фактически инициализирует группу.

    Важно

    Переменная group_replication_bootstrap_group должна быть включена только на одном экземпляре сервера, входящем в группу, в любой момент, обычно в первый раз, когда вы инициализируете группу (или если вся группа выведена из строя и запущена заново). Если вы инициализируете группу несколько раз, например, если у нескольких экземпляров серверов установлен этот параметр, они могут создать искусственный сценарий разделения головного мозга, в котором существуют две отдельные группы с одинаковым именем. Всегда устанавливайте group_replication_bootstrap_group=off после того, как первый экземпляр сервера станет активным.

Настройка всех серверов в группе довольно схожа. Необходимо изменить специфические параметры каждого сервера (например, server_id, datadir, group_replication_local_address). Это показано позже в этом руководстве.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/group-replication-configuring-instances.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API