1. 前言
MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。
MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成。
MHA提供了上述功能,使得其在适用于对高可用性,数据完整性要求高的场合,还有要求几乎non-stop的主库维护。
这次主要是讲解MHA的快速部署和简单配置,后续补充高级特性以及相关架构吧。
2. 环境介绍
环境有限,我使用的是vmware虚拟机,搭建三台服务器,1主2从结构。其中manager管理节点放在其中一台从库中。 1)server1(node节点) OS:CentOS 6.4 X64 IPADDR:172.16.21.12(eth0);192.168.8.6(eth1) HOSTNAME:mysql-mha01 DB:Mysql 5.5.43-log MySQL Community Server (GPL) SOFTWARE:mha4mysql-node-0.56-0.el6.noarch.rpm 防火墙关闭;selinux关闭;
2)server2(node节点) OS:CentOS 6.4 X64 IPADDR:172.16.21.13(eth2);192.168.8.7(eth3) HOSTNAME:mysql-mha02 DB:Mysql 5.5.43-log MySQL Community Server (GPL) SOFTWARE:mha4mysql-node-0.56-0.el6.noarch.rpm 防火墙关闭;selinux关闭;
3)server3(node节点,manager节点) OS:CentOS 6.4 X64 IPADDR:172.16.21.15(eth2);192.168.8.8(eth3) HOSTNAME:mysql-mha01 DB:Mysql 5.5.43-log MySQL Community Server (GPL) SOFTWARE:mha4mysql-node-0.56-0.el6.noarch.rpm;mha4mysql-manager-0.56-0.el6.noarch.rpm 防火墙关闭;selinux关闭;
MHA软件
下载地址 https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2
3. 软件安装
3.1 Node节点安装
在3个节点上安装node软件包,首先安装依赖包
yum install perl-DBD-MySQL
安装node软件包
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
3.2 Manager节点安装
安装依赖包
yum install perl-Params-Validate perl-LWP-Simple perl-Config-Tiny perl-Time-HiRes perl-Log-Dispatch perl-Parallel-ForkManager
我当时配置的163的yum源没有perl-Log-Dispatch和perl-Parallel-ForkManager,所以就自己下载的rpm包安装,大家可以到http://pkgs.repoforge.org/ 下载自己需要的包。
rpm -ivh perl-Log-Dispatch-2.26-1.el6.rf.noarch.rpm perl-Parallel-ForkManager-0.7.5-2.2.el6.rf.noarch.rpm
安装manager软件包
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
4. MHA配置
4.1 Mysql复制配置
此处就不详细说明了,大家可以参考我以前的文章。http://blog.csdn.net/wjf870128/article/details/45170089 和 http://blog.csdn.net/wjf870128/article/details/45149573。 我搭建的是半同步复制的一主双从结构。其中mysql-mha02为master节点,其他为slave节点。复制账户密码repl/slavepass。(PS我们公司环境是5.5的所以这里的
虚拟机也是用到的
mysql5.5。现在MHA支持5.6的GTID复制,因此大家可以考虑使用5.6的gtid搭建,可以方便master由于崩溃恢复后重新加入集群管理)
4.2 MHA配置
在管理节点mysql-mha02中建立配置文件
mkdir -p /etc/MHA
touch /etc/MHA/MHAmanager.conf
查看manager配置文件
[server default]
# mysql user and password
user=root
password=123456
ssh_user=root
# mysql replication user and password
repl_user=repl
repl_password=slavepass
# working directory on the manager
manager_workdir=/var/log/masterha/manager
# working directory on MySQL servers
remote_workdir=/var/log/masterha/node
#Master Binlog dir
master_binlog_dir=/var/lib/mysql/logs
#secondary route to detect the reachable of master
secondary_check_script= masterha_secondary_check -s mysql-mha03 --user=root --master_host=mysql-mha02 --master_ip=172.16.21.13 --master_port=3306
#define the manager log
manager_log=/var/log/masterha/manager.log
[server1]
hostname=mysql-mha01
[server2]
hostname=mysql-mha02
[server3]
hostname=mysql-mha03
MHA当中详细参数大家可以参考 https://code.google.com/p/mysql-master-ha/wiki/Parameters。 master_binlog_dir标志着master节点binlog的存放位置,如果大家没有使用默认的/var/lib/mysql的话需要单独制定。MHA在故障切换的