加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL高可用方案MHA如何布局

发布时间:2021-12-24 18:14:41 所属栏目:MySql教程 来源:互联网
导读:这篇文章将为大家详细讲解有关MySQL高可用方案MHA如何部署,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切
这篇文章将为大家详细讲解有关MySQL高可用方案MHA如何部署,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
 
MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一致性。
 
它由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。其中,MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave上。MHA Node则运行在每个mysql节点上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它自动将最新数据的slave提升为master,然后将其它所有的slave指向新的master。
 
在MHA自动故障切换过程中,MHA试图保存master的二进制日志,从而最大程度地保证数据不丢失,当这并不总是可行的,譬如,主服务器硬件故障或无法通过ssh访问,MHA就没法保存二进制日志,这样就只进行了故障转移但丢失了最新数据。可结合MySQL 5.5中推出的半同步复制来降低数据丢失的风险。
 
MHA软件由两部分组成:Manager工具包和Node工具包,具体说明如下:
 
MHA Manager:
 
1. masterha_check_ssh:检查MHA的SSH配置状况
 
2. masterha_check_repl:检查MySQL的复制状况
 
3. masterha_manager:启动MHA
 
4. masterha_check_status:检测当前MHA运行状态
 
5. masterha_master_monitor:检测master是否宕机
 
6. masterha_master_switch:控制故障转移(自动或手动)
 
7. masterha_conf_host:添加或删除配置的server信息
 
8. masterha_stop:关闭MHA
 
MHA Node:
 
save_binary_logs:保存或复制master的二进制日志
 
apply_diff_relay_logs:识别差异的relay log并将差异的event应用到其它slave中
 
filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
 
purge_relay_logs:消除中继日志(不会堵塞SQL线程)
 
另有如下几个脚本需自定义:
 
1. master_ip_failover:管理VIP
 
2. master_ip_online_change:
 
3. masterha_secondary_check:当MHA manager检测到master不可用时,通过masterha_secondary_check脚本来进一步确认,减低误切的风险。
 
4. send_report:当发生故障切换时,可通过send_report脚本发送告警信息。
 
集群信息
 
角色                             IP地址                 ServerID      类型
 
Master                         192.168.244.10   1                 写入
 
Candicate master          192.168.244.20   2                 读
 
Slave                           192.168.244.30   3                 读
 
Monitor host                 192.168.244.40                      监控集群组
 
注:操作系统均为RHEL 6.7
 
其中,master对外提供写服务,备选master提供读服务,slave也提供相关的读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master
 
一、在所有节点上安装MHA node
 
    1. 在MySQL服务器上安装MHA node所需的perl模块(DBD:mysql)
 
      # yum install perl-DBD-MySQL -y
 
    2. 在所有的节点上安装mha node
 
      下载地址为:https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2
 
      由于该网址在国内被墙,相关文件下载后,放到了个人网盘中,http://pan.baidu.com/s/1boS31vT,有需要的童鞋可自行下载。
 
      # tar xvf mha4mysql-node-0.56.tar.gz
 
      # cd mha4mysql-node-0.56
 
      # perl Makefile.PL  
 
MySQL高可用方案MHA如何部署MySQL高可用方案MHA如何部署
 
*** Module::AutoInstall version 1.03*** Checking for Perl dependencies...
[Core Features]- DBI        ...loaded. (1.609)- DBD::mysql ...loaded. (4.013)*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Writing Makefile for mha4mysql::node
View Code
 
     # make
 
     # make install
 
    至此,MHA node节点安装完毕,会在/usr/local/bin下生成以下脚本文件
 
# ll /usr/local/bin/total 44-r-xr-xr-x 1 root root 16367 Jul 20 07:00 apply_diff_relay_logs-r-xr-xr-x 1 root root  4807 Jul 20 07:00 filter_mysqlbinlog-r-xr-xr-x 1 root root  8261 Jul 20 07:00 purge_relay_logs-r-xr-xr-x 1 root root  7525 Jul 20 07:00 save_binary_logs
二、在Monitor host节点上部署MHA Manager
 
     # tar xvf mha4mysql-manager-0.56.tar.gz
 
     # cd mha4mysql-manager-0.56
 
     # perl Makefile.PL
 
MySQL高可用方案MHA如何部署MySQL高可用方案MHA如何部署
 
*** Module::AutoInstall version 1.03*** Checking for Perl dependencies...
[Core Features]- DBI                   ...loaded. (1.609)- DBD::mysql            ...loaded. (4.013)- Time::HiRes           ...missing.- Config::Tiny          ...missing.- Log::Dispatch         ...missing.- Parallel::ForkManager ...missing.- MHA::NodeConst        ...missing.==> Auto-install the 5 mandatory module(s) from CPAN? [y] y*** Dependencies will be installed the next time you type 'make'.*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Warning: prerequisite Config::Tiny 0 not found.
Warning: prerequisite Log::Dispatch 0 not found.
Warning: prerequisite MHA::NodeConst 0 not found.
Warning: prerequisite Parallel::ForkManager 0 not found.
Warning: prerequisite Time::HiRes 0 not found.
Writing Makefile for mha4mysql::manager

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读