• 搜索
  • 夜间模式
    ©2026  依刻学习 Theme by OneBlog

    依刻学习博客

    搜索
    标签
  • 首页>
  • 学习的一天>
  • 正文
  • MHA实践(2)

    2025年03月23日 17 阅读 0 评论 2943 字

    前言

    复习MHA,练习MHA工具,包括测试,master在线切换主机,master离线切换主机

    |NODE|IP|ROLE|
    |-|-|-|
    |T1|192.168.179.191|master,MHA-node|
    |T2|192.168.179.192|slave,MHA-manager|
    |T3|192.168.179.193|slave,MHA-node|

    MHA测试工具

    1. 检查 MySQL 复制状况
      一般在启动MHA之前检查

      masterha_check_repl     --conf=/app/tools/masterha/app1.cnf 

    2. 检查 MHA 的 SSH 配置状况

      masterha_check_ssh --conf=/app/tools/masterha/app1.cnf

    3. 检测当前 MHA 运行状态

      masterha_check_status  --conf=/app/tools/masterha/app1.cnf

    MHA自动转移(主从切换)流程

    1. MHA检查到master节点宕机
    2. MHA检查配置文件
    3. MHA关闭master节点以防万一
    4. 新主节点的恢复

      此步包括选择从slave中按数据最接近master的原则选择新的master(如果某slave配置了candidate_master=1,则必为主节点)

    5. 新slave节点change master到新的master,然后进行数据差异检查,对齐

    可以发现其中并没有配置任何用户,还是使用app1.cnf中的配置文件,所以使用的复制账号与监控账户跟之前是一样的,所以才需要在每个节点上(包括slave)都进行相同账号的创建和授权

    如果旧主重启,默认情况下MHA不会自动将其重新加入集群,也就是说可能需要手动切换,或者通过MHA故障切换脚本(这个脚本要自己写)

    MHA手动切换

    手动切换的前提时MHA没有启动,否则会触发自动转移

    1. 检查MHA状态

      masterha_check_status  --conf=<file>
    2. 检查MHA监控与配置

      masterha_check_repl --conf=<file>
    3. 手动切换

      masterha_master_switch  --master_state=dead  --conf=/app/tools/masterha/app1.cnf --dead_master_host=192.168.179.191 --dead_master_port=3306 --new_master_host=192.168.179.192  --new_master_port=3306 --ignore_last_failover 
      #dead_master_host请参考配置文件,只能写配置文件中有的host(必须与配置相同,配置中是IP那么就不能写主机名)

    MHA在线切换

    :up:在线切换指的是master与slave都正常工作时进行配置

    恢复

    1. 检查MHA状态

      masterha_check_status  --conf=<file>
    2. 检查MHA监控与配置

      masterha_check_repl --conf=<file>
    3. 查看参数

      #查看Seconds_Behind_Master(从服务器当前与主服务器之间的数据同步滞后时间s)
      #slave节点
      show slave status\G;
      #查看TIME
      #master节点
      show processlist;


    4. 在线切换主库

      masterha_master_switch --master_state=alive --conf=/app/tools/masterha/app1.cnf --new_master_host=192.168.179.193 --orig_master_is_new_slave --running_updates_limit=1000 --interactive=0
      
      #--orig_master_is_new_slave 将原master变成新slave
      #Seconds_Behind_Master值必须小于--running_updates_limit指定的值
      #TIME(show processlist;中的TIME最大值)必须小于--running_updates_limit指定的值




    切换成功

    本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    Copyright©2026  All Rights Reserved.  Load:0.029 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。