我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL MHA切换失败一例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL MHA切换失败一例


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

$ 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..



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


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL MHA切换失败一例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

解决win8 microsoft账户切换失败问题

win8microsoft账户切换的时候经常会发现切换失败,这该如何解决呢? 工具/原料 win8系统 电脑 方法/步编程骤 在win8.1桌面http://www.cppcns.com,按“Windows+C”快捷
2023-05-23

mongodb切换数据库失败怎么解决

当在MongoDB中切换数据库失败时,可能是由于以下原因导致的:没有指定正确的数据库名称:确保在切换数据库时输入的数据库名称是正确的,检查是否有拼写错误或者大小写问题。没有权限切换到指定数据库:在MongoDB中,需要有足够的权限才能切换到
mongodb切换数据库失败怎么解决
2024-04-09

MySQL 有关MHA搭建与切换的几个错误log

1:masterha_check_repl 副本集方面报错  replicates is not defined in the configuration file!具体信息如下:# /usr/local/bin/masterha_check_repl --c
2021-06-12

MySQL 有关MHA搭建与切换的几个错误log汇总

1:masterha_check_repl 副本集方面报错 replicates is not defined in the configuration file! 具体信息如下:# /usr/local/bin/masterha_che
2022-05-30

MySQL之MHA高可用配置及故障切换实现详细部署步骤

一、MHA介绍 (一)、什么是MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做
2022-05-24

关于@DS注解切换数据源失败的原因实战记录

项目配置了多个数据源,需要使用@DS注解来切换数据源,但是却遇到了问题,下面这篇文章主要给大家介绍了关于@DS注解切换数据源失败原因的相关资料,需要的朋友可以参考下
2023-05-19

Win8切换Microsoft帐户失败提示错误代码0xd00000bb怎么办?

告诉你在Win8切换Microsoft帐户时出现0xd00000bb代码的解决办法 1、当你想要登陆应用商城时弹出这样的画面不要慌下面我来告诉你解决办法2、按开始点击电脑设置3、点击,帐户4、点击 其他帐户,接下来在点 添加帐户5、弹出下面
2022-06-04

编程热搜

目录