mysql如何配置MHA高可用集群_安装Node节点与Manager监控脚本

mysql如何配置MHA高可用集群_安装Node节点与Manager监控脚本p p mha 高可用集群必须在所有 mysql 节点安装 mha4mysql node 否则故障切换失败 manager 仅发指令 node 执行 change master to 等操作并提供关键脚本 ssh 需 root 免密且禁用 requiretty 配置文件缺 user repl user ssh user 等任一字段均导致校验失败 MHA 高可用集群不能只装

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



 

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

mysql如何配置mha高可用集群_安装node节点与manager监控脚本

MHA 高可用集群不能只装 Manager 就完事,Node 节点必须在所有 MySQL 实例上安装并验证可用,否则故障切换时会直接失败。

Manager 本身不参与数据同步或主从切换执行,它只发指令;真正执行 CHANGE MASTER TOSTART SLAVERESET SLAVE 等操作的是各节点本地的 mha4mysql-node。如果某个 Slave 没装 Node,Manager 在切换时会卡在 “Waiting for slaves to apply relay logs” 或报错 Can’t exec "apply_diff_relay_logs"

  • Node 组件提供 apply_diff_relay_logsfilter_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_workdirmanager_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_sshmasterha_check_repl 直接报错退出,而不是警告。

  • user=root:这是 SSH 登录用户,不是 MySQL 用户;不写默认为当前 shell 用户,往往不是 root
  • repl_user=replrepl_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.cnfmasterha_check_repl –conf=/etc/masterha/app1.cnf,再动 manager,比反复重启服务省时间得多。

小讯
上一篇 2026-04-17 12:32
下一篇 2026-04-17 12:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/266367.html