你的位置:首页 > 数据库

[数据库]中间件MHA


MHA是一款开源的MySQL高可用程序,为MySQL主从复制架构提供了节点故障转移功能,当

master发生故障时MHA会自动提升拥有最新数据的slave节点成为新的节点,还提供了master节

点的在线切换功能,即按需切换master/slave节点

 

Manager会时刻监视主节点,并把主节点的二进制日志保存在本地一份,一旦主节点宕机了,它会找一台拥有最新数据的slave节点,

并通过本地的二进制日志副本,将此slave节点还原到宕机前的一刻,如何找到拥有最新数据的slave节点是通过部署在每台MySQL上

的MHA node实现的(具体实现过程是通过MHA node自带的4个脚本)

 

MHA是建立在主从架构之上的,因此主从架构得事先配置好,当主节点宕机,任何一个从节点都有可能提升为主节点,因此每个从节点

都得开启二进制日志,而以前的主节点从新上线时,会成为新的从节点,所以在主节点之上也得配置中继日志

下载地址:

http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-manager-0.56-0.el6.noarch.rpm&refer=matsunobu

wget http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&pcmd=open&file=mha4mysql-node-0.56-0.el6.noarch.rpm&refer=matsunobu

 

 

 

一共使用4台虚拟机做测试,一台manager,一台主(192.168.238.224 ),两台从(192.168.238.225-226),主从架构配置上

篇博文有介绍这里就不说了,建议在每台mariadb的配置文件中设置skip_name_resolve=ON (启动mysqld来禁用DNS主机名查

找。然而,在这种情况下,你只可以使用MySQL中的授权表中的IP号)

不过在两台从节点的配置文件中必须添加relay_log_purge=0(将中继日志重放完成自动删除中继日志的功能关闭),这是因为

manager要根据中继日志判断从节点的复制进度,从而在主节点宕机时提升拥有最新数据的从节点为主节点

 

1.在主节点授权一个用户,使manager能使用该用户在各主机上进行必要的管理操作:

 grant all on *.* to 'mha'@'192.168.%.%' identified by 'mhapass';

 flush privileges;

 

2.在MHA的架构中每个节点都必须要能同过ssh协议的密钥方式通信(即基于ssh协议通信无需手动输入密码)

  (1)为了方便在某个主机上生成一对ssh密钥,将该对密钥通过scp命令放置在各节点的相应目录下

     ssh-keygen -t rsa -P '' (-t 指使用rsa加密方式生成密钥对,-P ‘’ 指不对生成的私钥文件加密)

     如果此命令是root用户运行的,则私钥默认保存在/root/.ssh/id_rsa文件中,公钥保存在/root/.ssh/id_rsa.pub文件中

  (2)所有节点都是用相同的公钥和私钥,将公钥都追加到/root/.ssh/authorized_keys文件中

     cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

   (3) 将id_rsa文件和authorized_keys文件都复制到其他节点的对应目录下(注意其他主机可能没有.ssh目录)

     scp -p .ssh/authorized_keys .ssh/id_rsa 192.168.238.225:/root/.ssh/

     scp -p .ssh/authorized_keys .ssh/id_rsa 192.168.238.226:/root/.ssh/

   为了安全建议将authorized_keys文件权限改为600权限,使用scp命令复制时使用-p选项来保留文件权限

接下来再各节点安装好从上面地址下载下来的rpm包,mananger只安装在一台单独的服务器上,为了解决rpm包的依赖关系,要配置好epel源

  未完待续