先看下引起问题的密码啥样, 包含两个特殊字符[和~.

$ egrep -w 'user|password' /etc/masterha/app1.cnf

password=P[AI3M~5z

user=mha_mgr

用户mha_mgr的作用, 如下文档中的说明, 可见其对数据库实例起到管理的作用.

MySQL administrative database username to the target MySQL server. This should be root because it runs all necessary administrative commands such as STOP SLAVE, CHANGE MASTER, RESET SLAVE.

看看两种场景下切换失败的现象.

1. 手动在线切换, 据日志可看到, MHA将密码中的特殊字符转义了, 致使用户mha_mgr连接数据库失败.

检查原有的主从复制状态, 发现无变化, 即切换失败, 并没造成影响.

$ masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --orig_master_is_new_slave

...

Thu Jan 11 10:28:39 2018 - [info] * Phase 2: Rejecting updates Phase..

Thu Jan 11 10:28:39 2018 - [info]

Thu Jan 11 10:28:39 2018 - [info] Executing master ip online change script to disable write on the current master:

Thu Jan 11 10:28:39 2018 - [info]   /usr/local/bin/master_ip_online_change --command=stop --orig_master_host=192.168.4.42 --orig_master_ip=192.168.4.42 --orig_master_port=3306 --orig_master_user='mha_mgr' --orig_master_password='P\[AI3M\~5z' --new_master_host=192.168.4.43 --new_master_ip=192.168.4.43 --new_master_port=3306 --new_master_user='mha_mgr' --new_master_password='P\[AI3M\~5z' --orig_master_ssh_user=mysql --new_master_ssh_user=mysql   --orig_master_is_new_slave

ARGS: $VAR1 = [

'--command=stop',

'--orig_master_host=192.168.4.42',

'--orig_master_ip=192.168.4.42',

'--orig_master_port=3306',

'--orig_master_user=mha_mgr',

'--orig_master_password=P\\[AI3M\\~5z',

'--new_master_host=192.168.4.43',

'--new_master_ip=192.168.4.43',

'--new_master_port=3306',

'--new_master_user=mha_mgr',

'--new_master_password=P\\[AI3M\\~5z',

'--orig_master_ssh_user=mysql',

'--new_master_ssh_user=mysql',

'--orig_master_is_new_slave'

];

Unknown option: orig_master_ssh_user

Unknown option: new_master_ssh_user

Unknown option: orig_master_is_new_slave

Got Error: DBI connect(';host=192.168.4.43;port=3306;mysql_connect_timeout=4','mha_mgr',...) failed: Access denied for user 'mha_mgr'@'192.168.4.45' (using password: YES) at /usr/local/share/perl5/MHA/DBHelper.pm line 205.

at /usr/local/bin/master_ip_online_change line 132.

Thu Jan 11 10:28:39 2018 - [error][/usr/local/share/perl5/MHA/ManagerUtil.pm, ln177] Got ERROR:  at /usr/local/bin/masterha_master_switch line 53.

2. 自动故障切换(手动关闭主库, 模拟故障), 日志最后出现了"completed successfully"的字样, 貌似没问题, 但详细查看日志, 发现一处和上面类似的报错, 见标黄处.

检查原有的复制状态, 发现复制关系切换正常, 但是写虚拟IP不见了, 即不可写了.

$ tail -f /var/log/masterha/manager.log

...

Fri Jan 12 10:33:55 2018 - [info] Executing master IP activate script:

Fri Jan 12 10:33:55 2018 - [info]   /usr/local/bin/master_ip_failover --command=start --ssh_user=mysql --orig_master_host=192.168.4.42 --orig_master_ip=192.168.4.42 --orig_master_port=3306 --new_master_host=192.168.4.43 --new_master_ip=192.168.4.43 --new_master_port=3306 --new_master_user='mha_mgr' --new_master_password='P\[AI3M\~5z'

DBI connect(';host=192.168.4.43;port=3306;mysql_connect_timeout=4','mha_mgr',...) failed: Access denied for user 'mha_mgr'@'192.168.4.45' (using password: YES) at /usr/local/share/perl5/MHA/DBHelper.pm line 205.

at /usr/local/bin/master_ip_failover line 81.

Fri Jan 12 10:33:55 2018 - [error][/usr/local/share/perl5/MHA/MasterFailover.pm, ln1588]  Failed to activate master IP address for 192.168.4.43(192.168.4.43:3306) with return code 10:0

Fri Jan 12 10:33:55 2018 - [warning] Proceeding.

Fri Jan 12 10:33:55 2018 - [info] Setting read_only=0 on 192.168.4.43(192.168.4.43:3306)..

Fri Jan 12 10:33:55 2018 - [info]  ok.

...

Master failover to 192.168.4.43(192.168.4.43:3306) completed successfully.

Fri Jan 12 10:33:57 2018 - [info] Sending mail..

解决方法, 换个比较正常的密码就行了. 至于修复这个小缺陷, 还要仔细查下代码.

转载于:https://blog.51cto.com/coveringindex/2060408

MySQL MHA切换失败一例相关推荐

  1. mysql 4字节utf8_MySQL 4字节utf8字符更新失败一例

    MySQL 4字节utf8字符更新失败一例 业务的小伙伴反映了下面的问题 问题 有一个4字节的utf8字符'????'插入到MySQL数据库中时报错 java.sql.SQLException: In ...

  2. MySQL服务MySQL+MHA高可用服务集群搭建

    MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...

  3. Step By Step 搭建 MySql MHA 集群

    关于MHA    MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案.MHA 搭建的前提是MySQL集群中已 ...

  4. mysql mha 简书_MySQL-(集群-MHA)

    1.为什么要做主从复制 1.分担主库的压力 2.做读写分离 主从复制原理图 image.png MySQL的 IO线程和SQL线程报错 IO 线程: UUID报错 image.png #1.UUID相 ...

  5. MySQL MHA高可用集群部署及故障切换(图文详解)

    文章目录 MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 实验思路 实验环境.安装包 1.所有服务器,关闭系统防火墙和安全机制 2.修改 mas ...

  6. mysql mha文档_mysql mha

    https://www.cnblogs.com/xiaoboluo768/p/5135584.html 环境: centos 6.5 x64 192.168.0.32 # master 192.168 ...

  7. MySQL 1045登录失败解决方法

    MySQL 1045登录失败解决方法 登录MySQL数据库出现:Error 1045错误,输入的用户名或密码错误被拒绝访问了 Error 1045错误: ERROR 1045 (28000): Acc ...

  8. MySQL MHA 高可用架构

    2019独角兽企业重金招聘Python工程师标准>>> MySQL MHA   项目的地址:https://code.google.com/p/mysql-master-ha/,这个 ...

  9. 搭建MySQL+MHA服务易错位置

    搭建MySQL+MHA服务易错位置 在 Slave1.Slave2 节点执行同步操作时如果两条线程为NO 在所有服务器上配置无密码认证 在 manager 节点上测试 ssh 无密码认证 在 mana ...

最新文章

  1. 服务器架设笔记——httpd插件支持mysql字符集选择
  2. Vlan 4096的限制原因
  3. Netty:Java 领域网络编程的王者
  4. 同步规则和happen-before规则
  5. 深入理解C++对象模型-对象的内存布局,vptr,vtable
  6. 用GPIO口模拟串口通信,它真的来了
  7. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变...
  8. Elasticsearch学习系列-搜索技术基本知识
  9. linux 负载进程,Linux 中 D 状态的进程与平均负载
  10. RTDS 推出 NovaCor
  11. ubuntu下用VirtualBox安装Windows虚拟机
  12. “麻将换皮”的《刀塔自走棋》会是下一个“吃鸡”吗?
  13. Webcontent 和WebRoot的区别
  14. 定点补码加减法运算_定点加减法运算与溢出判断处理
  15. 虚拟机VMware访问Window共享文件
  16. lvm扩容lv扩容操作记录
  17. POJ 图论---1_Uriel's Corner Uriel's Coding Learning Cubing Zone
  18. 使用web设计器制作图表报表
  19. input输入框只能输入字母
  20. 如何搭建真正能洞悉数据的领导驾驶舱

热门文章

  1. SVN仓库安装、备份和迁移基本操作
  2. 【Oracle】Drop表后闪回
  3. zkfc 异常退出问题,报错Received stat error from Zookeeper. code:CONNECTIONLOSS
  4. Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .
  5. dubbo服务RpcException异常:Tried 3 times of the providers 或com.alibaba.dubbo.remoting.TimeoutException
  6. .netFramework 升级NetCore 问题汇总及解决方案
  7. MySQL出现Incorrect integer value: ‘‘ for column ‘id‘ at row 1解决方法
  8. postgresql查看死锁及解决方法
  9. 如何解决 React 官方脚手架不支持 Less 的问题
  10. 高度等于动态宽度(CSS流体布局)