从 MySQL Shell 8.0.30 开始,InnoDB Cluster 和 ClusterSet 支持在 MySQL 8.0.27 中为组复制引入的 MySQL 通信堆栈。
新选项communicationStack:
XCOM|MYSQL
设置组复制系统变量的值
group_replication_communication_stack
。
无法将
communicationStack
选项与 一起使用
adoptfromGR
。
支持以下通信堆栈:
-
MYSQL:(MySQL Server 8.0.27 或更新版本的默认值)
通过使用 MySQL 服务器的连接安全性代替组复制实现来简化 InnoDB 集群的创建。
消除了对内部组复制通信的额外网络地址或端口的需要。
使用 MYSQL 协议意味着可以使用标准的用户身份验证方法来授予或撤销对组的访问权限,而不是允许列表。
支持组复制的网络命名空间。
Oracle 建议使用
MYSQL
通信堆栈而不是XCOM
. -
XCOM:(MySQL Server 8.0.26 或更早版本的默认值)。您可以将 XCOM 通信堆栈与 MySQL 8.0.27 或更高版本一起使用,但必须在创建或重启命令中明确定义。
XCOM 使用安全协议的组复制实现来保护成员之间的组通信连接和分布式恢复连接,包括 TLS/SSL 和对传入组通信系统 (GCS) 连接使用允许列表。
通信栈选择由
和
命令
communicationStack
中的选项
设置。dba.createCluster()
<clusterSet>.createReplicaCluster()
例如:
js> dba.createCluster("testCluster", {communicationStack: "mysql"})
js> clusterset.createReplicaCluster("hostname:3306", "replica", {communicationStack: "mysql"})
每个命令都会检查 MySQL 服务器以确保它可以使用该
MYSQL
协议。如果不支持
MYSQL
,则会显示错误且命令失败。
、addInstance
和
命令还检查目标实例的通信堆栈支持rejoinInstance
并
rescan
相应地设置所需的配置选项。
-
ipAllowList
.XCOM
:默认自动设置。MYSQL
: 未设置。ipAllowList
不允许使用MYSQL
通信堆栈。
-
localAddress
XCOM
: (高级选项,不推荐) 自动生成。需要额外的网络地址或端口。-
MYSQL
: 自动更新为使用 MySQL 服务器报告的值。localAddress
可以手动定义,但端口必须是 MySQL 正在侦听的端口,如bind_address
.
-
groupSeeds
XCOM
: 自动生成。需要额外的网络地址或端口。MYSQL
: 自动更新为使用bind_address
每个 MySQL 实例使用的值。
-
更新 SSL 设置。两种通信协议使用相同的 SSL 设置。如果
memberSslMode
设置为 VERIFY_CA 或 VERIFY_IDENTITY,则从 MySQL 服务器复制设置。memberSslMode
如果设置为 REQUIRED,则不 进行任何更改。笔记group_replication_recovery_use_ssl
memberSslMode
如果设置为 DISABLED 以外的任何值, 则始终启用。
可以在从完全中断操作重新启动期间切换通信堆栈。
例如:
js> dba.rebootClusterFromCompleteOutage("testcluster", {switchCommunicationStack: "mysql"})
从MYSQL
协议切换到
XCOM
需要额外的网络地址,localAddress
并且可能还需要
ipAllowList
值。
如果从 XCOM 切换到 MYSQL 堆栈,将进行以下更改:
ipAllowList
未设置。localAddress
已更新为使用 MySQL 服务器报告的值。groupSeeds
更新为使用bind_address
每个 MySQL 实例使用的值。-
更新 SSL 设置。如果
memberSslMode
设置为 VERIFY_CA 或 VERIFY_IDENTITY,则从 MySQL 服务器复制设置。memberSslMode
如果设置为 REQUIRED,则不 进行任何更改 。笔记group_replication_recovery_use_ssl
memberSslMode
如果设置为 DISABLED 以外的任何值, 则始终启用。