You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Router未监听6446 R/W端口问题求助

InnoDB Cluster MySQL Router 仅监听只读端口问题排查与解决

核心问题定位

从MySQL Router日志可以明确看到:元数据缓存刷新后错误将集群所有节点标记为mode=RO,因此主动关闭了读写路由端口(6446、6448)。但cluster.status()显示集群主节点inno1:3306为R/W状态,说明集群本身运行正常,问题出在Router获取与解析集群元数据的环节。

排查与修复步骤

1. 验证Router账号权限

登录集群主节点inno1,检查bootstrap时创建的router1账号权限:

SHOW GRANTS FOR 'router1'@'%';

该账号需具备以下核心权限以正确读取集群元数据:

  • SELECT权限(针对mysql_innodb_cluster_metadata库)
  • PROCESS、REPLICATION CLIENT权限
    如果权限缺失,执行以下命令补充:
GRANT SELECT ON mysql_innodb_cluster_metadata.* TO 'router1'@'%';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'router1'@'%';
FLUSH PRIVILEGES;

2. 检查集群元数据一致性

在主节点执行命令,确认集群内部元数据的节点角色:

SELECT member_host, member_port, member_role FROM performance_schema.replication_group_members;

需确保结果中inno1的member_role为PRIMARY,与cluster.status()结果一致。若此处显示异常,需执行集群元数据修复:

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

3. 修复版本兼容性问题

当前集群使用MySQL 8.3.0,但Router版本为8.0.36,跨大版本存在元数据解析兼容性风险。建议将MySQL Router升级至与集群版本一致的8.3.x版本:

# 卸载旧版本
apt remove --purge mysql-router
# 添加MySQL 8.3源后安装
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
dpkg -i mysql-apt-config_0.8.29-1_all.deb
# 选择MySQL 8.3版本后更新源
apt update
apt install mysql-router

4. 确认主节点参数配置

在主节点inno1检查关键参数,确保主节点可写状态被正确识别:

SHOW VARIABLES LIKE 'group_replication_single_primary_mode';
SHOW VARIABLES LIKE 'read_only';

需确保group_replication_single_primary_mode为ON,且主节点的read_only为OFF。

5. 重新初始化MySQL Router

若以上检查均正常,删除现有Router配置并重新bootstrap:

rm -rf /etc/mysqlrouter
mysqlrouter --ssl-mode=disabled --bootstrap root@inno1 --directory /etc/mysqlrouter --user=root --account=router1
systemctl restart mysqlrouter

重启后查看日志,确认元数据缓存是否正确识别主节点为mode=R/W,读写端口6446、6448是否正常监听。


内容的提问来源于stack exchange,提问作者mr.Tony Soprano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:54:52