MHA实现mysql高可用性

一、 MHA:Master High Availability

    对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
官网:https://code.google.com/archive/p/mysql-master-ha/

MHA集群架构

1.MHA工作原理:

(1) 从宕机崩溃的master保存二进制日志事件(binlog events)
(2) 识别含有最新更新的slave
(3) 应用差异的中继日志(relay log)到其他的slave
(4) 应用从master保存的二进制日志事件(binlog events)
(5) 提升一个slave为新的master
(6) 使其他的slave连接新的master进行复制

2.MHA软件由两部分组成,Manager工具包和Node工具包

(1)Manager工具包主要包括以下几个工具:
masterha_check_ssh      检查MHA的SSH配置状况
masterha_check_repl         检查MySQL复制状况
masterha_manger              启动MHA
masterha_check_status       检测当前MHA运行状态
masterha_master_monitor     检测master是否宕机
masterha_master_switch  故障转移(自动或手动)
masterha_conf_host      添加或删除配置的server信息
(2)Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs       保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog     去除不必要的ROLLBACK事件(MHA已不再使用此工具)
purge_relay_logs       清除中继日志(不会阻塞SQL线程)
(可选:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL 5.5的半同步复制)

3.自定义扩展:

secondary_check_script:         通过多条网络路由检测master的可用性
master_ip_ailover_script:       更新Application使用的masterip
shutdown_script:                强制关闭master节点
report_script:                  发送报告
init_conf_load_script:              加载初始配置参数
master_ip_online_change_script:更新master节点ip地址

4.配置文件:

global配置,为各application提供默认配置
application配置:为每个主从复制集群

5.实现MHA

(1)在管理节点上安装两个包:
mha4mysql-manager (须开启epel源,必要时yum install mha4*)
mha4mysql-node
(2)在被管理节点安装:
mha4mysql-node

6.在管理节点建立配置文件

vim /etc/mastermha/app1.cnf
[server default]
user=mhauser
password=123456
master_binlog_dir=/data/bin/
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=repluser
repl_password=123456
ping_interval=1

[server1]
hostname=192.168.30.16
candidate_master=1
[server2]
hostname=192.168.30.66
candidate_master=1
[server3]
hostname=192.168.30.6
candidate_master=1

7.实现Master

vim /etc/my.cnf
[mysqld]
log-bin=/data/bin/mysql-bin
server_id=1
skip_name_resolve=1

mysql>show master logs
mysql>grant replication slave on *.* to [email protected]‘192.168.30.%‘ identified by ‘123456‘;
mysql>grant all on *.* to [email protected]‘192.168.30.%’identified by‘123456‘;

8.实现slave

vim /etc/my.cnf
[mysqld]
server_id=2     #不同节点此值各不相同
log-bin=/data/bin/mysql-bin
read_only
relay_log_purge=0
skip_name_resolve=1
mysql>CHANGE MASTER TO
MASTER_HOST=‘MASTER_IP‘,
MASTER_USER=‘repluser‘,
MASTER_PASSWORD=‘123456‘,
MASTER_LOG_FILE=‘mariadb-bin.000001‘,
MASTER_LOG_POS=245;

9.在所有节点实现相互之间ssh key验证

(1)MHA验证和启动
masterha_check_ssh --conf=/etc/mastermha/app1.cnf
masterha_check_repl --conf=/etc/mastermha/app1.cnf
masterha_manager --conf=/etc/mastermha/app1.cnf  //此命令执行后会默认在前台执行,除非主节点出现问题导致自动提升从节点做新的主节点
(2)模拟主节点宕机:
systemctl stop mariadb
(3)排错日志
cat /data/mastermha/app1/manager.log | tail  //可以查看哪个从节点被提升为新的主节点

原文地址:https://blog.51cto.com/14230230/2391303

时间: 2024-08-30 05:32:57

MHA实现mysql高可用性的相关文章

MySQL高可用性之MHA

防伪码:学海无涯苦作舟! MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA N

MySQL数据库之高可用MHA简介 MySQL学习

MHA目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成. ? 自动故

构建MHA实现MySQL高可用集群架构

一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA里有两个角色一个是MHA Node(数

基于 MHA 的MySQL高可用-CentOS7(理论)

MHA 简介 MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案, 它由日本 DeNA 公司的 youshimaton 员工(现就职于 Facebook 公司)开发,是一套优秀的作 为 MySQL 高可用性环境下故障切换和主从角色提升的高可用软件.在 MySQL 故障切换过程 中,MHA 能做到在 0~30 秒之内自动完成数据库的主从故障切换操作,并且在进行故障切换 的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的

keepalived结合MHA实现mysql高可用

本例结合本博另一篇文章 MHA-大杀器实现MYSQL单主宕机时,VIP漂移实现高可用,环境请参考上一篇文章 本例使用keepalived-1.1.20.tar.gz版本 [[email protected] keepalived-1.1.20]# ./configure --sysconf=/etc/ #此项表示设置keepalived的根目录 如果编译报错"configure: error: Popt libraries is required" 则yum -y install po

MySQL主主复制+LVS+Keepalived实现MySQL高可用性

MySQL主主复制+LVS+Keepalived实现MySQL高可用性 MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换. 这篇文章下面要介绍如何通过LVS+Keepalived的方式来是实现MySQL的高可用性,同时解决以上问题. Keepalived和L

使用MHA对mysql主从架构中的主节点做高可用

MHA:Master HA(主从结构的高可用方案)只是实现了对主节点高可用,它是建构在mysql主从复制结构之上的,也就是说需要事先把mysq配置成传统的复制集群. MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点称为新的master,在此期间,MHA会通过其它从节点获取额外信息来避免一致性方面的问题.MHA还提供了master节点在线切换的功能,即按需切换master/salve节点. MHA服务有两种角色,MHA Manager(管理节点)和MHA Node(数据

MySQL 高可用性之keepalived+mysql双主

生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即两台MySQL服务器如果其中有一台MySQL服务器挂掉后,另外一台能立马接替其进行工作. MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双主,MHA和PXC. 这里将主要介绍了利用 keepalived 实现 MySQL数据库的高可用. Keepalived+mysql双主来实现MySQL-HA,我们必须保

MySQL 高可用性——keepalived+mysql双主(有详细步骤和全部配置项解释)

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即两台MySQL服务器如果其中有一台MySQL服务器挂掉后,另外一台能立马接替其进行工作. MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双主,