利用Keepalived構建MySQL主主複製
概述:
MySQL-HA有很多的實現方案,比較常見的是master+keepalived來實現MySQL-HA,來進行實現;兩台MySQL互為主從關係,通過Keepalived配置虛擬IP,實現當其中的一台MySQL資料庫宕機後,應用能夠自動切換到另外一台MySQL資料庫,保證系統的高可用;在實際的生產環境中,也是通過這個方案來部署的,相信應該有值得借鑒的地方;
2.環境說明
搭建MySQL的主主複製步驟(請看連結 )
主機名稱 |
IP地址 |
虛擬ip(VIP) |
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
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。
Ubuntu下Nginx做負載實現高效能WEB伺服器5---MySQL主主同步
生產環境MySQL主主同步主鍵衝突處理
MySQL主從失敗 錯誤Got fatal error 1236
MySQL主從複製,單台伺服器上實施
搭建MySQLProxy 伺服器實現讀寫分離+主從同步
MySQL 5.5 主從雙向同步
MySQL 5.5主從同步排錯
MySQL主從複製非同步半同步執行個體
本文永久更新連結地址: