MySQL+MHA高可用集群的搭建


MHA的工作原理

MySQL

MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了自动故障转移功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,而且MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。

MHA服务有两种角色:管理节点MHA Manager和数据节点MHA Node。管理节点MHA Manager可以单独部署在一台独立的机器上,管理多个master-slave集群;也可以部署在一台slave节点上。MHA Manager会定时探测集群中的master节点,当master出现故障时,Manager会自动将具有最新数据的slave提升为新的master,然后将其它的slave重新指向新的master,整个故障转移过程对应用程序完全透明。数据节点MHA Node运行在主从集群的每一台MySQL服务器上,用来接收管理节点MHA Manager发出的指令。

MySQL+MHA高可用集群的搭建

集群环境准备

1、使用三台MySQL8.0搭建一主二从主从复制集群,并增加一台CentOS7服务器作为MHA Manager。配置如下:

  • MHA:MHA管理节点,IP地址为192.168.238.60。
  • Master:主服务器,IP地址为192.168.238.61。
  • Slave1:从服务器,IP地址为192.168.238.62。
  • Slave2:从服务器,IP地址为192.168.238.63。

2、因为任何一台从服务器都有可能成为Master主服务器,所以需要在Slave1和Slave2上创建用于日志复制的账号。

2.1、创建用于日志复制的用户。

MySQL

2.2、给创建的用户赋予日志复制权限。

MySQL

2.3、使用flush命令刷新用户权限。

MySQL

3、在Master主服务器上创建供MHA监控MySQL状态使用的账号,从服务器会自动同步创建此账号。

3.1、创建用于状态监控的用户。

MySQL

3.2、给创建的用户赋予所有权限。

MySQL

3.3、使用flush命令刷新用户权限。

MySQL

4、在包括MHA管理节点在内的所有服务器上安装mha4mysql-node。

4.1、安装epel源。

MySQL

4.2、安装依赖包。

MySQL

4.3、解压压缩包。

MySQL

4.4、进入解压目录,进行编译与安装。

MySQL

4.5、安装完毕,查看/usr/local/bin下生成的命令。

MySQL

5、在MHA管理节点上安装mha4mysql-manager。

5.1、解压压缩包。

MySQL

5.2、进入解压目录,进行编译与安装。

MySQL

5.3、安装完毕,查看/usr/local/bin下生成的命令。

MySQL

6、修改MHA管理节点故障自动切换脚本。

6.1、将脚本master_ip_failover拷入/usr/local/bin。

MySQL

6.2、修改脚本文件master_ip_failover,增加图中红框内的内容,配置项含义如下:

  • $vip:集群的虚拟IP。
  • $brdc:虚拟IP的广播地址。
  • $ifdev:虚拟IP绑定的网卡。
  • $ifdev:虚拟IP绑定的网卡。
  • $key:虚拟网卡的序号。
  • $ssh_start_vip:开启虚拟网卡的命令。
  • $ssh_stop_vip:关闭虚拟网卡的命令。
MySQL

7、配置MHA管理节点。

7.1、创建目录/etc/mha并将压缩包中示例项目的配置文件拷入其中。

MySQL

7.2、修改配置文件,主要配置项如下:

  • user/password:监控主从集群状态的账号。
  • repl_user/repl_password:主从复制账号。
  • secondary_check_script:二次检查的脚本命令。
  • [server1]/[server2]/[server3]:主从复制集群的节点定义。
MySQL

8、在所有节点上配置SSH无密码登录。

8.1、在所有节点上生成SSH密钥用于远程登录。

MySQL

8.2、在MHA管理节点上配置到其它节点的免密登录。

MySQL

8.3、在master主节点上配置到slave1、slave2从节点的免密登录。

MySQL

8.4、在slave1从节点上配置到master主节点和slave2从节点的免密登录。

MySQL

8.5、在slave2从节点上配置到master主节点和slave1从节点的免密登录。

MySQL

9、在主从复制集群的Master主节点上开启虚拟IP。

9.1、创建虚拟IP。

MySQL

9.2、查看虚拟IP。

MySQL

10、在MHA管理节点上测试集群。

10.1、测试SSH的连通性,若测试结果最后为“All SSH connection tests passed successfully.”即表示连接成功。

MySQL

10.2、测试主从复制集群,若测试结果最后为“MySQL Replication Health is OK.”即表示集群状态良好。

MySQL

11、在MHA管理节点上启动MHA。

MySQL

集群的测试

1、通过虚拟IP登录MySQL。

MySQL

2、关闭Master节点并查看日志,日志显示Master节点已切换。

MySQL

3、再次通过虚拟IP登录MySQL,主从集群仍能正常使用。查看新的Master节点IP可见虚拟IP已漂移至新Master节点。

MySQL

发表评论

评论数量:0