MySQL MHA配置常见问题

MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQLreplication架构的自手动主从故障转移,从库重定向到主库并自动同步。尽管如此,在部署配置的过程中,由于疏忽总难

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120378.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode设置vue模板_vscode怎么创建vue项目

    vscode设置vue模板_vscode怎么创建vue项目VSCode配置Vue模板代码前端行业使用的编辑器有很多,比如VSCode和webStorm,其中在创建vue文件后webStorm可以自动生成相关的代码,而在VSCode中得一个一个的敲,这样既浪费时间又效率低,因此,在VSCode中可以一键生成vue模板吗?当然可以,过程如下:1、打开VSCode编辑器2、左上角文件(F)=>首选项=>用户片段3、在出现的框中输入vue之后按回车键4、在出现的vue.json文件内写入以下代码

    2022年9月6日
  • 寒衣节有感而发_春寒叹表达了诗人什么感情

    寒衣节有感而发_春寒叹表达了诗人什么感情寒衣节有感而发

    2022年4月20日
  • java集合系列——Map之HashMap介绍(八)

    HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。

    2022年2月26日
  • shell变量学习记录

    shell变量学习记录

    2022年3月11日
  • python写入txt操作

    python写入txt操作第一种file=open(r’C:\Users\Administrator\Desktop\test.txt’,mode=‘a’,encoding=‘utf-8’)file.write(username+’,’+password+’\n’)上面加粗的r表示不使用转义字符(\)的意思,才能够正常使用地址。第二个a是追加,在第二次写入txt文本的时候不会删除原来的写入的内容,而w虽然也是写入,但是会删除原来写入的内容,如果没有文本w还会自动生成文本。file.write(username+’,

    2022年10月2日
  • 阿里用什么替代了dubbo_阿里面试必问题:Spring+MyBaits+微服务+Dubbo+Kakfa带解析

    前言很多同学在群里和我抱怨,面试的时候准备的不充分,导致面试结果不理想,也有很多同学苦于没有一份合适的面试指导。针对这些的同学,在这分享总结的Java面试的高频面试题(包括了Java集合,JVM,并发与多线程,Spring,MyBaits,微服务,Dubbo,Kakfa,中间件,Redis,数据库,设计模式等),进行了整理,免费分享给大家,希望大家能带着这些问题和答案解析,能让你进行有针对性行的学…

    2022年4月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号