您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用KeepAlived搭建MySQL高可用環境”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
使用KeepAlived搭建MySQL的高可用環境。
首先搭建MySQL的主從復制
在Master開啟binlog,創建復制帳號,
然后在Slave輸入命令
change master to
master_host='192.168.1.70',
master_port=3306,
master_user='xx',
master_password='xx';
然后使用start slave開啟復制。
然后編譯安裝KeepAlived
進入keepalived-1.2.12目錄
然后使用
./configure
make && make install
然后在Master服務器編輯KeepAlived的配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id HA_MySQL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.199
}
}
virtual_server 192.168.1.199 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.1.70 3306 {
weight 3
notify_down /root/shutdown.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
然后編輯Slave的配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id HA_MySQL
}
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.199
}
}
virtual_server 192.168.1.199 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.1.80 3306 {
weight 3
notify_down /root/shutdown.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
其中
priority 表示優先級
virtual_ipaddress 虛擬的IP地址(VIP)
delay_loop 每個2秒檢查一次real_server狀態
notify_down 檢測到服務down后執行的腳本
connect_timeout 連接超時時間
nb_get_retry 重連次數
delay_before_retry 重連間隔時間
connect_port 健康檢查端口
shutdown.sh 可以考慮加入郵件告警的功能。
#!/bin/bash
pkill keepalived
在兩個服務器上啟動MySQL和KeepAlived服務
service mysql start
service keepalived start
Master的server_id為1
Slave的server_id為2
然后 連接VIP的MySQL,可以看到已經連接到了Master服務器(server_id為1)
如果kill掉Master的MySQL,KeepAlived會自動轉移到Slave
在Master服務器上執行
killall mysqld
然后再次查看server_id,
短暫的失去連接之后,再次連接上VIP,server_id已經變為2,說明VIP已經指向了Slave
nopreempt參數表示Master恢復正常之后,是否將VIP繼續指向Master
這樣的話,會再次引發切換。
兩臺服務器的KeepAlived會有心跳檢測,
如果Master的MySQL服務掛了(3306端口掛了),那么他會選擇自殺.
Slave的KeepAlived通過心跳檢測發現這個情況,就會將VIP的請求接管。
KeepAlived還有很多參數沒有明白是什么意思
生產環境的切換腳本,在Slave提升為Master之后,應該等待所有的中繼日志應用完畢,否則可能丟失數據
參考:
http://blog.csdn.net/wzy0623/article/details/38587839
“怎么用KeepAlived搭建MySQL高可用環境”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。