MySQL组复制的通讯栈Communication Stack

[复制链接]
发表于 2026-3-6 15:32:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
有人扣问MySQL InnoDB Cluster中,group_replication_local_address参数设置的端口跟MySQL监听端口划一, 如许会辩论吗? 为什么他将节点参加InnoDB Cluster报错?
简单展示如下:
  1. mysql> show variables like 'port';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | port          | 3306  |
  6. +---------------+-------+
  7. 1 row in set (0.01 sec)
  8. mysql>
  9. mysql> show variables like 'group_replication_local_address';
  10. +---------------------------------+---------------+
  11. | Variable_name                   | Value         |
  12. +---------------------------------+---------------+
  13. | group_replication_local_address | mysqlu01:3306 |
  14. +---------------------------------+---------------+
  15. 1 row in set (0.01 sec)
  16. mysql>
复制代码
实在MySQL变量group_replication_local_address中的端口跟MySQL监听端口3306划一,不肯定会引起辩论. 由于MySQL组复制的通讯栈协议有两种,具体取决于你的MySQL版本与你使用的通讯栈(Communication Stack).
通讯栈范例

MySQL组复制支持以下通讯堆栈:
MYSQL通讯堆栈

MySQL通讯栈是MySQL 8.0.27版本开始引入的,MySQL通过使用MySQL Server 的毗连安全性代替Group Replication的实现。使用MySQL协议意味着可以使用标准的用户身份验证方法来授予(或取消)对组的访问权限,

  • 通过使用 MySQL 服务器的毗连安全性代替组复制实现来简化MySQL InnoDB 集群的创建。
  • 消除了对内部组复制通讯的额外网络地点或端口的须要。
  • 使用 MYSQL 协议意味着可以使用标准的用户身份验证方法来授予或取消对组的访问权限,而不是允许列表。
  • 支持组复制的网络定名空间。
Oracle 发起使用MySQL通讯堆栈而不是XCOM.
XCOM通讯堆栈

XCOM: (MySQL Server 8.0.26 或更早版本的默认值)。您可以将 XCOM 通讯堆栈与 MySQL 8.0.27 或更高版本一起使用,但必须在创建或重启下令中明白界说。
XCOM使用安全协议的组复制实现来掩护成员之间的组通讯毗连和分布式规复毗连,包罗 TLS/SSL 和对传入组通讯体系 (GCS) 毗连使用允许列表。
假如您正在使用 XCOM通讯堆栈,除了默认port的 3306(用于通过经典 MySQL 协议举行客户端毗连)和 mysqlx_port默以为 33060(用于 X 协议客户端毗连)之外,
另有一个内部端口集群中不消于客户端毗连的实例之间的毗连。该端口由localAddress选项设置,该选项设置 group_replication_local_address 体系变量,这个
端口必须打开,如许集群中的实例才气相互通讯。比方,假如您的防火墙克制了此端口,则实例无法相互通讯,集群也无法运行。同样,假如您的实例正在使用SELinux,
您须要确保 InnoDB Cluster 使用的全部必须端口都已打开,以便实例可以相互通讯。
检察使用的通讯栈范例

如下所示,字段MEMBER_COMMUNICATION_STACK表现MGR使用的通讯栈范例.
  1. mysql> SELECT MEMBER_HOST
  2.     ->       ,MEMBER_PORT
  3.     ->       ,MEMBER_COMMUNICATION_STACK
  4.     -> FROM performance_schema.replication_group_members
  5.     -> ORDER BY MEMBER_HOST;
  6. +-------------+-------------+----------------------------+
  7. | MEMBER_HOST | MEMBER_PORT | MEMBER_COMMUNICATION_STACK |
  8. +-------------+-------------+----------------------------+
  9. | mysqlu01    |        7306 | MySQL                      |
  10. | mysqlu02    |        7306 | MySQL                      |
  11. | mysqlu03    |        7306 | MySQL                      |
  12. +-------------+-------------+----------------------------+
  13. 3 rows in set (0.00 sec)
复制代码
MGR通讯栈为Xcom场景
  1. mysql> SELECT MEMBER_HOST
  2.     ->       ,MEMBER_PORT
  3.     ->       ,MEMBER_COMMUNICATION_STACK
  4.     -> FROM performance_schema.replication_group_members
  5.     -> ORDER BY MEMBER_HOST;
  6. +-------------+-------------+----------------------------+
  7. | MEMBER_HOST | MEMBER_PORT | MEMBER_COMMUNICATION_STACK |
  8. +-------------+-------------+----------------------------+
  9. | mysqlu01    |        7306 | XCom                       |
  10. | mysqlu02    |        7306 | XCom                       |
  11. | mysqlu03    |        7306 | XCom                       |
  12. +-------------+-------------+----------------------------+
  13. 3 rows in set (0.01 sec)
  14. mysql>
复制代码
通讯栈选择

MySQL官方保举使用MySQL通讯栈而非XCOM通讯栈.原文如下:
  1. Oracle recommends using the MYSQL communication stack instead of XCOM.
复制代码
固然也有人以为如今而言,MySQL通讯栈Bug多一些,使用XCOM通讯栈更稳固一些.
参考资料

1.https://dev.mysql.com/doc/mysql-shell/8.4/en/shell-admin-api-communication-stack.html
2.https://dev.mysqlserver.cn/doc/mysql-shell/8.4/en/shell-admin-api-communication-stack.html
3.How To Use group_replication_communication_stack in InnoDB Cluster FAQ4202
扫描上面二维码关注我假如你至心以为文章写得不错,而且对你有所资助,那就不妨帮助“保举"一下,您的“保举”和”打赏“将是我最大的写作动力!本文版权归作者全部,接待转载,但未经作者同意必须保存此段声明,且在文章页面显着位置给出原文毗连.
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表