溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

高可用keepalived實例

發(fā)布時間:2020-06-23 22:09:34 來源:網(wǎng)絡(luò) 閱讀:324 作者:梁十八 欄目:MySQL數(shù)據(jù)庫

高可用keepalived實例

主從數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)會最終一致(因為mysql復(fù)制是異步的,總會存在延遲),看似解決了單點問題,然而該方案并不完美。因為一旦主服務(wù)器宕機,必須手動把讀寫連接切換到原來的從服務(wù)器上,而這個過程需要時間,短則幾分鐘,長則數(shù)小時,這期間服務(wù)會出于癱瘓狀態(tài)。


怎樣在master宕機后,自動切換數(shù)據(jù)庫連接呢?

????????最簡單的是使用虛擬ip:

????????????????高可用keepalived實例

????????????????高可用keepalived實例

????????????????這里用另外一種方式keepalived:

????????????????????????高可用keepalived實例

????????????????????????高可用keepalived實例

????????????????????????(要注意同一時間只有一個主對外提供服務(wù),另一個處于只讀狀態(tài))

????????????????????????高可用keepalived實例

????????????????????????配置:

????????????????????????????????高可用keepalived實例

????????????????????????????????(指定id增長步長為2,自增id從1開始增長,于是主庫上的id增長就是1、3、5、7、9...? 注意,這參數(shù)修改是針對整個mysql服務(wù)器全局的,而不是針對某個表某個庫的,也就是說,一旦修改后,該服務(wù)器下所有庫表的值都是按照這種方式增加的

????????????????????????????????高可用keepalived實例

????????????????????????????????(指定id增長步長為2,自增id從2開始增長,于是主庫上的id增長就是2、4、6、8、10...??注意,這參數(shù)修改是針對整個mysql服務(wù)器全局的,而不是針對某個表某個庫的,也就是說,一旦修改后,該服務(wù)器下所有庫表的值都是按照這種方式增加的

????????????????????????????????(經(jīng)過上述設(shè)置,主備之間的主鍵id增長就不會產(chǎn)生沖突了)

????????????????????????(前面說過innodb的主鍵最好采用自增id的列,而在主主復(fù)制中為了避免兩個組同時寫所帶來的主鍵沖突,我們需要修改自增主鍵的配置使兩個自增主鍵按照不同的步長值來增長,當然這是為了以防萬一才采取的配置,當我們使用主主復(fù)制時,最安全的方式還是要保障在任意時間均只有一個作為主提供服務(wù),而另一個主只提供只讀)

????????????????????????接下來還要安裝keepalived組件(它可以將兩個設(shè)備虛擬成一個設(shè)備,對外提供一個虛擬ip,也就是vip):

????????????????????????????????高可用keepalived實例

????????????????????????????????(注意:在互為主從的兩臺設(shè)備上都要安裝keepalived)

????????????????????????????????高可用keepalived實例

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

????????????????????????????????最好情況是把主從復(fù)制改為主主復(fù)制,先完成主主復(fù)制配置:

????????????????????????????????????????先修改主服務(wù)器上的配置vi /etc/my.cnf:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????(由于這倆是動態(tài)參數(shù),不需要重啟mysql)

????????????????????????????????????????????????并且在mysql客戶端設(shè)置:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????退出當前mysql客戶端,再進入查看:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????修改從服務(wù)器上的配置vi /etc/my.cnf:

????????????????????????????????????????????????高可用keepalived實例

????????? ? ????????????????????????????????????(由于這倆是動態(tài)參數(shù),不需要重啟mysql)

????????????????????????????????????????????????并且在mysql客戶端設(shè)置:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????檢查從服務(wù)器的賬號:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????(dba_repl賬號在從服務(wù)器也是存在的)

????????????????????????????????????????????????由于從服務(wù)器出于read_only狀態(tài),沒有寫,所以不用再重新初始化數(shù)據(jù)了,因為它的數(shù)據(jù)和主上是完全一致的,因為它沒有任何寫操作:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????查看從服務(wù)器上的點:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????在主上change master(主當從,從當主):

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????(將master的主服務(wù)器設(shè)置為原來的從服務(wù)器)

????????????????????????????????????????????????啟動復(fù)制鏈路(原來的主服務(wù)器,現(xiàn)在也是從服務(wù)器):

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????????????查看:

????????????????????????????????????????????????高可用keepalived實例

????????????????????????????????

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 安裝keepalived:

????????????????????????????????????????在兩臺服務(wù)器上都進行安裝:yum install keepalived -y

????????????????????????????????????????查看兩臺config文件:

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????(一定要保障check_mysql.sh腳本有執(zhí)行權(quán)限,兩臺都是)

????????????????????????????????????????啟動兩臺服務(wù)器的keepalived:

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????查看虛擬ip:

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????(可能需要幾秒鐘才產(chǎn)生)

????????????????????????????????????????關(guān)掉主服務(wù)器的mysql:

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????同時主的keepalived也會自動kill,已釋放虛擬ip(vip),它的虛擬ip也會消失:

????????????????????????????????????????高可用keepalived實例

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 而從服務(wù)器上有:

????????????????????????????????????????高可用keepalived實例

????????????????????????????????????????(至此,宕機下的無縫切換完成)

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI