MySQLは高可用性で、MySQLは互いに+keepalivedから使用されます.


一:環境:centos 7.5 MySQL5.7 192.168.3.222 master 192.168.3.158 slave 192.168.3.223 VIP二:まず双主をして以下の操作の2台の機械はすべて2.1をします:まずドメイン名の解析をします:
###vim /etc/hosts (    )
192.168.3.222 master
192.168.3.158 slave

2.2:MySQL 5をダウンロードする.7
### wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
### rpm -ivh mysql57-community-release-el7-8.noarch.rpm
### yum install mysql-server

2.3:パスワードの起動と変更
### systemctl start mysqld
### grep pass /var/log/mysqld.log
### mysqladmin -u root -p'bJZY,Z0kMdcQ' password 'Cherry`123'     //    

2.4:2台の機器の配置を修正する
  master    
### vim /etc/my.cnf
    [mysqld]
    log-bin
    server-id=1
    gtid_mode=ON
    enforce_gtid_consistency=1
  slave    
### vim /etc/my.cnf
    [mysqld]
    log-bin
    server-id=2
    gtid_mode=ON
    enforce_gtid_consistency=1

2.5:2台の機器を再起動して許可する
      
   ### systemctl restart mysqld

        binlog         
   mysql> show master status;

 master    
   mysql> grant replication slave on *.* to 'iii'@'192.168.3.158' identified by 
          'Cherry321`';

 slave   
change master to master_host='192.168.3.158',master_user='iii',master_password='Tiger321`',master_port=3306,master_log_file='master-bin.000003',master_log_pos=194;  //master-bin.000003',master_log_pos=194         

  slave
   mysql> start slave;

     
   mysql>show slave status\G;   //Slave_IO_Running:YES    Slave_SQL_Running:YES   

三:デュアルマスターが完成して、それからmasterの上で仮想IPをして、ネットカードをバインドします
3.1: master copy      

cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens37
      
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=9f0c5e90-b5e5-44f4-95ce-9f97d19bf880
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.3.223
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=8.8.8.8
DNS2=114.114.114.114

3.2    
###systemctl restart network

四:keepalivedをダウンロードし、そのプロファイルを変更する
4.1:       keepalived
yum -y install keepalived

4.2:      ,           。。。
[root@master keepalived]# vim keepalived.conf
! Configuration File for keepalived      //    

global_defs {

  router_id mysql-1         //    keepalived       

}

vrrp_instance VI_1 {
   state BACKUP                     //  keepalived   ,        backup,  backup           
   interface ens33    //  HA       
   virtual_router_id 51  //      ,         (   0~255  ,      instance VRRP  ),   vrrp         
                                     slave  ,           ,      
   priority 100         //    master ,   master,       1-255,   100,slave  50
   advert_int 1       //  vrrp      
   nopreempt          //   
   authentication {
       auth_type PASS
       auth_pass 1111
   }

   virtual_ipaddress {               //VIP  

       192.168.3.223

   }

}

virtual_server 192.168.3.223 3306 {      //       ,      IP       。
   delay_loop 2             //        ,    
   lb_algo rr    //        
   lb_kind DR        
   persistence_timeout 60
   protocol TCP

   real_server 192.168.3.222 3306 {    //      ,    real server   IP     。
       weight 3             //         ,         ,    ,    ,                  
       notify_down   /root/keepalived_check_mysql.sh                //   realserver MySQL  down        
       TCP_CHECK {
            connect_timeout 3                   //      
            nb_get_retry 3                         //    
            delay_before_retry 3                //      
            connect_port 3306                 //      
       }
   }
}

以下はslaveの構成です
4.3:slave   keepalived   
[root@slave ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {

  router_id mysql-2

}

vrrp_instance VI_1 {
   state BACKUP
   interface ens33
   virtual_router_id 51
   priority 50
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }

   virtual_ipaddress {

       192.168.3.223

   }

}

virtual_server 192.168.3.223 3306 {
   delay_loop 2
   lb_algo rr
   lb_kind DR
   persistence_timeout 60
   protocol TCP

   real_server 192.168.3.158 3306 {
       weight 3
       notify_down   /root/keepalived_check_mysql.sh
       TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
       }
   }
}

五:2台の機械が修正した後にmysql簡易な状態検出スクリプトを追加する
### vim /root/keepalived_check_mysql.sh
#!/bin/bash
/usr/bin/mysql -h 192.168.3.222 -uroot -p'Tiger`123' -e "show status;" &>/dev/null
if [ $? -ne 0 ] ;then
        systemctl stop keepalived
fi

       
### chmod 755 /root/keepalived_check_mysql.sh

  keepalived,  master    IP