20.3.2 Ограничения групповой репликации
Ниже приведены известные ограничения для групповой репликации. Обратите внимание, что ограничения и проблемы, описанные для групп в режиме нескольких основных серверов, также могут применяться к кластерам в режиме одного основного сервера во время события переключения, в то время как вновь избранный основной сервер очищает очередь своего прикладного сервера со старого основного сервера.
Групповая репликация основана на репликации на основе GTID, поэтому вы также должны учитывать Раздел 19.1.3.7 «Ограничения репликации с GTID».
--upgrade=MINIMALпараметр. Групповая репликация не может быть запущена после обновления MySQL Server, использующего параметр MINIMAL (--upgrade=MINIMAL), который не обновляет системные таблицы, от которых зависят внутренности репликации.-
Блокировки разрывов. Процесс сертификации групповой репликации для конкурирующих транзакций не учитывает информацию о блокировках разрывов, так как она недоступна за пределами
InnoDB. Дополнительную информацию см. в разделе Блокировки разрывов.ПримечаниеДля группы в режиме нескольких основных серверов, если вы не полагаетесь на
REPEATABLE READсемантику в своих приложениях, мы рекомендуем использовать уровень изоляцииREAD COMMITTEDс групповой репликацией. InnoDB не использует блокировки разрывов вREAD COMMITTED, что согласует локальное обнаружение конфликтов внутри InnoDB с распределенным обнаружением конфликтов, выполняемым групповой репликацией. Для группы в режиме одного основного сервера только основной сервер принимает записи, поэтому уровень изоляцииREAD COMMITTEDне важен для групповой репликации. Блокировки таблиц и именованные блокировки. Процесс сертификации не учитывает блокировки таблиц (см. Раздел 15.3.6 «Операции LOCK TABLES и UNLOCK TABLES») или именованные блокировки (см.
GET_LOCK()).-
Контрольные суммы бинарного журнала. Групповая репликация в MySQL 9.2 поддерживает контрольные суммы, поэтому члены группы могут использовать значение по умолчанию
binlog_checksum=CRC32. Значение дляbinlog_checksumне должно быть одинаковым для всех членов группы.Когда контрольные суммы доступны, групповая репликация не использует их для проверки входящих событий на канале
group_replication_applier, так как события записываются в этот релейный журнал из нескольких источников и до их фактического записи в бинарный журнал исходного сервера, когда генерируется контрольная сумма. Контрольные суммы используются для проверки целостности событий на каналеgroup_replication_recoveryи на других каналах репликации на членах группы. Уровень изоляции SERIALIZABLE.
SERIALIZABLEуровень изоляции по умолчанию не поддерживается в группах с несколькими основными серверами. Установка уровня изоляции транзакции наSERIALIZABLEнастраивает групповую репликацию на отказ от подтверждения транзакции.Конкурентные операции DDL и DML. Конкурентные операторы определения данных и операторы обработки данных, выполняемые над одним объектом, но на разных серверах, не поддерживаются при использовании режима нескольких основных серверов. Во время выполнения операторов языка определения данных (DDL) над объектом, выполнение одновременных операторов языка обработки данных (DML) над тем же объектом, но на другом экземпляре сервера, связано с риском того, что конфликтующие DDL, выполняемые на разных экземплярах, не будут обнаружены.
-
Внешние ключи с каскадными ограничениями. Группы с несколькими основными серверами (все члены настроенны на
group_replication_single_primary_mode=OFF) не поддерживают таблицы с многоуровневыми зависимостями внешних ключей, в частности таблицы, которые имеют определенныеCASCADING. Это связано с тем, что ограничения внешних ключей, которые приводят к каскадным операциям, выполняемым группой с несколькими основными серверами, могут привести к необнаруженным конфликтам и привести к несогласованным данным на всех членах группы. Поэтому мы рекомендуем установитьgroup_replication_enforce_update_everywhere_checks=ONна экземплярах серверов, используемых в группах с несколькими основными серверами, чтобы избежать необнаруженных конфликтов.В режиме одного основного сервера это не проблема, так как он не допускает одновременных записей на нескольких членов группы, и, следовательно, нет риска необнаруженных конфликтов.
Тупик в режиме нескольких основных серверов. Когда группа работает в режиме нескольких основных серверов, операторы
SELECT .. FOR UPDATEмогут привести к тупику. Это связано с тем, что блокировка не разделяется между членами группы, поэтому ожидание такого оператора может не быть достигнуто.Фильтры репликации. Глобальные фильтры репликации не могут быть использованы на экземпляре MySQL, который настроен для групповой репликации, потому что фильтрация транзакций на некоторых серверах сделает группу неспособной достичь соглашения об согласованном состоянии. Специфичные для канала фильтры репликации могут быть использованы на каналах репликации, которые не участвуют непосредственно в групповой репликации, например, где член группы также действует как реплика источника, находящегося вне группы. Они не могут быть использованы на каналах
group_replication_applierилиgroup_replication_recovery.-
Зашифрованные соединения. Поддержка протокола TLSv1.3 доступна в MySQL, при условии, что он был скомпилирован с использованием OpenSSL 1.1.1 или более поздней версии. Групповая репликация поддерживает TLSv1.3, где она может быть использована для соединений групповой связи и соединений распределенного восстановления.
group_replication_recovery_tls_versionиgroup_replication_recovery_tls_ciphersuitesмогут использоваться для настройки поддержки клиентом любого набора шифров, включая только нестандартные шифры по желанию. См. Раздел 8.3.2 «Зашифрованные соединения TLS протоколы и шифры». Операции клонирования. Групповая репликация инициирует и управляет операциями клонирования для распределенного восстановления, но члены группы, которые были настроены для поддержки клонирования, также могут участвовать в операциях клонирования, инициируемых пользователем вручную. Вы можете инициировать операцию клонирования вручную, если операция включает член группы, на котором запущена групповая репликация, при условии, что операция клонирования не удаляет и не заменяет данные на получателе. Поэтому оператор для инициирования операции клонирования должен включать в себя
DATA DIRECTORYпредложение, если запущена групповая репликация. См. Раздел 20.5.4.2.4 «Клонирование для других целей».
Предел размера группы
Максимальное количество серверов MySQL, которые могут быть членами одной группы репликации, составляет 9. Если дальнейшие члены попытаются присоединиться к группе, их запрос будет отклонен. Этот предел был определен на основе тестирования и бенчмаркинга как безопасная граница, в которой группа работает надежно в стабильной локальной сети.
Пределы размера транзакции
Если отдельная транзакция приводит к содержимому сообщения, достаточно большому, чтобы сообщение не могло быть скопировано между участниками группы по сети в течение 5-секундного окна, участники могут быть заподозрены в отказе и затем исключены просто потому, что они заняты обработкой транзакции. Крупные транзакции также могут привести к замедлению системы из-за проблем с выделением памяти. Чтобы избежать этих проблем, используйте следующие меры:
Если из-за больших сообщений происходят ненужные исключения, используйте системную переменную
group_replication_member_expel_timeout, чтобы предоставить дополнительное время, прежде чем участника, заподозренного в отказе, исключить. Вы можете допустить до часа после первоначального 5-секундного периода обнаружения, прежде чем подозреваемый участник будет исключен из группы. По умолчанию дополнительно предоставляется 5 секунд.По возможности старайтесь ограничивать размер транзакций перед их обработкой Group Replication. Например, разбейте файлы, используемые с
LOAD DATA, на более мелкие части.Используйте системную переменную
group_replication_transaction_size_limit, чтобы указать максимальный размер транзакции, который группа принимает. Максимальный размер транзакции по умолчанию составляет 150000000 байт (приблизительно 143 МБ); транзакции, превышающие этот размер, откатываются и не отправляются в систему групповой коммуникации Group Replication (GCS) для распространения в группе. Настройте значение этой переменной в зависимости от максимального размера сообщения, которое группа должна терпеть, помня, что время обработки транзакции пропорционально ее размеру.Используйте системную переменную
group_replication_compression_threshold, чтобы указать размер сообщения, превышение которого приводит к применению сжатия. Эта системная переменная по умолчанию имеет значение 1000000 байт (1 МБ), поэтому большие сообщения автоматически сжимаются. Сжатие выполняется групповой системой коммуникации Group Replication (GCS) при получении сообщения, которое было разрешено настройкойgroup_replication_transaction_size_limit, но превышает настройкуgroup_replication_compression_threshold. Дополнительная информация содержится в Разделе 20.7.4, «Сжатие сообщений».Используйте системную переменную
group_replication_communication_max_message_size, чтобы указать размер сообщения, превышение которого приводит к фрагментации сообщений. Эта системная переменная по умолчанию имеет значение 10485760 байт (10 МБ), поэтому большие сообщения автоматически фрагментируются. GCS выполняет фрагментацию после сжатия, если сжатое сообщение все еще превышает ограничениеgroup_replication_communication_max_message_size. Дополнительная информация содержится в Разделе 20.7.5, «Фрагментация сообщений».
Максимальный размер транзакции, сжатие сообщений и фрагментация сообщений могут быть отключены путем задания нулевого значения для соответствующей системной переменной. Если все эти меры предосторожности отключены, максимальный размер сообщения, который может обработать поток приложения на узле группы репликации, равен значению системной переменной replica_max_allowed_packet узла, имеющего значение по умолчанию и максимальное значение 1073741824 байт (1 ГБ). Сообщение, превышающее этот предел, завершается неудачей при попытке обработки принимающим узлом. Максимальный размер сообщения, которое может быть отправлено и передано участником группы, составляет 4294967295 байт (приблизительно 4 ГБ). Это жесткое ограничение на размер пакета, принимаемый движком групповой связи для Group Replication (XCom, вариант Paxos), который получает сообщения после обработки их GCS. Сообщение, превышающее этот предел, завершается неудачей при попытке его трансляции исходящим узлом.
© 2025 Oracle
Licensed under the GPLv2 License.