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

时间: 2024-08-31 14:30:40

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

基于Docker的mysql mha 的集群环境构建实践

12月2日,云计算高级工程师王佩老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的mysql mha 的集群环境构建实践"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢王佩老师对DBA+社群给予的大力支持.    嘉宾简介   云计算高级工程师 目前主要研究docker 相关的云计算技术   演讲实录  关于docker 想必前面的各位大牛分享的演讲讲的非常多了,今天主要跟大家分享基于docker快速构建 mysql mha 的一个实战案

Windows下MySQL安装配置方法图文教程_Mysql

Windows下的安装与配置MySQL详细步骤思路,分享给大家,供大家参考,具体内容如下 本文介绍Windows XP下的安装与配置. 要想在Windows中运行MySQL,需要: Ø 32位Windows操作系统,例如9x.Me.NT.2000.XP或Windows Server 2003. 基于Windows NT的操作系统(NT,2000,XP,2003),将MySQL服务器做为服务来运行.强烈建议使用基于Windows NT的操作系统. Ø TCP/IP协议支持(也许是所有数据库系统的基

MAC下mysql安装配置方法图文教程_Mysql

一.下载MySQL     访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到"MySQL Community Server"下方有一个"download"点击. 进入MySQL的下载界面(http://www.mysql.com/downloads/mysql/),如果你是用的Mac OS来访问的话那么就会默认为你选好了Mac OS X 平台,而下面罗列的都是在Mac OS上能用的MySQL的版本,如果是用的其他

Win+Apache+PHP+MySQL+Tcomcat配置_服务器

系统要求: 硬件能跑起操作系统即可 Win2K.WinXP或Win2003操作系统 前期准备: 所需软件列表:(本配置以下列软件版本完成) 1. APACHE_2.0.47-win32-x86-no_ssl (Apache web服务器) 2. PHP-4.3.3-Win32 (PHP语言解析器) 3. MySQL-4.0.12-win (MySQL数据库) 4. j2sdk-1_4_2-windows-i586 (JAVA 语言环境) 5. Jakarta-Tomcat-5.0.9 (Tomc

深入实践Spring Boot2.1.1 MySQL依赖配置

2.1.1 MySQL依赖配置 为了使用JPA和MySQL,首先在工程中引入它们的Maven依赖,如代码清单2-1所示.其中,指定了在运行时调用MySQL的依赖. 代码清单2-1 JPA和Mysql依赖配置 <dependencies>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-start

Mysql主从配置,实现读写分离

原文:Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从

mysql主从配置教程及容错方案详解

主从配置我们需要有两台mysql服务器,我们先要清楚两点 1.mysql配置文件my.cnf的位置 2.如何启动.停止mysql,找好启动文件 假设有两台机器,已经安装好了mysql(尽量同版本,且两台机器同一网络,可以ping通) 有朋友说:"从服务器,不能低于主服务器的版本",不过我是低于的,没有出现问题. 主机A: 192.168.1.100 从机B:192.168.1.101 可以有多台从机 环境windows 2003系统 主服配置文件 server-id = 1 log-b

相当简单的MySQL主从复制配置教程

主从复制好处 它可以保证我们数据实时异步备份并且主服务器不受外部影响安全可靠 主从复制原理 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的: 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器.master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环. 这些日志可以记录发送到slave服务器的更新.当一个slaves服务器连接master服务器时,它通知ma

深入解析半同步与异步的MySQL主从复制配置_Mysql

简单来讲MySQL的主从复制就是一个C/S架构的应用.master可以认为是我们通常意义上所认为的server,slave可以当作是一台client.slave上的I/O线程去请求master上数据,而master验证通过slave的信息后就允许slave接入,然后进行数据变化信息的发送.一.MySQL主从复制原理这里我以MySQL5.5为例来说一下MySQL的主从复制的原理: 首先由备节点的I/O线程负责向主节点请求数据,主节点验证通过以后会由dump线程把数据发送给备用节点.备用节点的I/O