1. 程式人生 > >企業中MySQL高可用叢集架構三部曲之MM+keepalived

企業中MySQL高可用叢集架構三部曲之MM+keepalived

各位老鐵們,老張與大家又見面了。看到各位在部落格裡面給我的留言和訪問量的情況,我很是欣慰,也謝謝大家對我的認可。我寫這些部落格,就是想把自己對於MySQL資料庫的一些看法和自己平時的實戰經驗分享出來,我們可以一起探討,共同進步。也保證今後只要一有空就更新博文,推出更多的乾貨。

我的學生經常對我說:“張老師,每次我遇到報錯,有時還是會百度,但是最煩的是不知道百度哪篇帖子說的是正確的".其實這些呢,都是因為自己還沒有對MySQL資料庫核心知識的不熟悉,和對技術掌握的不牢固。平時下得功夫還是不到位。我們做技術這個行業,還是需要自己給自己加發條,促使自己每天都要學習一些新的知識。理論配合實驗一起,先要學會多問自己幾個問題,一個實驗多做幾遍,可能會得到不同的實驗效果。學習知識要踏實下來,學會多做實驗總結。我想今後再遇到報錯,可能自己就會有一個清晰的解題思路,這個需要一定時間的磨練。

也有人經常問Oracle和MySQL到底有啥區別,其實MySQL資料庫上手很簡單,難的是後期架構的設計與維護。老張三部曲中第一部曲MHA希望對大家在線上部署方面有幫助。

今兒給大家介紹第二部曲,MM+keepalived的環境部署,我們會多種資料庫的架構就可以靈活應用到我們的公司。根據公司業務的不同,選擇合適的叢集架構。

MM+keepalived 

簡介

雙主配合keepalived這種架構設計,也是基於主從複製的原理而搭建的。

使用MySQL主主複製技術+Keepalived是一種簡單、便捷的解決方案,在高可用叢集環境中,keepalived使用VIP,使用Keepalived自帶的服務監控功能和自定義指令碼來實現MySQL故障時自動切換,非常靈活。

應用範圍:

一般中小型公司都使用這種架構,搭建比較方便簡單;

可以採用主從或者主主模式,在 master 節點發生故障後,利用 keepalived 高可用機制實現快速切換到 slave 節點。原來的從庫變成新的主庫。

個人建議:

  1. 一定要完善好切換指令碼,keepalived 的切換機制要合理,避免切換不成功的現象發生。

  2. 從庫的配置儘快要與主庫一致,不能太次;避免主庫宕機發生切換,新的主庫(原來的從庫)影響線上業務進行。

  3. 對於延遲的問題,在這套架構中,也不能避免。可以使用 mysql 5.7 中增強半同步完成。也可以改變架構使用 PXC,完成時時同步功能,基本上沒有延遲;

  4. keepalived 無法解決腦裂的問題,因此在進行服務異常判斷時,可以修改我們的判斷指令碼,通過對第三方節點補充檢測來決定是否進行切換,可降低腦裂問題產生的風險。

  5. 採用 keepalived 這個架構,在設定兩節點狀態時,都要設定成不搶佔模式,都是 backup 狀態,通過優先順序,來決定誰是主庫。避免腦裂,衝突現象發生。

  6. 安裝好 mysql 需要的一些依賴包;建議配置好 yum 源,用 yum 安裝 keepalived 即可。

搭建架構之前理清思路:

  1. 首先需要裝有兩臺mysql的資料庫伺服器,兩者之間互為主從模式,都可讀寫。其實就只有一臺伺服器A負責資料的寫入工作,而另一臺伺服器B作為我們的備用資料庫;

  2. 安裝keepalived的軟體包,個人建議使用yum安裝就可以,很方便。當然我們要知道yum安裝之後的軟體路徑在什麼位置。

  3. 整理好keepalived的配置檔案,理清keepalived的三種狀態資訊。還要準備一個監控MySQL的指令碼,便於檢測到宕機順利發生切換的過程。

  4. 所有提供服務的從伺服器與備用伺服器B進行主從同步。----雙主從庫模式

  5. 在兩臺伺服器A和B,當配置keepalived的引數檔案中,要注意兩臺機器都要採用backup這種狀態,就是nopreempt這種非搶佔模式,避免出現衝突,發生腦裂現象。

架構圖展示:

wKiom1mCcHHAUxQIAAGScC2ikf8025.png-wh_50

實驗部署環境介紹:

192.168.56.100 主 ---master1

192.168.56.101 備庫---master2

都是乾淨環境沒有任何資料

VIP:192.168.56.111

MySQL資料庫版本5.7.14,採用GTID模式搭建主從環境

注意事項:

  1. 兩臺機器的防火牆必須是關閉狀態。

  2. 兩臺MySQL資料庫配置檔案中server-id絕對不能一樣,要不會報1593這個主從同步的錯誤,導致搭建不成功。

實戰開始:

首先先要搭建兩臺MySQL資料庫為互為主從的架構模式。

wKioL1mCgpTBXqzwAAAplAqB9IU821.png-wh_50

新增主從同步賬號:

在192.168.56.100:

grant replication slave on *.* to 'bak'@'192.168.56.%' identified by '123456';

flush privileges;

在192.168.56.101:

grant replication slave on *.* to 'bak'@'192.168.56.%' identified by '123456';

flush privileges;

配置同步資訊:

先在192.168.56.101上:

CHANGE MASTER TO MASTER_HOST='192.168.56.100',MASTER_USER='bak',MASTER_PASSWORD='123456',master_auto_position=1;

