mysql之MHA

MHA(master hight availability)

1、MHA:基于主库的高可用环境,主从复制(半同步复制),故障切换。

2、基于主从的架构,最少一主两从

3、MHA:解决mysql的单点故障问题,一旦主库崩溃,MHA可以在0-30秒内自动完成故障切换

MHA的工作原理

1、MHA使用的是半同步复制,只要有一台从服务器写入数据,就会自动提交给客户端

2、如果master崩溃,slave会从主的二进制日志保存文件

3、 slave会识别最新更新的日志,插一部分日志同步到slave,提升一个新的slave作为master,其他的slave继续和新的master同步

实验过程

1、MHA架构搭建

(1)设备准备

①MHA master
②master
③slave1
④slave2
⑤node组件:
需要部署在所有服务器上,manage组件依赖node组件,node组件监控mysql的状态
node组件靠ssh来进行通信

2、模拟故障

3、故障恢复

(四)MHA架构搭建

1、修改主机名,ping主机名

2、配置主从复制

1修改Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf
2)在 Master、Slave1、Slave2 节点上都创建两个软链接

3所有数据库节点进行mysql授权

mysql之MHA_第1张图片

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

mysql之MHA_第2张图片

5在 Slave1、Slave2 节点执行同步操作

mysql之MHA_第3张图片

6)两个从库必须设置为只读模式

mysql之MHA_第4张图片

(7)测试

mysql之MHA_第5张图片

3、安装MHA

1所有服务器都安装MHA的依赖环境,必须安装epel源

安装依赖环境:

mysql之MHA_第6张图片

2部署MHA(先安装node组件,再安装MHA)
每台服务器都安装node组件:

mysql之MHA_第7张图片

3)在MHA manager节点上安装manager组件

mysql之MHA_第8张图片

补充:

mysql之MHA_第9张图片

master组件

masterha_check_ssh

检查MHA的SSH的配置状况

masterha_check_repl

检查mysql的复制情况

masterha_manager

启动manager的脚本

masterha_check_status

检测MHA的运行状态

masterha_master_monitor

检测matser主机的情况,maters是否宕机。

masterha_master_switch

控制故障转移

masterha_conf_host

添加或者删除配置的server信息

masterha_stop

停止MAH脚本

node组件

save_binary_logs

保存和复制mater的二进制日志

apply_diff_relay_logs

识别二进制日志当中的差异事件,然后发送给其他的slvae

filter_mysqlbinlog

去除不必要的回滚(MHA已经不用了)

purge_relay_logs

同步之后清楚中继日志 (不会阻塞sql的线程)

4node依赖ssh通信,在所有服务器上配置免密登录
①在manager节点上配置到所有数据库节点的免密登录

mysql之MHA_第10张图片

mysql之MHA_第11张图片

mysql之MHA_第12张图片

mysql之MHA_第13张图片

②在slave1上配置到数据库节点master和slave2的免密登录

ssh-keygen -t rsa

ssh-copy-id 20.0.0.21

ssh-copy-id 20.0.0.23

③在slave2上配置到数据库节点master和slave1的免密登录

ssh-keygen -t rsa

ssh-copy-id 20.0.0.21

ssh-copy-id 20.0.0.22

④在master上配置到数据库节点 slave1 和 slave2 的无密码认证

ssh-keygen -t rsa

ssh-copy-id 20.0.0.22

ssh-copy-id 20.0.0.23

(5)在manager节点上配置 MHA

mysql之MHA_第14张图片

master_ip_failover

自动切换时 VIP 管理的脚本

master_ip_online_change

在线切换时 vip 的管理

power_manager

故障发生后关闭主机的脚本

send_report

因故障切换后发送报警的脚本

①修改内容如下:(删除原有内容,直接复制并修改vip相关参数)

mysql之MHA_第15张图片

②创建MHA的软件目录

mysql之MHA_第16张图片

(6)第一次配置需要在Master节点上手动开启虚拟IP

(7)manage节点上进行测试
①测试ssh通信是否正常

mysql之MHA_第17张图片

②检测整个MHA主从连接是否正常

mysql之MHA_第18张图片

mysql之MHA_第19张图片

(8)启动MHA

mysql之MHA_第20张图片

--remove_dead_master_conf

表示发生主从切换,老的主库的ip地址会从文件中删除

/var/log/masterha/app1/manager.log

MHA的管理日志

--ignore_last_failover

表示只要发生宕机就会切换,忽略时间间隔(默认配置:若MHA检测到连续发生宕机,而且宕机的时间间隔不足8小时,不会进行自动切换)

mysql之MHA_第21张图片

(五)模拟故障

1、关闭主库服务器

mysql之MHA_第22张图片

mysql之MHA_第23张图片

mysql之MHA_第24张图片

(六)故障恢复

1、编辑主库的my.cnf(将原主变为从)

mysql之MHA_第25张图片

2、编辑从库的my.cnf(将原从变为主)

mysql之MHA_第26张图片

3、关闭manager服务

4、修改manager的app1.cnf配置文件

mysql之MHA_第27张图片

5、重启主从mysql服务和manager服务

6、进入主从数据库,赋权

mysql之MHA_第28张图片

mysql之MHA_第29张图片

7、测试

mysql之MHA_第30张图片

你可能感兴趣的:(mysql,数据库)