day10-04-MHA高可用细节剖析
MHA 架构软件结构说明
MHA结构:
node: 所有数据库节点(一主多从)
manager:一个(可以是从节点的最后一个)
manager是无状态节点,MHA通过manager对所有的node 节点进行监测
2.1节点规划
数据库节点,必须至少是1主2从独立实例。
MHA管理节点,最好是独立一台机器
manager端: db03
node端:db01,db02,db03
1主2从,独立数据库实例
2.2 MHA软件的构成(perl语言)
Manager工具包主要包括以下几个工具:
mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
masterha_manger 启动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工具包主要包括以下几个工具:
mha4mysql-node-0.58-0.el7.centos.noarch.rpm
这些工具通常由MHA Manager的脚本触发,无需人为操作
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
- MHA 配置过程细节说明
3.1 软连接(必须做)
ln -sv /application/mysql/bin/mysqlbinlog /usr/sbin/
ln -sv /application/mysql/bin/mysql /usr/bin/
MHA 调用命令时,只认绝对路径 /usr/bin/ 不会通过环境变量调用
3.2 互信
建立节点之间互信,是为了建立MHA节点之间数据补偿的网络通道
3.3 Manager软件安装(db03)
要是想节省资源,1主多从的环境,推荐安装在负载最少的slave节点,或者slave的最后一个节点。
因为如果master节点故障,那么mha根据算法要重选新的master,那么把manager安装在最后一个节点是可以规避压力的。
3.4配置文件说明
配置文件目录
mkdir -p /etc/mha
创建日志目录
mkdir -p /var/log/mha/app1/log
/etc/mha/app1.cnf 配置文件名字,可自定义,尽量靠近业务,具有辨识性。
MHA通过配置文件,同时管理多个主从复制,一个配置文件对应一个主从复制结构。
manager_log=/path/mha/log_name.log 这个才是真正的mha日志。
master_binlog_dir=/data/binlog 主节点的binlog日志目录,这个必须一一对应。在MHA环境中,所有节点必须打开binlog
ping_interval=2 探测心跳间隔时间,每两秒探测一次心跳,默认3次机会。
[server1]
[server2]
[server3]
MHA自动检测哪个节点是master,但写在server2的节点,会优先成为下一任master
开启MHA(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 &
--remove_dead_master_conf 节点发生故障后,会自动把故障节点从配置文件中移除。
--ignore_last_failover 忽略最后一次故障切换。有时需要进行手工切换时,MHA软件会限制切换间隔时间,这个参数可以取消限制。

浙公网安备 33010602011771号