MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步。尽管如此,在部署配置的过程中,由于疏忽总难以避免这样或那样的错误。本文是对MHA配置中常见问题的一个汇总,供大家参考。http://hovertree.com/menu/mysql/

1、非root用户等效性环境等效性配置
  a、添加所有节点(含管理节点)主机名及IP到host文件,所有节点操作
  b、生成基于非root用户(如使用mysql账户)的对称密钥,使用ssh-keygen
  c、复制公钥到其他各节点(含管理节点),如下,且使用了非缺省ssh 端口
    ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 50011 mysql@172.16.16.10" 
  d、验证等效性(首次需要输入密码)
    ssh -p 50011 vdbsrv1 date;ssh -p 50011 vdbsrv2 date;ssh -p 50011 vdbsrv3 date;ssh -p 55555 vdbsrv4 date

2、MHA管理节点目录权限问题
  ###如果在管理节点使用了非root用户进行mha管理,则需要相关权限,否则报错
  ###如下我们使用mysql用户管理mha,则在root账户先创建相关目录,在赋权给mysql
  # mkdir -p /var/log/masterha/app1
  # chown -R mysql:mysql /var/log/masterha
  # su - mysql
  $ masterha_check_repl --conf=/etc/app1.cnf   ###使用mysql用户校验复制关系

3、需要添加用于登陆到mysql服务器账户
  ###需要STOP SLAVE, CHANGE MASTER, RESET SLAVE等相关权限,该账户要添加到mha配置文件中,主从切换时用到
  ###在mysql数据库各节点执行,如下由于跨网段,所以分配了跨网段账户,否则,单条赋权即可
  ### Author : Leshami
  ### Blog   : http://blog.csdn.net/leshami
  mysql> grant all privileges on *.* to 'mha'@'172.16.16.%' identified by '***';
  Query OK, 0 rows affected (0.00 sec)
  
  mysql> grant all privileges on *.* to 'mha'@'192.168.1.%' identified by '***';
  Query OK, 0 rows affected (0.00 sec)

4、需要添加用于建立复制关系的账户
  ###在mysql数据库各节点执行,如下由于跨网段,所以分配了跨网段账户,否则,单条赋权即可
  mysql> grant replication slave on *.* to 'repl'@'172.16.16.%' identified by '***';
  Query OK, 0 rows affected (0.00 sec)
  
  mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '***';
  Query OK, 0 rows affected (0.00 sec)

5、从库的各客户端应开启binlog,即log_bin=on
  ###未开启则收到如下提示:
  Mon Apr 13 20:02:15 2015 - [warning]  log-bin is not set on slave SZ-DB-SLAVE01(192.168.81.3:3306). 
  This host cannot be a master.

6、各主从库应该使用相同的复制过滤规则
  ###否则收到如下的错误提示:
  Mon Apr 13 20:02:15 2015 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/ServerManager.pm, ln546] Replication 
      filtering check failed on dbsrv3(192.168.1.3:3306)! All slaves must have same replication filtering rules.
      Check SHOW SLAVE STATUS output and set my.cnf correctly.
  Mon Apr 13 20:02:15 2015 - [warning] Bad Binlog/Replication filtering rules:

7、各从库应设置relay_log_purge=0
  ###否则收到以下告警信息 ##mysql -e 'set global relay_log_purge=0' 动态修改该参数,因为随时slave会提升为master。补充@150420
  Mon Apr 13 20:02:15 2015 - [warning]  relay_log_purge=0 is not set on slave vdbsrv2(172.16.16.12:3306).

8、各从库设置read_only=1
  ###否则收到以下告警信息 ## mysql -e 'set global read_only=1' 动态修改该参数,因为随时slave会提升为master。补充@150420
  Mon Apr 13 20:19:54 2015 - [info]  read_only=1 is not set on slave vdbsrv3(172.16.16.13:3306).

9、mysqlbinlog version过低
  ###大多数情况下我们使用yum方式安装perl-DBD-MySQL,该方式会自动安装mysql rpm包。
  ###MHA在执行master_check_repl会调用/usr/bin/mysqlbinlog,对于源码安装在不同的路径的mysql高版本
  ###则收到如下错误提示:
  Thu Apr 16 14:01:44 2015 - [info]   Connecting to mysql@192.168.1.7(vdbsrv2:22).. 
  mysqlbinlog version is 3.2 (included in MySQL Client 5.0 or lower). This is not recommended. 
    Consider upgrading MySQL Client to 5.1 or higher.
  
  ###解决方案是编译安装perl-DBD-MySQL时指定mysql安装位置,或者参考:mysqlbinlog can not parse row based events

