#### 13.4.3.6 检查和设置组复制通信的功能

协议版本

以下功能使您能够检查和配置复制组使用的组复制通信协议版本。

-   MySQL 5.7.14 的版本允许压缩消息（参见[第 18.7.4 节，“消息压缩”](group-replication-message-compression.html)）。

-   MySQL 8.0.16 的版本还允许消息碎片（参见[第 18.7.5 节，“消息碎片”](group-replication-performance-message-fragmentation.html)）。

-   MySQL 8.0.27 的版本还允许组通信引擎在组处于单主模式和组时与单个共识领导者一起操作\_复制\_帕克索斯\_单身的\_领导者设置为真（见[第 18.7.3 节，“单一共识领导者”](group-replication-single-consensus-leader.html)）。

-   [](<>) [`group_replication_get_communication_protocol()`](group-replication-functions-for-communication-protocol.html#function_group-replication-get-communication-protocol)

    [](<>)[](<>)

    检查当前用于组的组复制通信协议版本。

    句法：

    ```
    STRING group_replication_get_communication_protocol()
    ```

    这个函数没有参数。

    返回值：

    可以加入该组并使用该组的通信协议的最旧的 MySQL Server 版本。请注意，[`group_replication_get_communication_protocol()`](group-replication-functions-for-communication-protocol.html#function_group-replication-get-communication-protocol)函数返回组支持的最低 MySQL 版本，它可能与传递给[`group_replication_set_communication_protocol()`](group-replication-functions-for-communication-protocol.html#function_group-replication-set-communication-protocol)函数，并且来自安装在您使用该函数的成员上的 MySQL 服务器版本。

    如果由于此服务器实例不属于复制组而无法检查协议，则会以字符串形式返回错误。

    例子：

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

    有关详细信息，请参阅[第 18.5.1.4 节，“设置组的通信协议版本”](group-replication-communication-protocol.html).

-   [](<>) [`group_replication_set_communication_protocol()`](group-replication-functions-for-communication-protocol.html#function_group-replication-set-communication-protocol)

    [](<>)[](<>)

    降级组的 Group Replication 通信协议版本，以便早期版本的成员可以加入，或在所有成员上升级 MySQL Server 后升级组的 Group Replication 通信协议版本。这[`GROUP_REPLICATION_ADMIN`](privileges-provided.html#priv_group-replication-admin)使用此功能需要权限，并且在您发出声明时，所有现有的组成员必须在线，并且不会丢失多数。

    笔记

    对于 MySQL InnoDB 集群，只要使用 AdminAPI 操作更改集群拓扑，就会自动管理通信协议版本。对于 InnoDB 集群，您不必自己使用这些函数。

    句法：

    ```
    STRING group_replication_set_communication_protocol(version)
    ```

    论据：

    -   *`版本`*：对于降级，指定具有最旧安装服务器版本的预期组成员的 MySQL 服务器版本。在这种情况下，如果可能，该命令使组回退到与该服务器版本兼容的通信协议。您可以指定的最低服务器版本是 MySQL 5.7.14。对于升级，请指定现有组成员已升级到的新 MySQL 服务器版本。

        返回值：

        包含操作结果的字符串，例如是否成功。

        例子：

    ```
    SELECT group_replication_set_communication_protocol("5.7.25");
    ```

    有关详细信息，请参阅[第 18.5.1.4 节，“设置组的通信协议版本”](group-replication-communication-protocol.html).
