MHA提供了3种方式用于实现故障转移,分别自动故障转移,需要启用MHA监控;

在无监控的情况下的手动故障转移以及基于在线手动切换。

三种方式可以应对MySQL主从故障的任意场景。本文主要描述在无监控的情形是手动实现故障转移。供大家参考。

有关MHA的其他两种切换方式,可以参考:
            MHA 在线切换过程            MHA 自动故障转移步骤及过程剖析

1、手动故障转移的特点
    a、在监控节点未启用masterha_manager
    b、master库已经宕机或者转移到高性能服务器
    c、手动故障转移支持交互或非交互两种模式
    d、切换样例:$ masterha_master_switch --master_state=dead --conf=/etc/app1.cnf --dead_master_host=host1

2、masterha_master_switch切换的几个参数
--master_state=dead
      强制参数为"dead" 或者 "alive". dead为手动故障转移,alive为在线切换。
  
--dead_master_host=(hostname)
      强制参数为主机名,另2个--dead_master_ip --dead_master_port(缺省3306)可选。
  
--new_master_host=(hostname)
      可选参数,用于指定新master,如果未指定则按candidate_master参数设定值。
  
--interactive=(0|1)
      可选参数,指定是否交互。缺省为1,表明交互

  1.  
  2. 1.server1:
    service mysql.server stop
  3.  
  4. 2.monitor:
    [root@monitor tmp]# masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.conf --dead_master_host=server1 --dead_master_port= --new_master_host=slave1 --new_master_port=
  5. --dead_master_ip=<dead_master_ip> is not set. Using 10.24.220.232.
  6. Mon May :: - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
  7. Mon May :: - [info] Reading application default configuration from /etc/masterha/app1.conf..
  8. Mon May :: - [info] Reading server configuration from /etc/masterha/app1.conf..
  9. Mon May :: - [info] MHA::MasterFailover version 0.56.
  10. Mon May :: - [info] Starting master failover.
  11. Mon May :: - [info]
  12. Mon May :: - [info] * Phase : Configuration Check Phase..
  13. Mon May :: - [info]
  14. Mon May :: - [debug] Connecting to servers..
  15. Mon May :: - [debug] Connected to: slave1(10.24.220.70:), user=root
  16. Mon May :: - [debug] Number of slave worker threads on host slave1(10.24.220.70:):
  17. Mon May :: - [debug] Connected to: slave2(10.169.214.33:), user=root
  18. Mon May :: - [debug] Number of slave worker threads on host slave2(10.169.214.33:):
  19. Mon May :: - [debug] Comparing MySQL versions..
  20. Mon May :: - [debug] Comparing MySQL versions done.
  21. Mon May :: - [debug] Connecting to servers done.
  22. Mon May :: - [info] GTID failover mode =
  23. Mon May :: - [info] Dead Servers:
  24. Mon May :: - [info] server1(10.24.220.232:)
  25. Mon May :: - [info] Checking master reachability via MySQL(double check)...
  26. Mon May :: - [info] ok.
  27. Mon May :: - [info] Alive Servers:
  28. Mon May :: - [info] slave1(10.24.220.70:)
  29. Mon May :: - [info] slave2(10.169.214.33:)
  30. Mon May :: - [info] Alive Slaves:
  31. Mon May :: - [info] slave1(10.24.220.70:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  32. Mon May :: - [info] GTID ON
  33. Mon May :: - [debug] Relay log info repository: FILE
  34. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  35. Mon May :: - [info] Primary candidate for the new Master (candidate_master is set)
  36. Mon May :: - [info] slave2(10.169.214.33:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  37. Mon May :: - [info] GTID ON
  38. Mon May :: - [debug] Relay log info repository: FILE
  39. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  40. Mon May :: - [info] Not candidate for the new Master (no_master is set)
  41. Master server1(10.24.220.232:) is dead. Proceed? (yes/NO): yes
  42. Mon May :: - [info] Starting GTID based failover.
  43. Mon May :: - [info]
  44. Mon May :: - [info] ** Phase : Configuration Check Phase completed.
  45. Mon May :: - [info]
  46. Mon May :: - [info] * Phase : Dead Master Shutdown Phase..
  47. Mon May :: - [info]
  48. Mon May :: - [debug] SSH connection test to server1, option -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o BatchMode=yes -o ConnectTimeout=, timeout
  49. Mon May :: - [debug] Stopping IO thread on slave2(10.169.214.33:)..
  50. Mon May :: - [debug] Stopping IO thread on slave1(10.24.220.70:)..
  51. Mon May :: - [debug] Stop IO thread on slave2(10.169.214.33:) done.
  52. Mon May :: - [debug] Stop IO thread on slave1(10.24.220.70:) done.
  53. Mon May :: - [info] HealthCheck: SSH to server1 is reachable.
  54. Mon May :: - [info] Forcing shutdown so that applications never connect to the current master..
  55. Mon May :: - [warning] master_ip_failover_script is not set. Skipping invalidating dead master IP address.
  56. Mon May :: - [warning] shutdown_script is not set. Skipping explicit shutting down of the dead master.
  57. Mon May :: - [info] * Phase : Dead Master Shutdown Phase completed.
  58. Mon May :: - [info]
  59. Mon May :: - [info] * Phase : Master Recovery Phase..
  60. Mon May :: - [info]
  61. Mon May :: - [info] * Phase 3.1: Getting Latest Slaves Phase..
  62. Mon May :: - [info]
  63. Mon May :: - [debug] Fetching current slave status..
  64. Mon May :: - [debug] Fetching current slave status done.
  65. Mon May :: - [info] The latest binary log file/position on all slaves is log.:
  66. Mon May :: - [info] Retrieved Gtid Set: 191f7a9f-ffa2-11e5-a825-00163e00242a:-
  67. Mon May :: - [info] Latest slaves (Slaves that received relay log files to the latest):
  68. Mon May :: - [info] slave1(10.24.220.70:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  69. Mon May :: - [info] GTID ON
  70. Mon May :: - [debug] Relay log info repository: FILE
  71. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  72. Mon May :: - [info] Primary candidate for the new Master (candidate_master is set)
  73. Mon May :: - [info] slave2(10.169.214.33:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  74. Mon May :: - [info] GTID ON
  75. Mon May :: - [debug] Relay log info repository: FILE
  76. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  77. Mon May :: - [info] Not candidate for the new Master (no_master is set)
  78. Mon May :: - [info] The oldest binary log file/position on all slaves is log.:
  79. Mon May :: - [info] Retrieved Gtid Set: 191f7a9f-ffa2-11e5-a825-00163e00242a:-
  80. Mon May :: - [info] Oldest slaves:
  81. Mon May :: - [info] slave1(10.24.220.70:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  82. Mon May :: - [info] GTID ON
  83. Mon May :: - [debug] Relay log info repository: FILE
  84. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  85. Mon May :: - [info] Primary candidate for the new Master (candidate_master is set)
  86. Mon May :: - [info] slave2(10.169.214.33:) Version=5.7.-log (oldest major version between slaves) log-bin:enabled
  87. Mon May :: - [info] GTID ON
  88. Mon May :: - [debug] Relay log info repository: FILE
  89. Mon May :: - [info] Replicating from 10.24.220.232(10.24.220.232:)
  90. Mon May :: - [info] Not candidate for the new Master (no_master is set)
  91. Mon May :: - [info]
  92. Mon May :: - [info] * Phase 3.3: Determining New Master Phase..
  93. Mon May :: - [info]
  94. Mon May :: - [info] slave1 can be new master.
  95. Mon May :: - [info] New master is slave1(10.24.220.70:)
  96. Mon May :: - [info] Starting master failover..
  97. Mon May :: - [info]
  98. From:
  99. server1(10.24.220.232:) (current master)
  100. +--slave1(10.24.220.70:)
  101. +--slave2(10.169.214.33:)
  102.  
  103. To:
  104. slave1(10.24.220.70:) (new master)
  105. +--slave2(10.169.214.33:)
  106.  
  107. Starting master switch from server1(10.24.220.232:) to slave1(10.24.220.70:)? (yes/NO): yes
  108. Mon May :: - [info] New master decided manually is slave1(10.24.220.70:)
  109. Mon May :: - [info]
  110. Mon May :: - [info] * Phase 3.3: New Master Recovery Phase..
  111. Mon May :: - [info]
  112. Mon May :: - [info] Waiting all logs to be applied..
  113. Mon May :: - [info] done.
  114. Mon May :: - [debug] Stopping slave IO/SQL thread on slave1(10.24.220.70:)..
  115. Mon May :: - [debug] done.
  116. Mon May :: - [info] Getting new master's binlog name and position..
  117. Mon May :: - [info] log.:
  118. Mon May :: - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='slave1 or 10.24.220.70', MASTER_PORT=, MASTER_AUTO_POSITION=, MASTER_USER='repl', MASTER_PASSWORD='xxx';
  119. Mon May :: - [info] Master Recovery succeeded. File:Pos:Exec_Gtid_Set: log., , 191f7a9f-ffa2-11e5-a825-00163e00242a:-
  120. Mon May :: - [warning] master_ip_failover_script is not set. Skipping taking over new master IP address.
  121. Mon May :: - [info] ** Finished master recovery successfully.
  122. Mon May :: - [info] * Phase : Master Recovery Phase completed.
  123. Mon May :: - [info]
  124. Mon May :: - [info] * Phase : Slaves Recovery Phase..
  125. Mon May :: - [info]
  126. Mon May :: - [info]
  127. Mon May :: - [info] * Phase 4.1: Starting Slaves in parallel..
  128. Mon May :: - [info]
  129. Mon May :: - [info] -- Slave recovery on host slave2(10.169.214.33:) started, pid: . Check tmp log /var/log/masterha/app1/slave2_3306_20160516091938.log if it takes time..
  130. Mon May :: - [info]
  131. Mon May :: - [info] Log messages from slave2 ...
  132. Mon May :: - [info]
  133. Mon May :: - [info] Resetting slave slave2(10.169.214.33:) and starting replication from the new master slave1(10.24.220.70:)..
  134. Mon May :: - [debug] Stopping slave IO/SQL thread on slave2(10.169.214.33:)..
  135. Mon May :: - [debug] done.
  136. Mon May :: - [info] Executed CHANGE MASTER.
  137. Mon May :: - [debug] Starting slave IO/SQL thread on slave2(10.169.214.33:)..
  138. Mon May :: - [debug] done.
  139. Mon May :: - [info] Slave started.
  140. Mon May :: - [info] gtid_wait(191f7a9f-ffa2-11e5-a825-00163e00242a:-) completed on slave2(10.169.214.33:). Executed events.
  141. Mon May :: - [info] End of log messages from slave2.
  142. Mon May :: - [info] -- Slave on host slave2(10.169.214.33:) started.
  143. Mon May :: - [info] All new slave servers recovered successfully.
  144. Mon May :: - [info]
  145. Mon May :: - [info] * Phase : New master cleanup phase..
  146. Mon May :: - [info]
  147. Mon May :: - [info] Resetting slave info on the new master..
  148. Mon May :: - [debug] Clearing slave info..
  149. Mon May :: - [debug] Stopping slave IO/SQL thread on slave1(10.24.220.70:)..
  150. Mon May :: - [debug] done.
  151. Mon May :: - [debug] SHOW SLAVE STATUS shows new master does not replicate from anywhere. OK.
  152. Mon May :: - [info] slave1: Resetting slave info succeeded.
  153. Mon May :: - [info] Master failover to slave1(10.24.220.70:) completed successfully.
  154. Mon May :: - [debug] Disconnected from slave1(10.24.220.70:)
  155. Mon May :: - [debug] Disconnected from slave2(10.169.214.33:)
  156. Mon May :: - [info]
  157.  
  158. ----- Failover Report -----
  159.  
  160. app1: MySQL Master failover server1(10.24.220.232:) to slave1(10.24.220.70:) succeeded
  161.  
  162. Master server1(10.24.220.232:) is down!
  163.  
  164. Check MHA Manager logs at monitor for details.
  165.  
  166. Started manual(interactive) failover.
  167. Selected slave1(10.24.220.70:) as a new master.
  168. slave1(10.24.220.70:): OK: Applying all logs succeeded.
  169. slave2(10.169.214.33:): OK: Slave started, replicating from slave1(10.24.220.70:)
  170. slave1(10.24.220.70:): Resetting slave info succeeded.
  171. Master failover to slave1(10.24.220.70:) completed successfully.

MHA手动切换 原创1(主故障)的更多相关文章

  1. MHA手动切换 原创2 (主参与复制)

    monitor 执行下面命令后, --orig_master_is_new_slave :原主变为新从,即server1变成了slave1的从.slave2跟据app1.conf中配制也变成了slav ...

  2. MHA手动切换 原创4 (非交互式切换)

    非交互式切换:不输 YES 或者 NO [root@monitor app1]# masterha_master_switch --conf=/etc/masterha/app1.conf --mas ...

  3. 关于mha手动切换的一些记录(mha方案来自网络)

    mha方案出自:http://www.cnblogs.com/xuanzhi201111/p/4231412.html 当主服务器故障时,人工手动调用MHA来进行故障切换操作,具体命令如下: 先停MH ...

  4. MHA 安装过程 原创

    root@monitor yum.repos.d]# cat CentOS-Base.repo [base]name=CentOS-$releasever - Basefailovermethod=p ...

  5. MHA在线切换过程

    MHA 在线切换是MHA除了自动监控切换换提供的另外一种方式,多用于诸如硬件升级,MySQL数据库迁移等等.该方式提供快速切换和优雅的阻塞写入,无关关闭原有服务器,整个切换过程在0.5-2s 的时间左 ...

  6. 一个月后,我们又从 MySQL 双主切换成了主 - 从!

    这是悟空的第 157 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 一.遇到的坑 一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Kee ...

  7. HA模式手动切换namenode状态

    查看状态 hdfs haadmin -getServiceState nn1 有时候通过网页访问两个namenode的http-address,看到默认的主namenode状态变成了standy,这时 ...

  8. MHA在线切换的步骤及原理

    在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...

  9. MySQL高可用方案MHA在线切换的步骤及原理

    在日常工作中,会碰到如下的场景,如mysql数据库升级,主服务器硬件升级等,这个时候就需要将写操作切换到另外一台服务器上,那么如何进行在线切换呢?同时,要求切换过程短,对业务的影响比较小. MHA就提 ...

随机推荐

  1. [King.yue]Ext.Net 正则表达式用法

    例: .Regex("^[A-Za-z0-9]+$")   //正则表达式 .InvalidText("只能输入英文字符和数字.")); //输入错误提示

  2. [Irving]WPF Invalid character in the given encoding. Line xx, position xx.' XML is not valid.

    WPF开发中发现Xaml界面中突然抽风似的提示错误 Invalid character in the given encoding. Line xx, position xx.' XML is not ...

  3. The Automated Testing Handbook 自动化测试手册简介

    Learn what works, what doesn't and why. The Automated Testing Handbook is a practical blueprint for ...

  4. 使用k-means对3D网格模型进行分割

    使用k-means对3D网格模型进行分割 由于一些原因,最近在做网格分割的相关工作.网格分割的方法有很多,如Easy mesh cutting.K-means.谱分割.基于SDF的分割等.根据对分割要 ...

  5. 通过实验分析system_call中断处理过程

    作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 本实验目的:通过以一个简单的m ...

  6. POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Exce ...

  7. 坚持自学的第二天,bootstrap初入门

    前言 昨天,初步学完了jekyll目录结构与Liquid语法的应用与认识. 日志 今天刚入门,做了一个bootstrap导航栏,但是选中状态不行,找了JS中写好的API,写法与视频中讲的有点不一样,但 ...

  8. Java中可重入锁ReentrantLock原理剖析

    本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 一. 概述 本文首先介绍Lock接口.ReentrantLock的类层次结构以及锁功能模板类AbstractQue ...

  9. Linux管线命令

    一.什么是管线命令 bash 命令运行的时候有输出的数据会出现! 那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来配置? 这就牵涉到管线命令的问题了 (pipe) ,管线命令 ...

  10. JNI调用测试

    有需求使用JNI调用,籍着这个机会按照<Linux下测试Java的JNI(Java Native Interface)>上进行了下测试. 这篇文章记录得很清楚了,对原理未做深入的分析,希望 ...