mysql高可用

環境:centos 6.7 mysql 5.6.31(兩臺都一樣)
server1 ip:192.168.209.130
server2 ip:192.168.209.131
一:配置兩臺MySQL主主同步:
    MySQL安裝過程省略
   設置MySQL登陸密碼:mysqladmin -uroot password
   兩臺MySQL創建一樣的庫
   然後配置MySQL:
  server1: vim /etc/my.cnf
              [mysqld]  
              server-id = 1                    
              log-bin = mysql-bin 
              auto-increment-increment = 2            #字段變化增量值 
              auto-increment-offset = 1              #初始字段ID爲1 
               log-slave-updates
               sync_binlog=1
               以上這些是需要增加或者修改的
              然後重啓:/etc/init.d/mysqld restart
            更改server2:
           vim /etc/my.cnf
           [mysqld]  
              server-id = 2                  
              log-bin = mysql-bin 
              auto-increment-increment = 2            #字段變化增量值 (這是根據服務器臺數設定的,我用的兩臺虛擬機)
              auto-increment-offset = 2             #初始字段ID爲1 
               log-slave-updates
               sync_binlog=1
               以上這些是需要增加或者修改的
              然後重啓:/etc/init.d/mysqld restart
           登陸server1:mysql -uroot -p
          授權:grant replication slave on *.* to 'repl'@'192.168.209.131' identified by'repl';
         然後輸入:flush privilegs;
        繼續輸入:show master status; 記住file 和position的值
        繼續輸入:change master to master_host='192.168.209.131',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=199;
      繼續輸入:start slave;
     登陸server2:mysql -uroot -p (沒加入環境變量的應該是/usr/local/mysql/bin/mysql -uroot -p )
    授權: grant replication slave on *.* to 'repl'@'192.168.209.130' identified by'repl';
   然後輸入:flush privileges;
  繼續輸入:show master status;
記住file和position的值
  繼續輸入:change master to master_host='192.168.209.130',master_port=3306.master_user='repl',master_password='repl',master_log_file='mysql-bin.000002',master_log_pos=120;
  繼續輸入:start slave;
配置完畢後在兩臺機器上輸入show slave status\G;查看Slave_IO_Running和Slave_SQL_Running是兩個yes說明配置成功.
然後配置keepalived實現熱備
兩臺機器上安裝keepalived :yum install -y keepalived
在server1上操作:vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived

global_defs {
   router_id MYSQL_HA
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt   #不主動搶佔資源,只在server1這臺優先級高的設置,server2不設置 
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.209.128
    }
}
virtual_server 192.168.209.128 3306 {
    delay_loop 6
   # lb_algo rr
   # lb_kind NAT
   # nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.209.130 3306 {
        weight 1
        notify_down /usr/local/sbin/mysql.sh  #當mysq down時,執行此腳本,殺死keepalived實現切換 
        TCP_CHECK {
        connect_timeout 3    #連接超時
        nb_get_retry 3      #重試次數
        delay_before_retry 3 #重試間隔時間
    }
    }
}
然後編輯/usr/local/sbin/mysql.sh
#! /bin/bash
pkill keepalived
保存退出,增加x權限   chmod +x /usr/local/sbin/mysql.sh
在server2上操作:vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id MYSQL_HA
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.209.128
    }
}

virtual_server 192.168.209.128 3306 {
    delay_loop 6
  #  lb_algo rr
  #  lb_kind NAT
  #  nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.209.131 3306 {
        weight 1
        notify_down /usr/local/sbin/mysql.sh
       TCP_CHECK {
       connect_timeout 3    #連接超時
       nb_get_retry 3      #重試次數
       delay_before_retry 3 #重試間隔時間
  }
}
}
保存退出
編輯/usr/local/sbin/mysql.sh
#! /bin/bash
pkill keepalived
保存退出,增加x權限
最後啓動keepalived   我這裏因爲server1比server2優先級高,所以先啓動server1,再啓動server2
啓動完成後查看server1 的vip :ip addr 
然後停掉server1上的mysql服務,在server2上查看vip : ip addr 如果server2上有VIP說明切換過來了.
如果server1的mysql重新啓動了,需要手動啓動keepalived高可用繼續生效大概思路就是這樣,版本不同可能操作會有些區別.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章