10、缺省路径下mysql客户端如果不存在则出现以下提示
  ###通过建立软链或者yum install perl-DBD-MySQL会自动安装mysql
  Testing mysql connection and privileges..sh: mysql: command not found
  mysql command failed with rc 127:0!
   at /usr/bin/apply_diff_relay_logs line 375

11、清理mysql.user用户表中用户名为空的记录(补充@20150421)

笔者有一次在做在线切换时发现复制账户从一个slave可以到新master,而无法从original master连接到新master,删除用户为空记录后正常

推荐:http://www.cnblogs.com/roucheng/p/mysqljichu.html

MySQL MHA配置常见问题的更多相关文章

  1. MySQL MHA配置

    MySQL环境: master:192.168.202.129:3306 slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130 ...

  2. MYSQL + MHA +keepalive + VIP安装配置(一)--MYSQL安装配置

    一.总概: 本文介绍了MySQL高可用性的实现方案MHA,MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,不管是MySQL主服务器,还是MySQL从服务器,都要安装Nod ...

  3. MySQL高可用之MHA配置

    本文简单介绍了MySQL的高可用实现方式之一的MHA MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点:通过提升某一从节点为新的主节点,基于主 ...

  4. MySQL MHA安装配置

    1.环境规划 192.168.12.131 node01 192.168.12.132 node02 192.168.12.133 node03 2.环境准备 一主两从GTID,略. 3.配置关键程序 ...

  5. MYSQL MHA

    MYSQL MHA 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于 Face ...

  6. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  7. 搭建MySQL MHA高可用

    本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/ MySQL MHA 高可用集群 环境: Linu ...

  8. mysql mha 主从自动切换 高可用

    mha(Master High Availability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案. 一,什么是mha,有什么特性 1. 主服务器的自动监控和故障转移 ...

  9. CENTOS6.6 下mysql MHA架构搭建

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是自己搭建的一篇mysql MHA文章 前面的安装步骤基 ...

随机推荐

  1. Spring Trasnaction管理(3)- 事务嵌套

    问题导读 Spring 如何管理嵌套的事务 Spring事务传播机制 Nested 和 RequireNew 有何区别 事务传播机制 事务的传播机制应该都比较熟悉 在日常开发中会遇到需要事务嵌套的情况 ...

  2. 知方可补不足~SQL为大数据引入分区表

    回到目录 一些概念 分区表在oracle和sqlserver中都上存在的,当数据表的数据量过大时,上千万,上亿的数据,在进行数据查询时需要显得比较慢,性能很差,这时是时候引入分区表了,分区表顾名思义, ...

  3. Memcache分布式部署方案

    基础环境 其实基于PHP扩展的Memcache客户端实际上早已经实现,而且非常稳定.先解释一些名词,Memcache是danga.com的一个开源项目,可以类比于MySQL这样的服务,而PHP扩展的M ...

  4. Java线程:线程栈模型与线程的变量

    Java线程:线程栈模型与线程的变量   要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运 ...

  5. Atitit。木马病毒原理机密与概论以及防御

    Atitit.木马病毒原理机密与概论以及防御 1. 定时截屏木马1 1.1. QQ聊天与微信聊天木马1 2. 文档木马1 3. 病毒木马的触发方式2 4. 远程木马2 5. 漏洞木马2 6. 病毒木马 ...

  6. DataGridView的Cell事件的先后触发顺序

    最近正在使用“DataGridView”对一个旧的Vs 2003开发的WINDOWS应用程序进行改造. 发现Vs 2003中的"DataGrid"中的一些事件已经在新的控件Data ...

  7. Java并发包中CountDownLatch的工作原理、使用示例

    1. CountDownLatch的介绍 CountDownLatch是一个同步工具,它主要用线程执行之间的协作.CountDownLatch 的作用和 Thread.join() 方法类似,让一些线 ...

  8. HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新

    AJAX的原理是什么? 实际上就是发起HTTP请求,既然就是发起HTTP请求,那只要我们能够实现发起HTTP请求就可以在不使用AJAX的情况下实现相同的效果. 在前端有好多方式可以发起HTTP请求,比 ...

  9. static、const和static const

    http://blog.csdn.net/rainkin1993/article/details/8068558 #include<iostream> using namespace st ...

  10. 关于c#动态加载程序集的一些注意事项

    Assembly下有LoadFile,LoadFrom等方法可以加载程序集. LoadFile只加载你给定路径的那个dll,LoadFrom会自动加载依赖的dll. 如:A依赖B,LoadFile(& ...