赞
踩
MHA(Master High Availability)是一个高效的开源MySQL高可用性解决方案。由日本开发者yoshinorim(前DeNA员工,现在Facebook)创建,MHA支持MySQL的主从复制架构,自动化主节点故障转移。当主节点发生故障,MHA能迅速将最新数据的从节点升级为新主节点。这个过程中,MHA从其他从节点获取额外信息,确保数据一致性。MHA还能在线切换主节点,按需调整主从节点关系。它已被证明是一个成熟的MySQL高可用方案,能在30秒内完成故障切换,并最大限度地保证数据一致性。值得一提的是,淘宝也在开发一个类似的产品TMHA,目前支持一主一从架构。
MHA服务包括两种角色:MHA Manager(管理节点)和MHA Node(数据节点)。
MHA提供了一系列工具,分布在Manager节点和Node节点上:
masterha_check_ssh
:检测SSH环境。masterha_check_repl
:检测MySQL复制环境。masterha_manager
:MHA的主服务程序。masterha_check_status
:探测MHA运行状态。masterha_master_monitor
:监测MySQL主节点可用性。masterha_master_switch
:切换主节点的工具。masterha_conf_host
:添加或删除配置节点。masterha_stop
:关闭MHA服务的工具。save_binary_logs
:保存并复制主节点的二进制日志。apply_diff_relay_logs
:识别并应用差异中继日志事件。purge_relay_logs
:清除中继日志。secondary_check_script
:通过多网络路由检测主节点可用性。master_ip_failover_script
:更新应用程序使用的master IP。report_script
:发送报告。init_conf_load_script
:加载初始配置参数。master_ip_online_change_script
:更新主节点IP地址。MHA的工作原理可以概括为以下几个步骤:
在本实验中,我们将设置一个包含四个节点的 MySQL Replication 环境,运行于 CentOS 7.3 系统。MHA (Master High Availability) 对 MySQL 复制环境有特定的配置需求,例如:
节点配置如下:
为方便操作,我们在所有节点的 /etc/hosts
文件中添加了对应的域名解析配置。
对于主节点 Master 的数据库配置,我们进行以下设置:
server-id
为 1,以保证集群中节点 ID 的唯一性。完成配置后,重启 MariaDB 服务以应用更改。
对于两个从节点 Slave,我们进行以下操作:
server-id
(2 和 3)。每次配置更改后,重启 MariaDB 服务以应用设置。
在 Master 节点上,我们配置了权限以允许 Slave 连接和复制。具体命令包括授予复制权限和显示 Master 状态。
在每个 Slave 节点上,我们设置了连接到 Master 的参数,启动了复制服务,并检查了复制状态。
以上步骤完成了 MySQL Replication 环境的基本配置。
grant all on *.* to 'mhaadmin'@'192.168.%.%' identified by 'mhapass';
authorized_keys
文件复制给所有其他节点。mha4mysql-node-0.56-0.el6.norch.rpm
mha4mysql-manager-0.56-0.el6.noarch.rpm
rz
命令上传包,然后使用yum
进行安装。/etc/masterha_default.cnf
,或者通过application的配置提供。/etc/mha_master
目录并编写mha.cnf
文件,配置包括管理用户、密码、工作目录等。masterha_check_repl
命令检查。此文档详细介绍了MHA的安装配置过程,包括授权、SSH互通设置、MHA包安装、配置文件定义和系统检测。这些步骤确保了MHA集群的正确安装和高效运行。
在 manager 节点上执行以下命令来启动 MHA:
nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &
启动成功后,检查 master 节点的状态:
masterha_check_status -conf=/etc/mha_master/mha.cnf
如果服务正常运行,将显示 mha (pid:7598) is running(0:PING_OK)
。要停止 MHA,使用:
masterha_stop -conf=/etc/mha_master/mha.cnf
killall -9 mysqld mysqld_safe rm -rf /var/lib/mysql/*
tail -200 /etc/mha_master/manager.log
masterha_check_repl
检查复制状态。masterha_manager -conf=/etc/mha_master/mha.cnf > /etc/mha_master/manager.log 2>&1 & masterha_check_status -conf=/etc/mha_master/mha.cnf
以上步骤详细介绍了如何启动和管理 MHA,以及在出现问题时的故障排查和修复流程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。