InnoDB 集群和 ClusterSet 支持 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 或更早版本的默认值)。您可以在 MySQL 8.0.27 或更高版本中使用 XCOM 通信栈,但必须在创建或重启命令中明确定义它。
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
,则会显示错误并且命令失败。
addInstance
、rejoinInstance
和 rescan
命令还会检查目标实例的通信栈支持,并相应地设置所需的配置选项。
-
ipAllowList
.XCOM
: 默认情况下自动设置。MYSQL
: 未设置。MYSQL
通信栈不允许使用ipAllowList
。
-
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
。