MHA故障转移流程:1、从出现故障的主节点A拉取binlog日志到B、C节点。2、识别有最近Relay_Master_Log_File,Exec_Master_Log_Pos 更新的slave节点。假设是B3、应用差异的中继日志(relay log)到其他slave节点。如C4、提升slave (B)为新的主节点。5、其他的节点(C)连接到新的主节点。

MHA 切换完了之后并没有其他的操作了。如服务发现,重新注册。但是MHA提供了脚本接口。可以手动指定切换完了MHA执行指定的脚本。如注册虚拟ip到新的主节点。或者调用接口注册新的服务域名。发告警邮件 等。

mha的架构如下:

MHA插件 Manager和Node的说明:

Manager 插件是管理节点,主要用于监控Mysql主从架构的正常状态。

有以下命令集:

masterha_check_status  检查 masterha_manager状态

masterha_check_ssh   检查ssh是否正常

masterha_check_repl   检查复制链是否正常

masterha_master_monitor

masterha_manager   启动mha管理进程(发现故障时切换)

masterha_conf_host

masterha_master_switch

masterha_stop

master_ip_failover

masterha_switch_domain

master_ip_online_change

masterha_secondary_check

Node 节点在每个mysql实例上存在,供Manager 健康检测,故障转移时调用。

有如下命令集:

apply_diff_relay_logs

filter_mysqlbinlog

purge_relay_logs

save_binary_logs

注意:Node节点如果是编译安装。会在/usr/local/bin 目录下存在以上命令。如果是直接用编译完的二进制包解压安装。必须把Node的4个命令 拷贝到 usr/local/bin目录下。否则找不到命令。

安装MHA:

【环境准备】

mha的安装可以到官网下载进行编译安装

