Spec-Zone.ru › MySQL 9.2

20.7.4 Сжатие сообщений

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

Пороговое значение сжатия по умолчанию составляет 1000000 байтов. Например, можно использовать следующие операторы для повышения порога сжатия до 2 МБ:

STOP GROUP_REPLICATION;
SET GLOBAL group_replication_compression_threshold = 2097152;
START GROUP_REPLICATION;

Если установить group_replication_compression_threshold в ноль, сжатие сообщений отключено.

Group Replication использует алгоритм сжатия LZ4 для сжатия сообщений, отправляемых в группе. Обратите внимание, что максимальный поддерживаемый размер входных данных для алгоритма сжатия LZ4 составляет 2113929216 байтов. Это ограничение ниже максимального возможного значения для системной переменной group_replication_compression_threshold, которое соответствует максимальному размеру сообщения, принимаемому XCom. Таким образом, максимальный размер входных данных LZ4 является практическим ограничением для сжатия сообщений, а транзакции размером свыше этого значения не могут быть подтверждены при включенном сжатии сообщений. При использовании алгоритма сжатия LZ4 не устанавливайте значение, превышающее 2113929216 байтов, для group_replication_compression_threshold.

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

Также можно настроить сжатие сообщений, отправляемых для распределённого восстановления методом передачи состояния из двоичного журнала донора. Сжатие для этих сообщений, которые отправляются от донора, уже входящего в группу, к присоединяющемуся члену, контролируется отдельно с помощью системных переменных group_replication_recovery_compression_algorithms и group_replication_recovery_zstd_compression_level. Дополнительную информацию см. в разделе 6.2.8, «Управление сжатием соединений».

Сжатие транзакций двоичного журнала, активируемое системной переменной binlog_transaction_compression, также можно использовать для экономии пропускной способности. Полезная нагрузка транзакций остаётся сжатой при передаче между участниками группы. Если использовать сжатие транзакций двоичного журнала в сочетании с сжатием сообщений Group Replication, сжатие сообщений имеет меньше возможностей для воздействия на данные, но всё ещё может сжимать заголовки и те события и полезные нагрузки транзакций, которые не сжаты. Дополнительную информацию о сжатии транзакций двоичного журнала см. в разделе 7.4.4.5, «Сжатие транзакций двоичного журнала».

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

Рисунок 20.13 Поддержка сжатия

The MySQL Group Replication plugin architecture is shown as described in an earlier topic, with the five layers of the plugin positioned between the MySQL server and the replication group. Compression and decompression are handled by the Group Communication System API, which is the fourth layer of the Group Replication plugin. The group communication engine (the fifth layer of the plugin) and the group members use the compressed transactions with the smaller data size. The MySQL Server core and the three higher layers of the Group Replication plugin (the APIs, the capture, applier, and recovery components, and the replication protocol module) use the original transactions with the larger data size.

При ограниченной пропускной способности сети сжатие сообщений может обеспечить повышение пропускной способности на 30-40% на уровне групповой коммуникации. Это особенно важно в контексте больших групп серверов под нагрузкой. TCP-точка-точка характер взаимосвязей между N участниками в группе заставляет отправителя отправлять одинаковое количество данных N раз. Кроме того, двоичные журналы, скорее всего, будут иметь высокий коэффициент сжатия. Это делает сжатие привлекательной функцией для рабочих нагрузок Group Replication, содержащих большие транзакции.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/group-replication-message-compression.html

Spec-Zone.ru

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