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 8.4 поддерживает контрольные суммы, поэтому члены группы могут использовать значение по умолчанию
binlog_checksum=CRC32. Значениеbinlog_checksumне должно быть одинаковым для всех членов группы.Когда контрольные суммы доступны, групповая репликация не использует их для проверки входящих событий на канале
group_replication_applier, так как события записываются в этот журнал пересылки из нескольких источников и до того, как они фактически запишутся в двоичный журнал исходного сервера, где и генерируется контрольная сумма. Контрольные суммы используются для проверки целостности событий на каналеgroup_replication_recoveryи на любых других каналах репликации у членов группы. Уровень изоляции SERIALIZABLE.
SERIALIZABLEуровень изоляции по умолчанию не поддерживается в группах с несколькими основными серверами. Установка уровня изоляции транзакции наSERIALIZABLEприводит к отказу групповой репликации от подтверждения транзакции.Одновременные операции DDL и DML. Одновременные операторы определения данных (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.