MHA(MySQL集群)

一、MHA集群

  (1)无密码连接

  (2)配置主从(如果主机宕机那么 MHA 会在从库上选择数据最接近主库的从库 做为新的主机 另外一个自动作为新主机的从库)

  (3)MHA工作过程

    

二、装包配置

  (1)所有主机安装 MHA为perl语音写的 安装 MHA所需要的

  (2)配置一主多从

  (3)管理集群的命令  

    在管理节点上安装

    

    perl  Makefile.pl  检查perl的依赖包

    

   (4)编辑主配置文件

    需要自己创建工作目录 在源码文件中复制app1.cnf文件

    [root@mgm57 ~ ]#  mkdir  /etc/mha  //创建工作目录
    [root@mgm57 ~ ]#  cp mha4mysql-manager-0.56/sample/conf/app1.cnf /etc/mha/ //拷贝模板文件
    [root@mgm57 ~ ]#  vim /etc/mha/app1.cnf   //编辑主配置文件
         [server default]     //管理服务默认配置
                    manager_workdir=/etc/mha    //工作目录
                    manager_log=/etc/mha/manager.log   //日志文件
                    master_ip_failover_script=/etc/mha/master_ip_failover //故障切换脚本
                     ssh_user=root  //访问ssh服务用户
                     ssh_port=22    //ssh服务端口
                     repl_user=repluser           //主服务器数据同步授权用户
                     repl_password=123qqq…A    //密码
                     user=root                   //监控用户
                     password=123qqq…A               //密码
            [server1]   //指定第1台数据库服务器
    hostname=192.168.4.51    //服务器ip地址
    port=3306                //服务端口
    candidate_master=1               //竞选主服务器
    [server2]  //指定第2台数据库服务器
    hostname=192.168.4.52
    port=3306
    candidate_master=1  
                
    [server3]  //指定第3台数据库服务器
    hostname=192.168.4.53
    port=3306
    candidate_master=1
    :wq
 

   (5)创建故障切换脚本   

[root@mgm57 ~]# vim +35 /etc/mha/master_ip_failover
my $vip = '192.168.4.100/24';  # Virtual IP  //定义VIP地址
my $key = "1"; //定义变量$key
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; //部署vip地址命令
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; //释放vip地址命令
:wq

   (6)给主服务器绑定vip(在主服务器宕机后vip会飘到下一个选举的主机上)

     

    [root@host51 ~]# ifconfig  eth0:1  //部署之前查看 
    eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 52:54:00:d8:10:d7  txqueuelen 1000  (Ethernet)
    [root@host51 ~]# ifconfig  eth0:1  192.168.4.100  //部署vip地址(这个是临时的重启就没了需要永久还是在文件中配置)
    [root@host51 ~]# ifconfig  eth0:1 //部署后查看
    eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
            ether 52:54:00:d8:10:d7  txqueuelen 1000  (Ethernet)

  (7)配置MySQL节点 在所有的数据库上安装MHA_node软件包

    

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm   

    每台服务器添加监控用户(如果配置主从只需要在主库操作)

grant all on  *.*  to root@"%" identified by "123qqq...A";

   每台服务器添加数据同步连接用户(每台服务器都可能成为主库)

 

grant replication slave on  *.*  to repluser@"%" identified by "123qqq...A";

  (8)所有数据库启用半同步复制模式和 禁止自动删除所有主机上的中继日志

    

   (9)在从库上 定义 server_id 和 binlog日志

   (10)测试 ssh

       

   (11)测试 主从同步

       

   (12)启动管理服务

      

 三、修复故障机器

  (1)与主服务器数据一致

  (2)指定主库 开启start slave 

  (3)在MHA配置文件中添加故障主机的信息

  (4)测试ssh 和 主从同步 

  (5)重启 MHA 

    

原文地址:https://www.cnblogs.com/zshBlos/p/13127638.html