開啟主從同步開關:

start slave;

檢視主從同步狀態:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

相關推薦

企業MySQL可用叢集架構三部曲MM+keepalived

各位老鐵們,老張與大家又見面了。看到各位在部落格裡面給我的留言和訪問量的情況,我很是欣慰,也謝謝大家對我的認可。我寫這些部落格,就是想把自己對於MySQL資料庫的一些看法和自己平時的實戰經驗分享出來,我們可以一起探討,共同進步。也保證今後只要一有空就更新博文,推出更多

MySQL 可用叢集架構 MHA 詳解

MHA(Master HighAvailability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟體。在MySQL故障

FastDFS可用叢集架構配置搭建

  一、基本模組及高可用架構 FastDFS 是餘慶老師開發的一個開源的高效能分散式檔案系統(DFS)。 它的主要功能包括:檔案儲存,檔案同步和檔案訪問,以及高容量和負載平衡。 FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、儲存伺服器(St

K8S可用叢集架構實現

  Kubernetes作為近幾年最具顛覆性的容器編排技術,廣泛應用與企業的生產環境中,相較於前幾年的docker-swarm的編排方式,Kubernetes無疑是站在一個更高的角度對容器進行管理,方便日後專案的普適性,容易對架構進行擴充套件。   生產環境下更注重於叢集的高可用,不

配置MySQL可用叢集MHA

配置MySQL高可用叢集+++++++++++++++++++主機角色 :客戶端 client50資料庫伺服器 mysql51 到 mysql55管理主機 mgm56VIP地址 192.168.4.100拓撲結構: client50 | mysql51主 |

MHA-Atlas-MYSQL可用叢集

一,mysql-mha環境準備   1.1 準備三臺虛擬機器 主機名 IP地址 描述 MySQL-Master 192.168.200.130 CentOS6.5  安裝mysql5.6 My

MHA-Atlas-MySQL可用叢集主機名對映

    主機名對映   [[email protected] ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdoma

Linux系統——MHA-Atlas-MySQL可用叢集

MHA MHA介紹MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟體。在MySQL故障切換過程中,MHA能做到0~30秒之內自動完成資料庫的故障切換操作,並且在進行故障切換過程中

搭建PXC叢集,實現MySQL可用叢集

Percona XtraDB Cluster(下文簡稱PXC叢集)提供了MySQL高可用的一種實現方法。PXC叢集以節點組成(推薦至少3節點,便於故障恢復),每個節點都是基於常規的 MySQL/Percona Server,意味著你可以從叢集中分離出某節點單獨使用。叢集中每個

專案Mysql可用方案

最近又上線了一個大專案,其中mysql採用的高可用方案如下,用作後續學習 本次專案,mysql部署3臺主機,採用主從模式,總共三個結點,主節點後掛一個從節點,從節點後再掛一個從節點,即主-從-備的結構。 採用keepalived虛擬vip,當主結點掛了後,ke

Linux叢集Keepalived—Nginx可用叢集架構搭建

叢集介紹Linux叢集根據功能劃分為兩大類:高可用和負載均衡。高可用叢集高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。實現高可用的開源軟體有:heartbeat、Keepalived,其中heartbeat已無人維護,所

Corosync+Pacemaker+NFS+Mysql可用叢集部署

Corosync+Pacemaker+NFS+Mysql高可用叢集部署(使用資源管理工具crmsh配置) 框架:crmsh(Corosync+pacemaker)+nfs+mysql 叢集節點1:192.168.88.132 cen7.field.com 叢集節點2:1

MySql可用叢集搭建

前言 傳統mysql高可用叢集都是建立在mysql主從同步複製基礎上的,利用mysql原生的同步技術,搭配叢集管理元件,以及對外輸

可用叢集corosync+pacemakercrmsh使用(一)

  上一篇部落格我們聊了下高可用叢集corosync+pacemaker的相關概念以及corosync的配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13585921.html;今天我們來說一下corosync+pacemaker高可用叢集的配置工具crmsh安裝

可用叢集corosync+pacemakercrmsh使用(二)

  上一篇部落格我們聊到了crmsh的安裝以及配置一個資源到corosync+pacemaker高可用叢集上的相關命令的用法,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13592484.html;今天我們繼續來說crmsh的其他常用命令的用法;   node常用命令

RHCS叢集架構實現mysql可用

關於一些基本配置參考上一篇關於niginx的高可用 目前的作業系統為rhel6.5   server1 172.25.12.1 server2 172.25.12.2 server4 172.25.12.4 yum源需要新增高可用套件 [rhel-source

MySQL 可用集群架構 MHA

mha 集群MHA(Master HighAvailability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做

MySQL可用架構MHA

mysql1、關於MHAMHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了automating master failover功能。MHA在監控到master節點故障時,會提升其中擁有的最新數據的slave節點成為新的master節點,在此期間,MHA會通過其它從

Azure環境Nginx可用性和部署架構設計

基於 google ogl soft 可用性 pan googl 環境 keep 前幾篇文章介紹了Nginx的應用、動態路由、配置。在實際生產環境部署時,我們需要同時考慮Nginx的高可用性和部署架構。 Nginx自身不支持集群以保證自身的高可用性,商業版本的Nginx+

MySQL】【可用】基於MHA架構MySQL可用故障自動切換架構

bin candidate nlog repo sage $1 內容 data from 基於MHA架構的MySQL高可用切換架構 環境: ? CentOS7+MySQL 5.7 + GTID 業務系統:mainBusiness ? nod