Spec-Zone.ru › MySQL 8.4

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

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

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

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

  • MySQL 8.0.27 и более поздние версии также позволяют механизму связи группы работать с одним лидером консенсуса, когда группа находится в режиме single-primary и 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-8.4-en/group-replication-communication-protocol.html

Spec-Zone.ru

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