MySQL MHA高可用集群部署及故障切换

目录

一、MHA

1.1.MHA概念

1.2.MHA 的组成

二、搭建MySQL+MHA

2.1 实验思路

2.2 实验准备

2.3.服务搭建 

所有服务器,关闭系统防火墙和安全机制 

修改 master(192.168.190.103)、Slave1(192.168.190.104)、Slave2(192.168.190.105) 节点的主机名  

修改三台MySQL服务器的主配置文件/etc/my.cnf  

配置MySQL一主两从 

在Master节点查看二进制文件和同步点 

Slave1、Slave2 节点设置为只读模式  

2.4.安装 MHA 软件 

在 MHA manager 节点上安装 manager 组件

在所有服务器上配置无密码认证 

在 manager 节点上配置 MHA 

在Master服务器上手动开启vip 

在 manager 节点上测试 ssh 无密码认证,如果正常最后会输出 successfully。 

 ​编辑

在 manager 节点上测试 mysql 主从连接情况,最后出现 MySQL Replication Health is OK 字样说明正常。  

2.5.故障切换备选主库的算法 

三、总结

3.1.MHA

3.1.1 作用

3.1.2 核心部分

3.1.3 MHA需要配置的文件

3.1.4 故障切换MHA会做哪些动作

3.2.MHA故障问题


一、MHA

1.1.MHA概念

MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。

MHA 的出现就是解决MySQL 单点的问题。

MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。

MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

1.2.MHA 的组成

MHA Node(数据节点)

MHA Node 运行在每台 MySQL 服务器上。

MHA Manager(管理节点)

MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。

1.3.MHA 的特点

自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。
使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。
目前MHA支持一主多从架构,最少三台服务器,即一主两从

二、搭建MySQL+MHA

2.1 实验思路

MHA架构:①数据库安装 ②一主两从 ③MHA搭建

故障模拟:①主库失效 ②备选主库成为主库 ③原故障主库恢复重新加入到MHA成为从库

2.2 实验准备

节点服务器 系统 主机名 IP地址 安装工具及服务
MHA manager 服务器 CentOS7.4(64 位) manager 192.168.190.101 MHA node 和 manager 组件
Master 服务器 CentOS7.4(64 位) mysql1 192.168.190.103 MHA node 组件
Slave1 服务器 CentOS7.4(64 位) mysql2 192.168.190.104 MHA node 组件
Slave2 服务器 CentOS7.4(64 位) mysql3 192.168.190.105 MHA node 组件

2.3.服务搭建 

所有服务器,关闭系统防火墙和安全机制 

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

修改 master(192.168.190.103)、Slave1(192.168.190.104)、Slave2(192.168.190.105) 节点的主机名  

hostnamectl set-hostname master
 
hostnamectl set-hostname slave1
 
hostnamectl set-hostname slave2

修改三台MySQL服务器的主配置文件/etc/my.cnf  

master(192.168.190.103)

vim /etc/my.cnf
[mysqld]
server-id = 20
log_bin = master-bin
log-slave-updates = true
 
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

 Slave1(192.168.190.104)、Slave2(192.168.190.105)

vim /etc/my.cnf
server-id = 30  
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
 
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
vim /etc/my.cnf  
server-id = 40  
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
 
systemctl restart mysqld
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

配置MySQL一主两从 

grant replication slave on *.* to 'myslave'@'192.168.190.%' identified by '123';
grant all privileges on *.* to 'mha'@'192.168.190.%' identified by 'manager';
grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';

三个一样配置

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值