MHA高可用架构
MHA可以解决的问题
1 | 1. 监控所有节点状态 |
MHA原理
1 | 1. 原版MHA架构要求至少三个节点才能实现 |
异步复制与半同步复制
1 | (1)mysql默认是异步复制(即只同步差异部分) |
MHA搭建过程
环境
1 | 1、准备环境: 准备3台机器,安装好MySQL5.6.36 |
1 | 2、配置文件规划 |
1 | 3、分别初始化数据 |
1 | 4、主节点-创建复制用户(51作为主节点,52、53为从) |
1 | 5、52/53从库开启复制 |
1 | 关闭relaylog自动删除 |
注:MySQL使用GTID的优势
1 | (1) group commit |
部署MHA
- 安装mha node节点
1 | 各节点安装node软件包及依赖 |
创建mha管理用户
1 | 主库中创建mha管理用户(从库会自动同步) |
配置软连接
1 | ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog |
- 部署manger节点(生产环境为独立服务器)
1 | wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo |
配置节点SSH互信
1 | 配置互信(所有节点) |
1 | 检查主从状态 |
故障处理
1 | 故障处理: |
在manager节点启动mha
1 | nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 & |
MHA故障模拟及修复
1 | 1.模拟主库宕机,tailf命令查看mha机器的manager log信息 |
MHA高级功能
VIP高可用实现
1 | (1)人为指定一个VIP地址(不能被占用) |
MHA-VIP脚本:master_ip_failover.sh
1 | #!/usr/bin/env perl |
VIP实现步骤
1 | VIP(Manager节点) |
Binlog Server(新配置一个节点)
1 | (1)准备一台新的mysql实例(53),必须开启GTID |
发送邮件
1 | 3.send_report |
MHA架构不足
1 | MHA: 浪费机器 |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2018/02/03/MySQL-MHA高可用架构与实现/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!