mha高可用集群必须在所有mysql节点安装mha4mysql-node,否则故障切换失败;manager仅发指令,node执行change master to等操作并提供关键脚本;ssh需root免密且禁用requiretty;配置文件缺user、repl_user、ssh_user等任一字段均导致校验失败。

MHA 高可用集群不能只装 Manager 就完事,Node 节点必须在所有 MySQL 实例上安装并验证可用,否则故障切换时会直接失败。
Manager 本身不参与数据同步或主从切换执行,它只发指令;真正执行 CHANGE MASTER TO、START SLAVE、RESET SLAVE 等操作的是各节点本地的 mha4mysql-node。如果某个 Slave 没装 Node,Manager 在切换时会卡在 “Waiting for slaves to apply relay logs” 或报错 Can’t exec "apply_diff_relay_logs"。
- Node 组件提供
apply_diff_relay_logs、filter_mysqlbinlog等关键脚本,用于补全主库宕机前未同步的 binlog - Manager 通过 SSH 调用远程节点上的
masterha_check_repl,该命令依赖本地 Node 安装路径(默认/usr/bin/) - CentOS 7 默认 Perl 版本偏低,
mha4mysql-node-0.58要求perl-DBD-MySQL已预装,否则rpm -ivh会因依赖失败静默退出
Manager RPM 包不会自动建配置目录、日志目录或运行用户,直接运行 masterha_manager 会提示 No such file or directory: /etc/masterha/app1.cnf 或因权限问题写日志失败。
- 必须手动创建
/etc/masterha/目录,并确保root或指定用户有读写权限 - 建议用专用用户运行 Manager:
useradd -r -s /sbin/nologin mha,后续启动时加–user=mha - 配置文件名必须匹配启动命令中的
–conf参数,例如启动用masterha_manager –conf=/etc/masterha/app1.cnf,那文件就必须叫app1.cnf,不能是mysql-mha.cnf - 配置里
manager_workdir和manager_log路径需提前mkdir -p并授权,否则日志写入失败,Manager 启动后看似成功,实则监控不生效
MHA Manager 默认以 root 身份 SSH 连接各节点执行命令,若改用普通用户(如 mysql),需在所有节点的 /etc/sudoers 中显式放行对应命令,极易遗漏;更常见问题是 sudo: sorry, you must have a tty to run sudo 导致切换中断。
- 所有节点的
/etc/sudoers中确认注释掉Defaults requiretty(或添加Defaults:mha !requiretty) - Manager 节点生成密钥后,用
ssh-copy-id root@ip分发,不要手工追加authorized_keys——容易权限设成644,SSH 会拒绝加载 - 测试命令必须带
-o StrictHostKeyChecking=no:例如ssh -o StrictHostKeyChecking=no root@192.168.1.11 ‘hostname’,否则首次连接交互式确认会卡住自动化流程 - Node 节点上
/root/.ssh/config若存在 Host 别名或 ProxyCommand,可能干扰 Manager 的直连判断,建议清空或注释
app1.cnf 不是写完就能跑,缺任意一个都会让 masterha_check_ssh 或 masterha_check_repl 直接报错退出,而不是警告。
-
user=root:这是 SSH 登录用户,不是 MySQL 用户;不写默认为当前 shell 用户,往往不是 root -
repl_user=repl和repl_password=replpass:必须和 MySQL 里CREATE USER ‘repl’@‘%’创建的账号完全一致,大小写、引号、特殊字符都要核对 -
ssh_user=root:显式声明 SSH 用户,和上面user=是同一值,但 MHA 旧版本(如 0.56)会忽略user只认ssh_user,所以两个都写最稳妥 - 别把
master_ip_failover_script配置项留空或注释掉——即使不用 VIP,也得指向一个存在且可执行的空脚本,否则masterha_manager启动时报Can’t open master_ip_failover_script
实际部署中,80% 的初始化失败都卡在 Node 未装全、SSH 权限不对、或配置文件少写一个 = 后面的值。先跑通 masterha_check_ssh –conf=/etc/masterha/app1.cnf 和 masterha_check_repl –conf=/etc/masterha/app1.cnf,再动 manager,比反复重启服务省时间得多。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/266367.html