您好,登錄后才能下訂單哦!
主從數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)會最終一致(因為mysql復(fù)制是異步的,總會存在延遲),看似解決了單點問題,然而該方案并不完美。因為一旦主服務(wù)器宕機,必須手動把讀寫連接切換到原來的從服務(wù)器上,而這個過程需要時間,短則幾分鐘,長則數(shù)小時,這期間服務(wù)會出于癱瘓狀態(tài)。
怎樣在master宕機后,自動切換數(shù)據(jù)庫連接呢?
????????最簡單的是使用虛擬ip:
????????????????
????????????????
????????????????這里用另外一種方式keepalived:
????????????????????????
????????????????????????
????????????????????????(要注意同一時間只有一個主對外提供服務(wù),另一個處于只讀狀態(tài))
????????????????????????
????????????????????????配置:
????????????????????????????????
????????????????????????????????(指定id增長步長為2,自增id從1開始增長,于是主庫上的id增長就是1、3、5、7、9...? 注意,這參數(shù)修改是針對整個mysql服務(wù)器全局的,而不是針對某個表某個庫的,也就是說,一旦修改后,該服務(wù)器下所有庫表的值都是按照這種方式增加的)
????????????????????????????????
????????????????????????????????(指定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):
????????????????????????????????
????????????????????????????????(注意:在互為主從的兩臺設(shè)備上都要安裝keepalived)
????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
????????????????????????????????最好情況是把主從復(fù)制改為主主復(fù)制,先完成主主復(fù)制配置:
????????????????????????????????????????先修改主服務(wù)器上的配置vi /etc/my.cnf:
????????????????????????????????????????????????
????????????????????????????????????????????????(由于這倆是動態(tài)參數(shù),不需要重啟mysql)
????????????????????????????????????????????????并且在mysql客戶端設(shè)置:
????????????????????????????????????????????????
????????????????????????????????????????????????退出當前mysql客戶端,再進入查看:
????????????????????????????????????????????????
????????????????????????????????????????修改從服務(wù)器上的配置vi /etc/my.cnf:
????????????????????????????????????????????????
????????? ? ????????????????????????????????????(由于這倆是動態(tài)參數(shù),不需要重啟mysql)
????????????????????????????????????????????????并且在mysql客戶端設(shè)置:
????????????????????????????????????????????????
????????????????????????????????????????????????檢查從服務(wù)器的賬號:
????????????????????????????????????????????????
????????????????????????????????????????????????(dba_repl賬號在從服務(wù)器也是存在的)
????????????????????????????????????????????????由于從服務(wù)器出于read_only狀態(tài),沒有寫,所以不用再重新初始化數(shù)據(jù)了,因為它的數(shù)據(jù)和主上是完全一致的,因為它沒有任何寫操作:
????????????????????????????????????????????????
????????????????????????????????????????????????查看從服務(wù)器上的點:
????????????????????????????????????????????????
????????????????????????????????????????在主上change master(主當從,從當主):
????????????????????????????????????????????????
????????????????????????????????????????????????(將master的主服務(wù)器設(shè)置為原來的從服務(wù)器)
????????????????????????????????????????????????啟動復(fù)制鏈路(原來的主服務(wù)器,現(xiàn)在也是從服務(wù)器):
????????????????????????????????????????????????
????????????????????????????????????????????????查看:
????????????????????????????????????????????????
????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 安裝keepalived:
????????????????????????????????????????在兩臺服務(wù)器上都進行安裝:yum install keepalived -y
????????????????????????????????????????查看兩臺config文件:
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????(一定要保障check_mysql.sh腳本有執(zhí)行權(quán)限,兩臺都是)
????????????????????????????????????????啟動兩臺服務(wù)器的keepalived:
????????????????????????????????????????
????????????????????????????????????????查看虛擬ip:
????????????????????????????????????????
????????????????????????????????????????(可能需要幾秒鐘才產(chǎn)生)
????????????????????????????????????????關(guān)掉主服務(wù)器的mysql:
????????????????????????????????????????
????????????????????????????????????????同時主的keepalived也會自動kill,已釋放虛擬ip(vip),它的虛擬ip也會消失:
????????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 而從服務(wù)器上有:
????????????????????????????????????????
????????????????????????????????????????(至此,宕機下的無縫切換完成)
免責聲明:本站發(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)容。