MHA高可用配置及故障切换

本文介绍了MySQL MHA(Master High Availability)的高可用配置,包括其组成、优势和现状。通过案例详细展示了如何配置MHA环境,实现MySQL主从复制,以及在模拟主库故障时的自动切换。通过MHA,可以在30秒内完成数据库故障切换,确保数据一致性,并且支持与半同步复制结合以减少数据丢失风险。
摘要由CSDN通过智能技术生成

一、概述

目前 MySQL 已经成为市场主流数据库的一种,考虑到业务的重要性,MySQL 数据库单点问题已成为企业网站架构中最大的隐患,随着技术的发展,MHA 的出现就是解决 MySQL 单点的问题,另外随着企业数据量越来越庞大,数据库的压力又成为企业的另一个瓶颈,MySQL 的多主多从的架构的出现可以减轻 MySQL 的压力。本章将主要介绍 MHA 的搭建和模拟 MySQL 故障自动切换的过程,介绍搭建 MySQL 多主多从的详细过程。

1、什么是MHA

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

2、MHA的组成

该软件由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,MHA Manager 会定时探测集群中的 master 节点,当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。

3、MHA优势

在 MHA 自动故障切换过程中,MHA 试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过 ssh 访问,MHA 没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用 MySQL 5.5 的半同步复制,可以大大降低数据丢失的风险。MHA 可以与半同步复制结合起来。如果只有一个 slave 已经收到了最新的二进制日志,MHA 可以将最新的二进制日志应用于其他所有的 slave 服务器上,因此可以保证所有节点的数据一致性。

4、MHA现状

目前 MHA 主要支持一主多从的架构,要搭建 MHA 要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当 master,一台充当备用 master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝 TMHA 已经支持一主一从。有兴趣的可以试试。

二、案例环境

MySQL MHA 高可用案例环境

|主机 |操作系统 |

主机 操作系统 主机名/IP地址 角色
服务器 CentOS7.3(64 位) MHA-manager/192.168.11.12 管理节点,安装 manager 组件
服务器 CentOS7.3(64 位) local-1/192.168.11.11 Master 节点,安装 node 组件
服务器 CentOS7.3(64 位) local-2/192.168.11.101 Slave 节点,安装 node 组件
服务器 CentOS7.3(64 位) local-3/192.168.11.102 Slave 节点,安装 node 组件
MHA 架构如图

图中MHA可以同时监控并管理多个 MySQL 复制组,本案例只实验其中的一个复制组即可

2. 案例需求

本案例要求通过 MHA 监控 MySQL 数据库在故障时进行自动切换,不影响业务。

3. 案例实现思路

安装 MySQL 数据库
配置 MySQL 一主两从
安装 MHA 软件
配置无密码认证
配置 MySQL MHA 高可用
模拟 master 故障切换

三、案例实施

安装 MySQL 数据库略

3.1 mysql主从复制环境配置

[root@localhost ~]# service mysqld stop 停掉MySQL
[root@localhost ~]# hostnamectl set-hostname local-[1.2.3.4] 先分别修改主机名便于识别
查看时间是否一样,不一样同步阿里云时间 ntpdate time1.aliyun.com
[root@local-1 ~]# ssh-keygen 随便一台生成密钥对
[root@local-1 ~]# cp .ssh/id_rsa.pub .ssh/authorized_keys 复制密钥并改名成公钥可识别名称
[root@local-1 ~]# scp -r .ssh/ 192.168.11.101:/root 递归复制密钥目录到101的root下,也要赋值给102、12
[root@local-1 ~]# echo -e “192.168.11.11 local-1\n192.168.11.101 local-2\n192.168.11.102 local-3\n192.168.11.12 local-4” >> /etc/hosts 做本地域名解析
[root@local-1 ~]# scp /etc/hosts local-4:/etc 域名解析文件复制给11.12,也要复制给其它三台、做了本地域名解析所以可以直接local-1234
[root@local-1 ~]# vim /etc/my.cnf 修改文件1.2.3都要修改出来server_id不一样其它都一样

[mysqld]				#下面内容插入
server_id = 11			#每一个文件的server_id都不能一样
log_bin = mysql-bin
gtid_mode = on
enforce_gtid_consistency = 1 
log_slave_updates = 1 
skip-name-resolve         #禁用dns解析

[root@localhost ~]# service mysqld start 启动所以机的MySQL
mysql> grant replication slave on . to ‘repl’@’%’ identified by ‘123456’;
在11.11和11.101(master和master损坏后接任的slave)上创建 用户
mysql> grant all on . to ‘root’@’%’ identified by ‘123456’;
在11.11和11.101上允许root远程登录
mysql> show master status;
在11.11上查看主
mysql> change master to master_host=‘192.168.11.11’,master_user=‘repl’,master_password=‘123456’,master_log_file=‘mysql-bin.000002’,master_log_pos=640;
在11.101和11.102上user刚创建的、file和pos11.11查看到的
mysql> start slave;
在11.101和11.102上启动
mysql> show slave status\G
在11.101和11.102上查看状态是否两个yes
mysql> set global read_only=1;
在11.101和11.102上设置只读
主从配置完毕

3.2 安装 MHA 软件

所有服务器上都安装 MHA 依赖的环境,首先安装 epel 源。

[root@MHA-manager ~]# yum install -y epel-release
[root@MHA-manager~]# yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN

MHA 软件包对于每个操作系统版本不一样,这里 CentOS7.3 必须选择 0.57 版本,在所有服务器上必须先安装 node组件,最后在 MHA-manager 节点上安装 manager 组件,因为 manager 依赖 node 组件,下面都是在local-1 上操作演示安装 node 组件。
[root@local-1 ~]# tar zxvf mha4mysql-node-0.57.tar.gz
[root@local-1 ~]# cd mha4mysql-node-0.57
[root@local-1 mha4mysql-node-0.57]# perl Makefile.PL
[root@local-1 mha4mysql-node-0.57]# make && make install

上面有标注的需要在所有机上都做一遍

在 MHA-manager(11.12)上安装 manager 组件
[root@local-4 ~]# tar zxvf mha4MHA-manager-0.57.tar.gz
[root@local-4 ~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值