Keepalived+Mysql互爲主從高可用安裝配置

Keepalived+Mysql互爲主從高可用安裝配置
環境介紹:
keepalived_vip=192.168.1.210    (寫虛擬ip)
mysql_master01      eth0:192.168.1.211  eth1:172.20.27.211 (1核1G)
mysql_master02      eth0:192.168.1.212  eth1:172.20.27.212 (1核1G)

1.安裝mysql數據庫(所有節點安裝)
  //此處省略安裝mysql服務
2.編輯my.cnf配置文件

2.1修改mysql_master01配置文件

vim /usr/local/lnmp/mysql/etc/my.cnf

server_id = 211
log-bin=mysql-bin
log-slave-updates


2.2修改mysql_master02配置文件

vim /usr/local/lnmp/mysql/etc/my.cnf
server_id = 212
log-bin=mysql-bin
log-slave-updates


3.搭建互爲主從
3.1在mysql_master01上面操作
3.1.1爲mysql_master02建立主從同步權限

mysql -u root -p123456 //進入數據庫
grant replication slave on *.* to 'backup'@'192.168.1.212' identified by 'backup'; //建立權限
flush privileges; //刷新權限表


3.1.2拷貝數據到mysql_master02節點

mysql -u root -p123456 //進入數據庫
flush tables with read lock; //鎖表,準備備份數據
mysql> show master status\G  //查看主節點信息
*************************** 1. row ***************************
             File: mysql-bin.000005
         Position: 1231
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)
 
mysqldump -u root -p123456 liu >liu.sql //備份liu這個數據庫
mysql -u root -p123456 //進入數據庫
unlock tables; //解鎖
scp liu.sql [email protected]:/root/   //拷貝數據


3.2在mysql_master02上面操作
3.2.1恢復liu.sql到數據庫

mysql -u root -p123456 //進入數據庫
create database test; //創建恢復的數據庫名
use test; //進入數據庫
source /root/test.sql //恢復數


3.2.2建立主從同步關係

mysql -u root -p123456 //進入數據庫
change master to 
master_host='192.168.1.211',master_user='backup',master_password='backup',master_log_file='mysql-bin.000005',master_log_pos=1231; //建立主從同步關係
start slave; //啓動從庫同步
show slave status\G  //檢查主從同步,如果您看到Slave_IO_Running和Slave_SQL_Running均爲Yes,則主從複製連接正常。

3.2.3爲mysql_master01建立主從同步權限

mysql -u root -p123456 //進入數據庫
grant replication slave on *.* to 'backup'@'192.168.1.211' identified by 'backup'; //建立權限
flush privileges; //刷新權限表
mysql> show master status\G //查看主節點信息
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 1242
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)


4.安裝keepalived(所有節點都安裝)
4.1安裝配置keepalived

wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
tar zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
./configure --prefix=/usr/local/keepalived
make && make install


4.2將keepalived配置成系統服務

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

4.3修改keepalived配置文件
4.3.1修改mysql_master01的keepalived配置文件

echo '' >/etc/keepalived/keepalived.conf //清空配置文件,自己寫
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived  
 global_defs {  
      notification_email {  
      [email protected]  
      }  
    notification_email_from [email protected]  
     smtp_server 127.0.0.1  
     smtp_connect_timeout 30  
     router_id MySQL-ha  
     }  
vrrp_instance VI_1 {
   state backup       #兩臺配置此處均是BACKUP
   interface eth0
   virtual_router_id 51
   priority 100       #優先級,另一臺改爲90
   advert_int 1
   nopreempt          #不搶佔,只在優先級高的機器上設置即可,優先級低的機器不設置
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.1.210
   }
}
virtual_server 192.168.1.210 3306 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   persistence_timeout 50        #會話保持時間
   protocol TCP
real_server 192.168.1.211 3306 {
       weight 3
       notify_down /usr/local/lnmp/mysql/bin/killkeepalived.sh    #檢測到mysql服務掛了就執行這個腳本
       TCP_CHECK {
       connect_timeout 10        #連接超時時間
       nb_get_retry 3            #重連次數
       delay_before_retry 3      #重連間隔時間
       connect_port 3306         #健康檢查端口
        }
       }
}

4.3.2修改mysql_master02的keepalived配置文件

echo '' >/etc/keepalived/keepalived.conf //清空配置文件,自己寫
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived  
 global_defs {  
      notification_email {  
      [email protected]  
      }  
    notification_email_from [email protected]  
     smtp_server 127.0.0.1  
     smtp_connect_timeout 30  
     router_id MySQL-ha  
     }  
vrrp_instance VI_1 {
   state backup  
   interface eth0
   virtual_router_id 51
   priority 90 
   advert_int 1
   nopreempt
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.1.210
   }
}
virtual_server 192.168.1.210 3306 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   persistence_timeout 50
   protocol TCP
real_server 192.168.1.212 3306 {
       weight 3
       notify_down /usr/local/lnmp/mysql/bin/killkeepalived.sh
       TCP_CHECK {
       connect_timeout 10
       nb_get_retry 3
       delay_before_retry 3
       connect_port 3306
        }
       }
}


4.4編寫killkeepalived.sh(所有節點安裝)

vim /usr/local/lnmp/mysql/bin/killkeepalived.sh
#!/bin/sh  
pkill keepalived
chmod +x /usr/local/lnmp/mysql/bin/killkeepalived.sh


4.5 啓動keepalived(所有節點安裝)

service keepalived restart 
echo 'service keepalived start' >>/etc/rc.local

5.測試數據庫高可用

5.1爲測試用戶建立權限

grant all privileges on *.* to 'liuzhuang'@'%' identified by '123';
flush privileges; //刷新權限表

5.2模擬故障,看是否關閉一臺mysql服務,vip會自動切換,如果會,說明環境正常


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章