MySQL Shell 8.4  /  ...  /  配置组复制通信栈

7.5.9 配置组复制通信栈

InnoDB 集群和集群集支持为 MySQL 8.0.27 中的组复制引入的 MySQL 通信栈。

新选项 communicationStack: XCOM|MYSQL 设置组复制系统变量的值 group_replication_communication_stack

注意

无法将 communicationStack 选项与 adoptfromGR 一起使用。

通信栈类型

支持以下通信栈

  • MYSQL: (MySQL Server 8.0.27 或更高版本的默认值)

    • 通过使用 MySQL Server 的连接安全性代替组复制实现,简化了 InnoDB 集群的创建。

    • 消除了对内部组复制通信的额外网络地址或端口的需求。

    • 使用 MYSQL 协议意味着可以使用标准的用户身份验证方法来授予或撤销对组的访问权限,以代替允许列表。

    • 支持组复制的网络命名空间。

    Oracle 建议使用 MYSQL 通信栈而不是 XCOM

  • XCOM: (MySQL Server 8.0.26 或更早版本的默认值)。您可以将 XCOM 通信栈与 MySQL 8.0.27 或更高版本一起使用,但必须在创建或重新启动命令中明确定义它。

    XCOM 使用组复制实现的安全协议(包括 TLS/SSL 和用于传入组通信系统 (GCS) 连接的允许列表)来保护组成员之间的组通信连接和分布式恢复连接。

选择通信栈

通信栈选择由 dba.createCluster()<clusterSet>.createReplicaCluster() 命令中的 communicationStack 选项设置。

例如

js> dba.createCluster("testCluster", {communicationStack: "mysql"})

js> clusterset.createReplicaCluster("hostname:3306", "replica", {communicationStack: "mysql"})

每个命令都会检查 MySQL 服务器以确保它可以使用 MYSQL 协议。如果它不支持 MYSQL,则会显示错误消息,并且命令将失败。

addInstancerejoinInstancerescan 命令也会检查目标实例的通信栈支持,并相应地设置所需的配置选项。

  • ipAllowList.

    • XCOM: 默认情况下自动设置。

    • MYSQL: 未设置。ipAllowList 不允许使用 MYSQL 通信栈。

  • localAddress

    • XCOM: (高级选项,不建议) 自动生成。需要额外的网络地址或端口。

    • MYSQL: 自动更新为使用 MySQL 服务器报告的值。

      localAddress 可以手动定义,但端口必须是 MySQL 正在监听的端口,如 bind_address 所定义的。

  • 更新 SSL 设置。两种通信协议都使用相同的 SSL 设置。

切换通信栈

可以在从完全中断操作重新启动期间切换通信栈。

例如

js> dba.rebootClusterFromCompleteOutage("testcluster", {switchCommunicationStack: "mysql"})

MYSQL 协议切换到 XCOM 需要一个额外的网络地址用于 localAddress,并且可能还需要 ipAllowList 值。

如果从 XCOM 切换到 MYSQL 栈,将进行以下更改

  • ipAllowList 将被取消设置。

  • localAddress 将更新为使用 MySQL 服务器报告的值。

  • 更新 SSL 设置。如果 memberSslMode 设置为 VERIFY_CA 或 VERIFY_IDENTITY,则设置将从 MySQL 服务器复制。如果 memberSslMode 设置为 REQUIRED,则不会进行任何更改。

    注意

    如果 memberSslMode 设置为除 DISABLED 之外的任何值,则 group_replication_recovery_use_ssl 始终启用。