利用KEEPALIVED構建mysql主主複製

wzq609發表於2014-11-03

利用KEEPALIVED構建mysql主主複製

  1. 概述:

    MYSQL-HA有很多的實現方案,比較常見的是master+keepalived來實現MySQL-HA,來進行實現;兩臺MYSQL互為主從關係,透過Keepalived配置虛擬IP,實現當其中的一臺MYSQL資料庫當機後,應用能夠自動切換到另外一臺MYSQL資料庫,保證系統的高可用;在實際的生產環境中,也是透過這個方案來部署的,相信應該有值得借鑑的地方;

     

  2. 環境說明

    搭建mysql的主主複製步驟(請看連結http://blog.itpub.net/12679300/viewspace-1313645/)

主機名

IP地址

虛擬ipVIP

Mysql01

192.168.47.149

192.168.47.140

Mysql02

192.168.47.148

192.168.47.140

 

兩臺資料庫上面設定相應的host檔案

vim /etc/hosts

127.0.0.1 Mysql01

localhost Mysql01

192.168.47.149 Mysql01

192.168.47.148 Mysql02

 

  1. Keepalived的安裝

    3.1 #yum install keepalived –y

 

3.2 Mysql01進行引數檔案的修改

cat /etc/keepalived/keepalived.conf

#! Configuration File for keepalived

global_defs {

router_id Mysql01 #修改為自己的主機名

}

##################第一部分###################

vrrp_instance VI_1 {

state BACKUP             #都修改成BACKUP

interface eth0

virtual_router_id 60     #預設51 主從都修改為60

priority 100             #優先順序(1-254之間),另一臺改為90,備用節點必須比主節點優先順序低。

advert_int 1

nopreempt                 #不搶佔資源,意思就是它活了之後也不會再把主搶回來

authentication {

#設定驗證資訊,兩個節點必須一致

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

    192.168.47.140

}

}

##################第二部分###################

virtual_server 192.168.47.140 3306 {

delay_loop 6

lb_algo wrr             #LVS演算法

lb_kind DR                #LVS模式

nat_mask 255.255.255.0

persistence_timeout 50 #會話保持時間

protocol TCP

real_server 192.168.47.149 3306 {

weight 1

notify_down /usr/local/script/mysql.sh #檢測到服務down後執行的指令碼

TCP_CHECK {

connect_timeout 10     #連線超時時間

nb_get_retry     3    #重連次數

connect_port 3306    #健康檢查埠

}

}

}

 

3.3 Mysql02進行引數檔案的修改

cat /etc/keepalived/keepalived.conf

#! Configuration File for keepalived

global_defs {

router_id Mysql02 #修改為自己的主機名

}

##################第一部分###################

vrrp_instance VI_1 {

state BACKUP #都修改成BACKUP

interface eth0

virtual_router_id 60 #預設51 主從都修改為60

priority 80 #在mysql-ha1上LVS上修改成100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.47.140

}

}

##################第二部分###################

virtual_server 192.168.47.140 3306 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 192.168.47.140 3306 {

weight 1

notify_down /usr/local/script/mysql.sh #進行資料庫狀態的判斷

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

connect_port 3306

}

}

}

引數說明:

virtual_ipaddress:虛擬IP地址(VIP)

interface :網路卡裝置名稱

virtual_server VIP:及Mysql服務埠

real_server :真實伺服器地址

 

3.4 分別走兩臺mysql資料庫上面建立以下指令碼,用於判斷資料庫的狀態

vim /usr/local/script/mysql.sh

#!/bin/bash

/etc/init.d/keepalived stop

/etc/init.d/keepalived start

 

3.5 keepalived的常用指令碼

啟動keepalived服務:service keepalived start

檢視keepalived服務:service keepalived status

停止keepalived服務:service keepalived stop

 

3.6 進行測試

a) 使用PS命令檢測服務執行狀態

Ps -ef|grep keepalived

Ps -ef|grep mysql

b) 檢視系統日誌,確定keepalived執行正確

less /var/log/message

tail -f /var/log/messages

 

c) ip a檢視keepalived的執行情況

注意事項:先啟動mysql後啟動keepalived。

********************************************************************************************************本文作者:JOHN QQ:1916066696 (請備註資料庫)

ORACLE技術部落格:ORACLE 獵人筆記 http://blog.itpub.net/12679300/

請掃描加微訊號!

 

******************************************************************************************

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1318549/,如需轉載,請註明出處,否則將追究法律責任。

相關文章