MHA高可用
第1章 主从复制架构演变介绍
1.1 基本结构
1 | (1)一主一从 |
1.2 高级应用架构演变
1.2.1 高性能架构
1 | 读写分离架构(读性能较高) |
1.2.2 高可用架构
1 | (1)单活:MMM架构——mysql-mmm(google) |
第2章 高可用MHA
2.1 工作原理
1 | 主库宕机处理过程 |
2.2 架构介绍
1 | 1主2从,master:db01 slave:db02 db03 ): |
2.3 MHA软件构成
1 | Manager工具包主要包括以下几个工具: |
2.4 MHA环境搭建
2.4.1 规划
1 | 主库: 51 node |
2.4.2 准备环境(1主2从GTID)
清理环境
1 | pkill mysqld |
准备配置文件
1 | 主库db01: |
初始化数据
1 | mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data |
启动数据库
1 | /etc/init.d/mysqld start |
构建主从
1 | master:51 slave:52,53 |
2.4.3 配置关键程序软连接
1 | ln -s /data/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog |
2.4.4 配置各节点互信
1 | db01: |
2.4.5 安装软件
下载MHA软件
1 | mha官网:https://code.google.com/archive/p/mysql-master-ha/ |
所有节点安装Node软件依赖包
1 | yum -y install perl-DBD-MySQL |
在db01主库中创建mha需要的用户
1 | grant all privileges on *.* to mha@'10.0.1.%' identified by 'mha'; |
Manager软件安装(db03)
1 | # yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes |
2.4.6 配置文件准备(db03)
1 | #创建配置文件目录 |
2.4.7 状态检查
1 | #互信检查 |
2.4.8 开启MHA(db03):
1 | [root@db03 ~]# 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 & |
2.4.9 查看MHA状态
1 | [root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf |
2.4.10 故障模拟及处理
1 | ### 停主库db01: |
查看db02变成主库
1 | db02 [(none)]>show master status; |
启动db01
1 | [root@db01 ~]# systemctl start mysqld |
恢复主从结构,db02变成主库
1 | db01 [(none)]>CHANGE MASTER TO |
修改db03 MHA配置文件
1 | [root@db03 ~]# vim /etc/mha/app1.cnf |
启动MHA
1 | [root@db03 ~]# 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 & |
2.4.11 Manager额外参数介绍
1 | 说明: |
2.4.12 MHA 的vip功能
参数
1 | vim /etc/mha/app1.cnf |
拷贝脚本至指定位置
1 | [root@db03 ~]# cp master_ip_failover.txt /usr/local/bin/master_ip_failover |
修改脚本内容:
1 | [root@db03 ~]# vim /usr/local/bin/master_ip_failover |
主库上,手工生成第一个vip地址
1 | 手工在主库上绑定vip,注意一定要和配置文件中的ethN一致,我的是eth0:1(1是key指定的值) |
重启mha
1 | [root@db03 ~]# 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 & |
2.4.13 邮件提醒
1 | 1. 参数: |
2.4.14 binlog server(db03)
参数
1 | binlogserver配置: |
创建必要目录
1 | mkdir -p /data/mysql/binlog |
拉取主库binlog日志
1 | cd /data/mysql/binlog -----》必须进入到自己创建好的目录 |
重启MHA
1 | [root@db03 ~]# masterha_stop --conf=/etc/mha/app1.cnf |
故障处理
1 | 主库宕机,binlogserver 自动停掉,manager 也会自动停止。 |
第3章 管理员在高可用架构维护的职责
1 | 1. 搭建:MHA+VIP+SendReport+BinlogServer |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WF's Blog!
评论