设为首页 加入收藏

TOP

mysql高可用之mha(一)
2015-11-21 01:50:33 来源: 作者: 【 】 浏览:4
Tags:mysql 可用 mha

mysql高可用有很多方案,如mmm,mysql cluster等,但都无法真正应用到生产环境。偶然间发现mha(master high availability),目前在mysql高可用方面是一个相对成熟的解决方案,它能够在较短时间内实现自动故障检测和故障转移,通常在10~30秒内;并且在replication环境中,mha能够很好的解决复制过程中数据行一致性问题。我们可以在不改动现有环境下部署mha,安装非常简单。

mha由mha manager(管理节点)和mha node(数据节点)组成。管理节点可以单独部署在一台独立的机器上管理一个或多个master-slave集群,也可以部署在一台slave节点上。数据节点运行在每台mysql服务器上,管理节点会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将其他的slave重新指向新的master。

如何保持数据的一致性呢?主要通过mha node的以下几个工具实现,但是这些工具由mha manager触发:

save_binary_logs如果master的二进制日志可以存取的话,保存复制master的二进制日志,最大程度保证数据不丢失

apply_diff_relay_logs相对于最新的slave,生成差异的中继日志并将所有差异事件应用到其他所有的slave

注:对比的是relay log,relay log越新就越接近于master,才能保证数据是最新的。

purge_relay_logs删除中继日志而不阻塞sql线程

好了,基本就介绍那么多,如果想详细了解请访问官网:https://code.google.com/p/mysql-master-ha,下面我们来部署下。

mha架构如下:

master:10.10.10.56 hostname:rd-mysql-test1server-id:1写入,数据节点

slave1:10.10.10.57 hostname:rd-mysql-test2 server-id:2读,数据节点,备选master(candicate master)

slave2:10.10.10.57 hostname:rd-mysql-test3 server-id:3读,数据节点

mha manager:10.10.10.59 hostname:rd-mysql-test4-管理节点

1.在所有节点安装mha node

#安装mha node
[root@rd-mysql-test4 src]# wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.53.tar.gz
[root@rd-mysql-test4 ~]# cd /usr/local/src/
[root@rd-mysql-test4 src]# yum install perl-DBD-MySQL -y
[root@rd-mysql-test4 src]# wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.53.tar.gz
[root@rd-mysql-test4 src]# tar -zxvf mha4mysql-node-0.53.tar.gz
[root@rd-mysql-test4 src]# cd mha4mysql-node-0.53
[root@rd-mysql-test4 mha4mysql-node-0.53]# perl Makefile.PL 
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at inc/Module/Install/Can.pm line 6.
BEGIN failed--compilation aborted at inc/Module/Install/Can.pm line 6.
Compilation failed in require at inc/Module/Install.pm line 307.
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at inc/Module/Install/Makefile.pm line 4.
BEGIN failed--compilation aborted at inc/Module/Install/Makefile.pm line 4.
Compilation failed in require at inc/Module/Install.pm line 307.
Can't locate ExtUtils/MM_Unix.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at inc/Module/Install/Metadata.pm line 316.
[root@rd-mysql-test1 mha4mysql-node-0.53]# yum install perl-devel
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
Can't locate CPAN.pm in @INC (@INC contains: inc /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at inc/Module/AutoInstall.pm line 279.
[root@rd-mysql-test4 mha4mysql-node-0.53]# yum -y install perl-CPAN
[root@rd-mysql-test4 mha4mysql-node-0.53]# perl Makefile.PL
[root@rd-mysql-test4 mha4mysql-node-0.53]# make && make install

注意:mha是由perl编写,因此依赖perl模

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇阿里云远程如何访问mysql 下一篇eclipse连接mysql

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: