vlambda博客
学习文章列表

MySQL基于MHA高可用搭建


大家好,我是anyux。本文介绍MySQL基于MHA高可用搭建。




 ln -s /data/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
 ln -s /data/mysql/bin/mysql /usr/bin/mysql


配置互信

db01

 rm -rf /root/.ssh
 ssh-keygen
 cd /root/.ssh
 mv id_rsa.pub authorized_keys

 scp -r /root/.ssh 192.168.255.113:/root

 scp -r /root/.ssh 192.168.255.114:/root

 scp -r /root/.ssh 192.168.255.115:/root


验证各节点,注意需要互相验证

db01

 ssh 192.168.255.113 date

db02

 ssh 192.168.255.114 date

db03

 ssh 192.168.255.115 date
 下载mha软件
 mha官网:https://code.google.com/archive/p/mysql-master-ha/
 github下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

安装软件包

所有节点都要操作

 yum install -y perl-DBD-MySQL
 rpm -ivh mha4mysql-node-0.56-el.noarch.rpm


在db01主库中创建mha需要的用户

 grant all privileges on *.* to mha@'%' identified by 'mha';

Manager软件安装(db03)

管理节点安装在非主节点的原因,如果master节点断电了,Manager节点可以在其他node节点实现failover(故障切换)

 yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
 rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

配置文件准备(db03)创建配置文件目录

  mkdir -p /etc/mha

创建日志目录

  mkdir -p /var/log/mha/app1

编辑mha配置文件

/var/log/mha/app1/manager为运行时日志,MHA故障时,需要首先检查此日志,快速定位问题

master_binlog_dir为主库二进制日志位置,且要求主从数据库的二进制日志必须打开,且目录名称最好一致

ping_interval为探测心跳时间,每两秒做一次探测,默认3次都失败,则认定主节点故障,此时会出现切换节点

 cat >/etc/mha/app1.cnf <<EOF
 [server default]
 manager_log=/var/log/mha/app1/manager        
 manager_workdir=/var/log/mha/app1            
 master_binlog_dir=/data/binlog      
 user=mha                                  
 password=mha                              
 ping_interval=2
 repl_password=123
 repl_user=repl
 ssh_user=root                              
 [server1]                                  
 hostname=192.168.255.113
 port=3306                                  
 [server2]            
 hostname=192.168.255.114
 port=3306
 [server3]
 hostname=192.168.255.115
 port=3306
 EOF

状态检查

互信检查

 masterha_check_ssh  --conf=/etc/mha/app1.cnf

主从状态检查

 [root@db03 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
 返回成功
 [root@db03 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
 返回ok

开启MHA(db03):

/var/log/mha/app1/manager.log为启动时日志

 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状态

 masterha_check_status --conf=/etc/mha/app1.cnf
 
 mysql -umha -pmha -h 10.0.0.51 -e "show variables like 'server_id'"


MHA架构结构说明

节点规划

数据库节点,必须至少是1主两从,不支持单机多实例的环境

MHA管理节点,最好是独立一台机器

manager:db03

node:db01,db02,db03


MHA软件的构成(perl语言)

Manager工具包主要包括以下几个工具

mha4mysql-manager-0.56-0.3l6.noarch.com

软件构成 软件作用
masterha_manager 启动MHA
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_master_monitor 检测master是否宕机
masterha_check_status 检测当前MHA运行状态
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息

Node工具包主要包括以下几个工具

这些工具通常由MHA Manager有脚本触发,无需要人为操作

软件构成 软件作用
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs 清除中继日志(不会阻断SQL线程)


MHA配置过程细节说明

软链接

配置软链接的原因是,MHA的软件就是使用绝对路径的方式运行的,所以需要使用软链接。配置了环境变量,也必须配置软链接,不然运行依然会失败的

 \rm -rf /usr/bin/mysqlbinlog
 \rm -rf /usr/bin/mysql
 ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
 ln -s /application/mysql/bin/mysql /usr/bin/mysql


互信检查

当master主节点宕机,manager节点需要通过ssh到node节点进行一些failover(故障切换)的相关操作.所以必须先配置好ssh互信