(urlhttps://code.google.com/p/mysql-master-ha/ )

或者到已经云盘下载

(链接:https://pan.baidu.com/s/11fh_wolEYHg-VhaJDwYglA 密码:3zie)

以下按照云盘下载的包为准,介绍安装流程:

tar -xcf  mha56.tar.gz -C usr/local

解压后目录:auth  bin  conf  MHA  rpm  workdir

加压后rpm目录存在了mha所依赖的所有rpm包。也可以eperl 源yum安装。yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl-File-Which perl-Digest-SHA1 perl-Crypt-SSLeay perl-libwww-perl perl-TermReadKey -y

MHA 目录存在了mha整套perl脚本,拷贝到对应目录即可:cp -rp   MHA   usr/local/share/perl5/chmod rp 444   usr/local/share/perl5/MHA

【开始安装】

1、配置文件

conf 目录存放配置文件的模板(这里只指定两个节点A>B。可以指定3个节点,或更多。)##定义每套cluster端口为[portnum]

## mkdir -p usr/local/mha56/workdir ; chown mha:mysql usr/local/mha56/workdir

[server default]

client_bindir=/usr/local/mysql/bin/

manager_workdir=/usr/local/mha56/workdir

remote_workdir=/usr/local/mha56/workdir

manager_log=/usr/local/mha56/workdir/portnum.log

master_binlog_dir=binary_log_dir

#手动切换脚本

master_ip_online_change_script= usr/local/mha56/bin/master_ip_online_change

report_script=/usr/local/mha56/bin/send_report

#自动切换时vip管理

#master_ip_failover_script=/usr/local/mha56/bin/master_ip_failover

init_conf_load_script=/usr/local/mha56/auth/mha_auth

user=mymha

#password=

repl_user=myrepl

#repl_password=

ssh_port=10000

ssh_user=mha

ssh_options="-i home/mha/.ssh/id_rsa_mha.key"

ping_interval=3

max_ping_errors=10

check_repl_filter=0

[server1]

hostname=master_server_ip

port=portnum

[server2]

candidate_master=1

check_repl_delay=0

hostname=slave_server_ip

port=portnum

mha 需要开通ssh。这里用指定公钥的形式拷贝公钥到每台mha manager 和node机器下。ssh_options="-i /home/mha/.ssh/id_rsa_mha.key" (5.3开始支持)。

2、添加账号

系统账号

为了安全,不用root账号做ssh。

假设这里mysqld进程运行用户是 mysql 所在group mysql

useradd  -G mysql mha

添加完账号,把mha目录赋权给mha账号。

chown  -R mha:mysql /usr/local/mha56

mysql账号

mha的监控与故障切换(最小可用权限)

GRANT RELOAD, SUPER, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'mha'@'xxxx';

主从复制账号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'mha'@'xxxx';

把这2个mysql账号存放在单独文件

init_conf_load_script=/usr/local/mha56/auth/mha_auth

chmod +x /usr/local/mha56/auth/mha_auth

3、环境监测

/usr/local/mha56/bin/masterha_check_repl  conf=/usr/local/mha56/conf/mha.conf

最终输出:MySQL Replication Health is OK.  为正常。

4、测试手动切换(可不做)

masterha_master_switch  --master_state=alive --conf=/usr/local/mha56/conf/mha.conf   --orig_master_is_new_slave

5、启动mha管理进程

/usr/local/mha56/bin/masterha_manager  --conf=/usr/local/mha56/conf/mha.conf    --ignore_last_failover   &

6、检查mha运行状况

/usr/local/mha56/bin/masterha_check_status  --conf=/usr/local/mha56/conf/mha.conf

【故障转移】

事实上mha只负责监控master节点,在master节点出现故障时,把主节点转移到其中一个从节点,从成为新的的主节点。其余从节点接入到新的主节点。mha切换完毕后。应用连接到原来的master会出现错误的。这时需要把指向mysql主节点的连接转移到新的主节点。

可用以下几种方式:

1、用vip的方式。停止旧节点的vip,在新的主节点注册vip。(keepalived)。

2、使用域名,用consul 服务发现。把域名指向新的ip。

mysql故障转移,MySQL之MHA故障转移相关推荐

  1. mysql 失效转移_MySQL基于MHA的FailOver过程

    大家好,我是anyux.本文介绍MySQL基于MHA的FailOver过程. MHA FailOver过程详解 什么是FailOver 故障转移 主库宕机,一直到业务恢复正常的处理过程 如何处理Fai ...

  2. centos把mysql移到数据盘_Centos转移Mysql的数据位置

    首先,假设我们需要把Mysql的数据存储位置转到到  /data 下面 第一步: service mysqld stop 第二步: ### 备份原来的 mysql cp -a /var/lib/mys ...

  3. mysql case break_按月转移日志表中日志时,mysql总是报‘MySQL server has gone away’这样的错!...

    我有一段清除数据库日志的脚用来按月清除数据库中的日志文件然后再把它们按月分表存储,脚本平时运行正常但是每到月初一定会报一次'MySQL server has gone away'这样的错,不知道为什么 ...

  4. mysql自动增长id 溢出_MySQL表自增id溢出的故障复盘怎么解决 MySQL表自增id溢出的故障复盘解决方法...

    MySQL表自增id溢出的故障复盘如何解决?本篇文章小编给大家分享一下MySQL表自增id溢出的故障复盘解决方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题:MyS ...

  5. 微软故障转移群集服务器要求,故障转移群集概述

    故障转移群集概述 08/03/2016 本文内容 适用对象:Windows Server 2012 R2, Windows Server 2012 本主题提供对 Windows Server 2012 ...

  6. MySQL:由USE DB堵塞故障引发的思考

    遇到故障,我们往往想的是如何解决这个故障,而不是从故障的根本去思考出现这个故障的原因?这样的结果,只能使我们得到了鱼,失去了渔.今天,我们就来分享一个由USE DB堵塞故障引发的思考案例. 故障描述 ...

  7. mysql binlog生成异常_mysql binlog故障演练

    mysql备份恢复 mysqldump备份 企业故障恢复案例: 正在运行的网站系统 mysql数据库 数据量25G,日业务量10-15M 备份策略: 每天晚上23点通过计划任务调用mysqldump执 ...

  8. linux下转移mysql目录

    linux下转移mysql目录 先停止mysql,备份以防出问题 第一种是mv原目录到新目录,设置相同权限,my.cnf中指定datadir 第二种是mv原目录到新目录,设置相同权限,然后ln目录到原 ...

  9. linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

最新文章

  1. js实现Form表单submit提交截获数据(各浏览器通用)
  2. 在angular中一个页面滚动后,打开新页面不在最顶部的解决办法
  3. mvc4 ajax url参数,MVC4.0中Ajax通过a标签向后台Action传递参数问题?
  4. 微信小程序实现视频功能(二):视频列表与下载
  5. JAVA学习——GUI鼠标画图交互练习
  6. 嵌入式--Flash操作中的标准SPI,Dual SPI,Quad SPI
  7. react-contexify 右键菜单动态生成
  8. NYOJ - 找点【贪心】
  9. awvs安装及问题解决
  10. php字体大小_PHP中改变网页文字大小代码
  11. 去年190家共享经济平台融资1159亿 共享汽车融资最多
  12. 3D点云目标检测:MPPNet网络训练waymo数据集
  13. Win11如何更改默认下载路径?Win11更改默认下载路径的方法
  14. 为什么钢结构行业ERP和MES系统缺一不可?
  15. Linux解压压缩命令tar
  16. 小程序公告php实现,小程序两种滚动公告栏的实现方法
  17. 科技H5 | 打破常规H5,QQ-AR开创交互玩法新纪元
  18. 32 php 手摇泵_手摇泵基本原理及使用教程
  19. Unity3d AndroidJNI两篇应用示例。羽化的文章。
  20. 华大HC32-(05)-定时器输入捕获

热门文章

  1. java工厂模式demo
  2. mongodb E11000 duplicate key error collection: index: _id_ dup key
  3. 2018年6月1号(线段树(1))
  4. 理想的正方形 HAOI2007(二维RMQ)
  5. github入门到上传本地项目
  6. vidalia 更换浏览器代理
  7. Linux telnet命令
  8. Java垃圾回收jconsole分析
  9. LNMP一键自动安装脚本
  10. 《深入学习VMware vSphere 6》——1.5 主流服务器的RAID配置