Mysql - 高可用方案之MHA

本文将介绍mysql的MHA(Master High Availability)方案,官方文档地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Installation
MHA架构由三台mysql服务器(一主两从)和一台manager节点组成,当主库发生故障时,manager能自动从众多从库中选择一台slave log最新的从库转变成主库,然后将其它所有节点重新指向新的主库。将丢失数据的概率降至最低。

写库故障发生前:

mha1

写库故障发生后:

mha2

二、节点介绍

本次实验采用4台虚拟机,操作系统版本Centos6.10,mysql版本5.7.25
manager  10.40.16.60  管理  管理集群
node1    10.40.16.61  主库  提供写服务
node2    10.40.16.62  从库  提供读服务
node3    10.40.16.63  从库  提供读服务

还须预留1个vip,现在不用配置,这里先提一下,后面的安装步骤用得到
10.40.16.71  写vip


三、安装 1. 配置一主二从

其中node1是主库,node2和node3是从库。具体的复制搭建这里就省略,要是这都不会,那么该文章对你就没意思了。
注明:集群中使用的复制账号为repl,密码是'123456'

node1(10.40.16.61)
(root@localhost)[test1]> show master status\G
*************************** 1. row ***************************
              File: mysql-bin.000003
          Position: 1067
      Binlog_Do_DB:
  Binlog_Ignore_DB:
Executed_Gtid_Set:

node2(10.40.16.62)
(root@localhost)[test1]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 10.40.16.61
                   Master_User: repl
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000003
           Read_Master_Log_Pos: 1067
                Relay_Log_File: slave-relay-bin.000002
                 Relay_Log_Pos: 1233
         Relay_Master_Log_File: mysql-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

node3(10.40.16.63)
(root@localhost)[test1]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 10.40.16.61
                   Master_User: repl
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000003
           Read_Master_Log_Pos: 1067
                Relay_Log_File: slave-relay-bin.000002
                 Relay_Log_Pos: 1233
         Relay_Master_Log_File: mysql-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes


2. 下载MHA包

MHA Manager和MHA Node的rpm下载地址
https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

image


3. 下载扩展包(node1&node2&node3&manager)

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -ivh epel-release-latest-6.noarch.rpm

编辑文件/etc/yum.repos.d/epel.repo

image


将该文件的第三行取消注释,第四行添加注释,如下所示

image



4. 安装MHA包

每个数据库节点(node1&node2&node3)

yum install -y perl-DBD-MySQL
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

node包在/usr/bin下面生成4个文件
save_binary_logs:保存和复制master的二进制日志
apply_diff_relay_logs:识别差异的relay log并将差异的event应用到其它slave中
filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs:消除中继日志(不会堵塞SQL线程)

 

管理节点(manager)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyppp.html