20.2.1.2 Настройка узла для групповой репликации
В этом разделе описаны настройки, необходимые для экземпляров MySQL Server, которые вы хотите использовать для групповой репликации. Дополнительную информацию см. в разделе 20.3 «Требования и ограничения».
Системы хранения данных
Для групповой репликации данные должны храниться в транзакционной системе хранения InnoDB (подробнее см. в разделе 20.3.1 «Требования к групповой репликации»). Использование других систем хранения данных, включая временную систему хранения MEMORY, может привести к ошибкам в групповой репликации. Установите переменную системы disabled_storage_engines следующим образом, чтобы предотвратить их использование:
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
Фреймворк репликации
Следующие настройки настраивают репликацию в соответствии с требованиями групповой репликации MySQL.
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ONЭти настройки настраивают сервер на использование уникального идентификационного номера 1, для включения раздела 19.1.3 «Репликация с глобальными идентификаторами транзакций», и для разрешения выполнения только тех операторов, которые могут быть безопасно записаны с использованием GTID.
Эта настройка отключает контрольные суммы для событий, записанных в двоичный журнал, которые по умолчанию включены. Групповая репликация в MySQL 8.4 поддерживает наличие контрольных сумм в двоичном журнале и может использовать их для проверки целостности событий на некоторых каналах, поэтому вы можете использовать значение по умолчанию. Для получения дополнительной информации см. раздел 20.3.2 «Ограничения групповой репликации».
См. также раздел 20.3.1 «Требования к групповой репликации».
Настройки репликации группы
На данном этапе файл параметров гарантирует, что сервер настроен и получает указание на инициализацию инфраструктуры репликации в соответствии с заданной конфигурацией. В следующем разделе настраиваются настройки репликации группы для сервера.
plugin_load_add='group_replication.so'
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. Вы можете использоватьSELECT UUID()для его генерации. Этот UUID является частью GTID, используемых при записи в двоичный журнал транзакций, полученных от клиентов членами группы, и событий изменения представления, сгенерированных внутри членами группы. Настройка переменной
group_replication_start_on_bootнаoffсообщает плагину не запускать операции автоматически при запуске сервера. Это важно при настройке репликации группы, так как гарантирует, что вы можете настроить сервер перед ручным запуском плагина. После настройки члена вы можете установитьgroup_replication_start_on_bootнаon, чтобы репликация группы запускалась автоматически при запуске сервера.-
Настройка
group_replication_local_addressустанавливает сетевой адрес и порт, которые член использует для внутренней связи с другими членами группы. Репликация группы использует этот адрес для внутренних соединений между членами, включающих удалённые экземпляры движка групповой связи (XCom, вариант Paxos).ВажноЛокальный адрес репликации группы должен отличаться от имени хоста и порта, используемых для подключений SQL-клиентов, которые определяются системными переменными MySQL Server
hostnameиport. Он не должен использоваться для клиентских приложений. Он должен использоваться только для внутренней связи между членами группы во время работы репликации группы.Сетевой адрес, настроенный с помощью
group_replication_local_address, должен быть разрешим всеми членами группы. Например, если каждый экземпляр сервера находится на разном компьютере с фиксированным сетевым адресом, можно использовать IP-адрес компьютера, например 10.0.0.1. Если вы используете имя хоста, необходимо использовать полное доменное имя и убедиться, что оно разрешается через DNS, правильно настроенные файлы/etc/hostsили другие процессы разрешения имён. Можно использовать IPv6-адреса (или имена хостов, которые разрешаются в них), а также IPv4-адреса; группа может содержать смесь членов, использующих IPv6, и членов, использующих IPv4. Более подробную информацию о поддержке репликации группы для IPv6-сетей и смешанных IPv4 и IPv6 группах см. в Разделе 20.5.5, “Поддержка IPv6 и смешанных IPv6 и IPv4 групп”.Рекомендуемый порт для
group_replication_local_address— 33061. Он используется репликацией группы в качестве уникального идентификатора члена группы в группе репликации. Можно использовать один и тот же порт для всех членов группы репликации, если имена хостов или IP-адреса все разные, как показано в этом руководстве. В качестве альтернативы можно использовать одно и то же имя хоста или IP-адрес для всех членов, если все порты разные, например, как показано в Разделе 20.2.2, “Развертывание репликации группы локально”.Подключение, которое предлагает существующий член присоединяющемуся члену для процесса распределённого восстановления репликации группы, не является сетевым адресом, настроенным с помощью
group_replication_local_address. Члены группы предлагают стандартное соединение SQL-клиента присоединяющимся членам для распределённого восстановления, как определено системными переменными MySQL Serverhostnameиport; они могут (также) рекламировать альтернативный список конечных точек распределённого восстановления в качестве выделенных подключений для присоединяющихся членов. Более подробную информацию см. в Разделе 20.5.4.1, “Подключения для распределённого восстановления”.ВажноРаспределённое восстановление может завершиться неудачей, если присоединяющийся член не может правильно идентифицировать других членов с помощью имени хоста, определённого системной переменной MySQL Server
hostname. Рекомендуется, чтобы операционные системы, на которых запущен MySQL, имели правильно настроенное уникальное имя хоста, либо используя DNS, либо локальные настройки. Имя хоста, используемого сервером для подключений SQL-клиентов, можно проверить в столбцеMember_hostтаблицы Performance Schemareplication_group_members. Если несколько членов группы экспортируют значение по умолчанию для имени хоста, установленное операционной системой, существует вероятность, что присоединяющийся член не сможет разрешить его до правильного адреса члена и не сможет подключиться для распределённого восстановления. В этой ситуации можно использовать системную переменную MySQL Serverreport_hostдля настройки уникального имени хоста, которое будет экспортироваться каждым из серверов. -
Настройка
group_replication_group_seedsустанавливает имя хоста и порт членов группы, которые используются новым членом для установления подключения к группе. Эти члены называются семенами группы. После установления подключения информация о членстве в группе отображается в таблице Performance Schemareplication_group_members. Обычно списокgroup_replication_group_seedsсодержитhostname:portкаждого изgroup_replication_local_addressчлена группы, но это необязательно, и можно выбрать подмножество членов группы в качестве семян.Важноhostname:port, указанный вgroup_replication_group_seeds, — это внутренний сетевой адрес семенного члена, настроенный с помощьюgroup_replication_local_address, а неhostname:port, используемый для подключений SQL-клиентов, что показано, например, в таблице Performance Schemareplication_group_members.Сервер, запускающий группу, не использует этот параметр, так как это начальный сервер и, следовательно, он отвечает за запуск группы. Другими словами, любые имеющиеся данные на сервере, запускающем группу, используются в качестве данных для следующего присоединяющегося члена. Второй сервер, присоединяющийся к группе, просит единственного члена группы присоединиться, любые недостающие данные на втором сервере копируются из донорских данных на сервере запуска, а затем группа расширяется. Третий присоединяющийся сервер может попросить присоединиться к группе любой из этих двух серверов, данные синхронизируются с новым членом, а затем группа расширяется снова. Последующие серверы повторяют эту процедуру при присоединении.
ПредупреждениеПри одновременном присоединении нескольких серверов убедитесь, что они указывают на семенные члены, которые уже находятся в группе. Не используйте членов, которые также присоединяются к группе, в качестве семян, так как они могут ещё не находиться в группе при попытке связи.
Рекомендуется сначала запустить сервер, запускающий группу, и дать ему создать группу. Затем сделайте его семенным членом для остальных присоединяющихся членов. Это гарантирует формирование группы при присоединении остальных членов.
Создание группы и одновременное присоединение нескольких членов не поддерживается. Возможно, это сработает, но есть вероятность, что операции зайдут в тупик, и действие присоединения к группе завершится ошибкой или таймаутом.
Присоединяющийся член должен взаимодействовать с семенным членом с помощью того же протокола (IPv4 или IPv6), который семенной член рекламирует в параметре
group_replication_group_seeds. Для целей разрешения IP-адресов для репликации группы список разрешённых адресов на семенном члене должен включать IP-адрес присоединяющегося члена для предлагаемого протокола, или имя хоста, разрешаемое в адрес для этого протокола. Этот адрес или имя хоста должны быть настроены и разрешены в дополнение кgroup_replication_local_addressприсоединяющегося члена, если протокол для этого адреса не совпадает с рекламируемым протоколом семенного члена. Если присоединяющийся член не имеет разрешённого адреса для соответствующего протокола, попытка подключения отклоняется. Более подробную информацию см. в Разделе 20.6.4, “Разрешения IP-адресов репликации группы”.
-
Настройка переменной
group_replication_bootstrap_groupуказывает плагину, нужно ли инициализировать группу. В данном случае, хотя s1 является первым членом группы, мы устанавливаем эту переменную в значение выключено в файле опций. Вместо этого мы настраиваемgroup_replication_bootstrap_groupво время работы экземпляра, чтобы убедиться, что только один член фактически инициализирует группу.ВажноПеременная
group_replication_bootstrap_groupдолжна быть включена только на одном серверном экземпляре, принадлежащем группе в любой момент, обычно в первый раз, когда вы инициализируете группу (или в случае, если вся группа выводится из строя и снова запускается). Если вы инициализируете группу несколько раз, например, когда у нескольких серверных экземпляров установлена эта опция, они могут создать искусственную ситуацию разделения мозга, в которой существуют две разные группы с одинаковым именем. Всегда устанавливайтеgroup_replication_bootstrap_group=offпосле того, как первый серверный экземпляр запустится.
Системные переменные, описанные в этом учебнике, являются необходимыми параметрами конфигурации для запуска нового члена, но доступны и другие системные переменные для настройки членов группы. Они перечислены в Разделе 20.9, «Переменные группы репликации».
Ряд системных переменных, некоторые из которых специфичны для Group Replication, а другие — нет, представляют собой параметры конфигурации для всей группы, которые должны иметь одинаковое значение на всех членах группы. Если члены группы установили значение для одной из этих системных переменных, а присоединяющийся член установил другое значение для нее, присоединяющийся член не сможет присоединиться к группе, и будет возвращено сообщение об ошибке. Если члены группы установили значение для этой системной переменной, а присоединяющийся член не поддерживает эту системную переменную, он не сможет присоединиться к группе. Все эти системные переменные указаны в Разделе 20.9, «Переменные группы репликации».
© 2025 Oracle
Licensed under the GPLv2 License.