Spec-Zone.ru › MySQL 9.2

20.5.1.4 Установка версии протокола связи группы

Группа репликации в MySQL 9.2 использует понятие протокола связи группы, чья версия может управляться явно и устанавливаться для поддержки самой старой версии MySQL Server, которую группа должна поддерживать. Это позволяет формировать группы из членов, использующих различные версии MySQL Server, обеспечивая обратную совместимость.

  • MySQL 5.7.14 и более поздние версии позволяют сжимать сообщения (см. Раздел 20.7.4, «Сжатие сообщений»).

  • MySQL 8.0.16 и более поздние версии также позволяют фрагментировать сообщения (см. Раздел 20.7.5, «Фрагментация сообщений»).

  • MySQL 8.0.27 и более поздние версии также позволяют группе коммуникационного движка работать с единственным лидером консенсуса, когда группа находится в режиме с одним первичным сервером, и group_replication_paxos_single_leader установлено в значение true (см. Раздел 20.7.3, «Единственный лидер консенсуса»).

Все члены группы должны использовать одну и ту же версию протокола связи, чтобы члены группы могли быть на разных выпусках MySQL Server, но отправлять только сообщения, которые могут быть поняты всеми членами группы.

Сервер MySQL версии X может присоединиться и достичь состояния ONLINE в группе репликации только если версия протокола связи группы меньше или равна X. Когда новый член присоединяется к группе репликации, он проверяет версию протокола связи, объявленную существующими членами группы. Если присоединяющийся член поддерживает эту версию, он присоединяется к группе и использует протокол связи, который группа объявила, даже если член поддерживает дополнительные возможности связи. Если присоединяющийся член не поддерживает версию протокола связи, он исключается из группы.

Если два члена пытаются присоединиться в одном событии изменения членства, они могут присоединиться только если версия протокола связи для обоих членов уже совместима с версией протокола связи группы. Члены с различными версиями протокола связи от группы должны присоединяться изолированно. Например:

  • Один экземпляр MySQL Server 8.0.16 может успешно присоединиться к группе, использующей версию протокола связи 5.7.24.

  • Один экземпляр MySQL Server 5.7.24 не может успешно присоединиться к группе, использующей версию протокола связи 8.0.16.

  • Два экземпляра MySQL Server 8.0.16 не могут одновременно присоединиться к группе, использующей версию протокола связи 5.7.24.

  • Два экземпляра MySQL Server 8.0.16 могут одновременно присоединиться к группе, использующей версию протокола связи 8.0.16.

Вы можете проверить используемый протокол связи группы, используя функцию group_replication_get_communication_protocol(), которая возвращает самую старую версию MySQL Server, которую поддерживает группа. Все существующие члены группы возвращают одну и ту же версию протокола связи. Например:

SELECT group_replication_get_communication_protocol();
+------------------------------------------------+
| group_replication_get_communication_protocol() |
+------------------------------------------------+
| 8.0.16                                         |
+------------------------------------------------+

Обратите внимание, что функция group_replication_get_communication_protocol() возвращает минимальную версию MySQL, которую поддерживает группа, что может отличаться от версии, переданной функции group_replication_set_communication_protocol(), и от версии MySQL Server, установленной на члене, где вы используете функцию.

Если вам нужно изменить версию протокола связи группы, чтобы члены более ранних релизов могли присоединиться, используйте функцию group_replication_set_communication_protocol() для указания версии MySQL Server самого старого члена, которого вы хотите разрешить. Это позволяет группе вернуться к совместимой версии протокола связи, если это возможно. Для использования этой функции требуется привилегия GROUP_REPLICATION_ADMIN, и все существующие члены группы должны быть онлайн при выполнении оператора, без потери большинства. Например:

SELECT group_replication_set_communication_protocol("5.7.25");

Если вы обновите всех членов группы репликации до новой версии MySQL Server, версия протокола связи группы не будет автоматически обновлена для соответствия. Если вам больше не нужно поддерживать членов более ранних релизов, вы можете использовать функцию group_replication_set_communication_protocol() для установки версии протокола связи на новую версию MySQL Server, до которой вы обновили членов. Например:

SELECT group_replication_set_communication_protocol("8.0.16");

Функция group_replication_set_communication_protocol() реализована как групповое действие, поэтому она выполняется одновременно на всех членах группы. Групповое действие начинает буферизацию сообщений и ожидает завершения доставки всех исходящих сообщений, которые уже находились в процессе, затем изменяет версию протокола связи и отправляет буферизованные сообщения. Если член пытается присоединиться к группе в любое время после изменения версии протокола связи, члены группы объявляют новую версию протокола.

Кластер MySQL InnoDB автоматически и прозрачно управляет версиями протоколов связи своих членов всякий раз, когда топология кластера изменяется с помощью операций AdminAPI. InnoDB кластер всегда использует последнюю версию протокола связи, поддерживаемую всеми экземплярами, которые в настоящее время являются частью кластера или присоединяются к нему. Подробности см. в .

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/group-replication-communication-protocol.html

Spec-Zone.ru

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