通用的方法就是创建一个全局的目录库,在库中存放着所有应用和IP地址之间的映射关系,用以取代VIP。在这种方案下,如果master崩溃,那么你就需要修改这个目录库。
两种方案都各有优缺点,MHA不会强制使用哪一种。MHA可以调用其他的脚本来禁用\激活write ip地址,通过设置master_ip_failover_script 脚本的参数,该脚本可在manager节点中找到。你可以在该脚本中更新目录库,或者实现VIP漂移等任何你想干的事。你同样可以借用现有的HA方案的软件实现IP故障转移,比如Pacemaker,在这种情况下MHA将不会做IP故障转移。
和MySQL半同步复制配合使用
尽管MHA试图从崩溃的master上保存binarylog,但这并不总是可行的。例如,如果master是因为H/W故障或者是SSH故障,则MHA无法保存binlog,从而无法应用仅存在master上的binlog进行故障转移,这将会导致丢失最近的数据。使用半同步复制可以极大地减少这种丢失数据的风险。由于它也是基于mysql的复制机制,所以MHA能够配合半同步复制一起使用。值得一提的是,只要有一台slave收到最新的binlog events,则MHA就会将它应用到所有的slave,从而保证了数据的一致性。
Tutorial
创建通用的复制环境
MHA不会自己创建replication环境,所以你需要自己手动搭建。换句话说,你可以将MHA部署在现有的复制环境中。举个例子,假设有四台主机:host1,host2,host3,host4.我们将host1配置成master,host2和host3配置成slave,而host4配置成manager在host1-host4上安装node节点
RHEL/Centos系统
## If you have not installed DBD::mysql, install it like below, or install from source. # yum install perl-DBD-MySQL ## Get MHA Node rpm package from "Downloads" section. # rpm -ivh mha4mysql-node-X.Y-0.noarch.rpm
Ubuntu/Debian系统
## If you have not installed DBD::mysql, install it like below, or install from source. # apt-get install libdbd-mysql-perl ## Get MHA Node deb package from "Downloads" section. # dpkg -i mha4mysql-node_X.Y_all.deb
源码安装
## Install DBD::mysql if not installed $ tar -zxf mha4mysql-node-X.Y.tar.gz $ perl Makefile.PL $ make $ sudo make install
在host4上安装manager节点
MHA的manager节点提供masterha_manager,masterha_master_switch等命令行的功能,依赖与Perl模块。在安装manager节点之前,你需要安装以下prel模块,另外别忘了在manager节点安装node节点。MHA Node package DBD::mysql Config::Tiny Log::Dispatch Parallel::ForkManager Time::HiRes (included from Perl v5.7.3)
RHEL/Centos系统
## Install dependent Perl modules # yum install perl-DBD-MySQL # yum install perl-Config-Tiny # yum install perl-Log-Dispatch # yum install perl-Parallel-ForkManager ## Install MHA Node, since MHA Manager uses some modules provided by MHA Node. # rpm -ivh mha4mysql-node-X.Y-0.noarch.rpm ## Finally you can install MHA Manager # rpm -ivh mha4mysql-manager-X.Y-0.noarch.rpm
Ubuntu/Debian系统
## Install dependent Perl modules # apt-get install libdbd-mysql-perl # apt-get install libconfig-tiny-perl # apt-get install liblog-dispatch-perl # apt-get install libparallel-forkmanager-perl ## Install MHA Node, since MHA Manager uses some modules provided by MHA Node. # dpkg -i mha4mysql-node_X.Y_all.deb ## Finally you can install MHA Manager # dpkg -i mha4mysql-manager_X.Y_all.deb
源码安装
## Install dependent Perl modules # MHA Node (See above) # Config::Tiny ## perl -MCPAN -e "install Config::Tiny" # Log::Dispatch ## perl -MCPAN -e "install Log::Dispatch" # Parallel::ForkManager ## perl -MCPAN -e "install Parallel::ForkManager" ## Installing MHA Manager $ tar -zxf mha4mysql-manager-X.Y.tar.gz $ perl Makefile.PL $ make $ sudo make install
创建配置文件
下一步就是创建manager的配置文件,参数主要包括mysql server的用户名,密码,复制账户的用户名和密码,工作目录等。所有的参数列表详见parameter表。
manager_host$ cat /etc/app1.cnf [server default] # mysql user and password user=root password=mysqlpass ssh_user=root # working directory on the manager manager_workdir=/var/log/masterha/app1 # working directory o