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 9.2 поддерживает наличие контрольных сумм в двоичном журнале и может использовать их для проверки целостности событий на некоторых каналах, поэтому вы можете использовать значение по умолчанию. Более подробную информацию см. в разделе 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's
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 Server'shostnameиport; они также могут (и) рекламировать альтернативный список конечных точек распределённого восстановления в качестве выделенных подключений для присоединяющихся членов. Более подробную информацию см. в разделе 20.5.4.1, «Подключения для распределённого восстановления».ВажноРаспределённое восстановление может завершиться ошибкой, если присоединяющийся член не может правильно идентифицировать других членов, используя имя хоста, заданное системной переменной MySQL Server's
hostname. Рекомендуется, чтобы операционные системы, на которых работает MySQL, имели правильно настроенное уникальное имя хоста, либо с помощью DNS, либо с помощью локальных настроек. Имя хоста, используемое сервером для подключений SQL-клиентов, можно проверить в столбцеMember_hostтаблицы Performance Schemareplication_group_members. Если несколько членов группы внешне используют имя хоста по умолчанию, заданное операционной системой, существует вероятность, что присоединяющийся член не сможет разрешить его до правильного адреса члена и не сможет подключиться для распределённого восстановления. В этой ситуации можно использовать системную переменную MySQL Server'sreport_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.