您好,登錄后才能下訂單哦!
主從數據庫服務器的數據會最終一致(因為mysql復制是異步的,總會存在延遲),看似解決了單點問題,然而該方案并不完美。因為一旦主服務器宕機,必須手動把讀寫連接切換到原來的從服務器上,而這個過程需要時間,短則幾分鐘,長則數小時,這期間服務會出于癱瘓狀態。
怎樣在master宕機后,自動切換數據庫連接呢?
????????最簡單的是使用虛擬ip:
????????????????
????????????????
????????????????這里用另外一種方式keepalived:
????????????????????????
????????????????????????
????????????????????????(要注意同一時間只有一個主對外提供服務,另一個處于只讀狀態)
????????????????????????
????????????????????????配置:
????????????????????????????????
????????????????????????????????(指定id增長步長為2,自增id從1開始增長,于是主庫上的id增長就是1、3、5、7、9...? 注意,這參數修改是針對整個mysql服務器全局的,而不是針對某個表某個庫的,也就是說,一旦修改后,該服務器下所有庫表的值都是按照這種方式增加的)
????????????????????????????????
????????????????????????????????(指定id增長步長為2,自增id從2開始增長,于是主庫上的id增長就是2、4、6、8、10...??注意,這參數修改是針對整個mysql服務器全局的,而不是針對某個表某個庫的,也就是說,一旦修改后,該服務器下所有庫表的值都是按照這種方式增加的)
????????????????????????????????(經過上述設置,主備之間的主鍵id增長就不會產生沖突了)
????????????????????????(前面說過innodb的主鍵最好采用自增id的列,而在主主復制中為了避免兩個組同時寫所帶來的主鍵沖突,我們需要修改自增主鍵的配置使兩個自增主鍵按照不同的步長值來增長,當然這是為了以防萬一才采取的配置,當我們使用主主復制時,最安全的方式還是要保障在任意時間均只有一個作為主提供服務,而另一個主只提供只讀)
????????????????????????接下來還要安裝keepalived組件(它可以將兩個設備虛擬成一個設備,對外提供一個虛擬ip,也就是vip):
????????????????????????????????
????????????????????????????????(注意:在互為主從的兩臺設備上都要安裝keepalived)
????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
????????????????????????????????最好情況是把主從復制改為主主復制,先完成主主復制配置:
????????????????????????????????????????先修改主服務器上的配置vi /etc/my.cnf:
????????????????????????????????????????????????
????????????????????????????????????????????????(由于這倆是動態參數,不需要重啟mysql)
????????????????????????????????????????????????并且在mysql客戶端設置:
????????????????????????????????????????????????
????????????????????????????????????????????????退出當前mysql客戶端,再進入查看:
????????????????????????????????????????????????
????????????????????????????????????????修改從服務器上的配置vi /etc/my.cnf:
????????????????????????????????????????????????
????????? ? ????????????????????????????????????(由于這倆是動態參數,不需要重啟mysql)
????????????????????????????????????????????????并且在mysql客戶端設置:
????????????????????????????????????????????????
????????????????????????????????????????????????檢查從服務器的賬號:
????????????????????????????????????????????????
????????????????????????????????????????????????(dba_repl賬號在從服務器也是存在的)
????????????????????????????????????????????????由于從服務器出于read_only狀態,沒有寫,所以不用再重新初始化數據了,因為它的數據和主上是完全一致的,因為它沒有任何寫操作:
????????????????????????????????????????????????
????????????????????????????????????????????????查看從服務器上的點:
????????????????????????????????????????????????
????????????????????????????????????????在主上change master(主當從,從當主):
????????????????????????????????????????????????
????????????????????????????????????????????????(將master的主服務器設置為原來的從服務器)
????????????????????????????????????????????????啟動復制鏈路(原來的主服務器,現在也是從服務器):
????????????????????????????????????????????????
????????????????????????????????????????????????查看:
????????????????????????????????????????????????
????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 安裝keepalived:
????????????????????????????????????????在兩臺服務器上都進行安裝:yum install keepalived -y
????????????????????????????????????????查看兩臺config文件:
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????(一定要保障check_mysql.sh腳本有執行權限,兩臺都是)
????????????????????????????????????????啟動兩臺服務器的keepalived:
????????????????????????????????????????
????????????????????????????????????????查看虛擬ip:
????????????????????????????????????????
????????????????????????????????????????(可能需要幾秒鐘才產生)
????????????????????????????????????????關掉主服務器的mysql:
????????????????????????????????????????
????????????????????????????????????????同時主的keepalived也會自動kill,已釋放虛擬ip(vip),它的虛擬ip也會消失:
????????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 而從服務器上有:
????????????????????????????????????????
????????????????????????????????????????(至此,宕機下的無縫切換完成)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。