MySQL MHA配置常见问题

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

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,删除用户为空记录后正常

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

Spring Boot 2.0(五):Docker Compose+Spring Boot+Nginx+Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your f...

4764
来自专栏运维技术迷

Centos安装sshfs实现挂载目录

SSH 是一个强大且安全的工具,我们除了可以用它来远程管理主机外,还可以通过它建立 SSH tunnel作 Proxy用,远程传输文件等等。而这里我想要介绍另外...

4846
来自专栏battcn

一起来学SpringBoot | 第二十四篇:数据库管理与迁移(Liquibase)

目前 SpringBoot 支持较好的两款工具分别是 flyway、 liquibase,支持 sql script,在初始化数据源之后执行指定的 脚本代码或者...

1662
来自专栏菩提树下的杨过

spring cloud 学习(5) - config server

 分布式环境下的统一配置框架,已经有不少了,比如百度的disconf,阿里的diamand。今天来看下spring cloud对应的解决方案: ? 如上图,从架...

25510
来自专栏漏斗社区

工具| 诸神之眼nmap定制化之初识篇

Nmap是学习网络安全必备的一款工具,有着强大的信息收集能力,有本书甚至因此称它为“诸神之眼” 。Nmap不仅仅是一个端口扫描器那么简单,它还有着一个强大的脚本...

4168
来自专栏纯洁的微笑

springboot(一):入门篇

什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使...

3057
来自专栏微信公众号:Java团长

超详细图解从0搭建SSM框架【intellij idea】

文章链接:http://blog.csdn.net/w8897282/article/details/71215591

8981
来自专栏Android相关

Gradle For Android(3)--管理依赖关系

依赖关系管理是Gradle的闪光点。在这个脚本中最好的一点,就是你所需要的只是添加一行到你的build.gradle中,然后Gradle就会从一个远程仓库中下载...

1033
来自专栏LanceToBigData

SpringBoot(一)走进Springboot的世界

什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使...

3069
来自专栏zhangdd.com

Zabbix监控-使用JMX功能监控tomcat安装配置

zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Javagateway”;它是用java写的一个程序。

1214

扫码关注云+社区

领取腾讯云代金券