亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL數據庫的高可用方案總結

2024-07-24 13:09:18
字體:
來源:轉載
供稿:網友

這篇文章主要針對MySQL數據庫的高可用方案進行詳細總結,高可用架構對于互聯網服務基本是標,本文是對各種方案的總結,感興趣的小伙伴們可以參考一下

高可用架構對于互聯網服務基本是標配,無論是應用服務還是數據庫服務都需要做到高可用。雖然互聯網服務號稱7*24小時不間斷服務,但多多少少有一些時候服務不可用,比如某些時候網頁打不開,百度不能搜索或者無法發微博,發微信等。一般而言,衡量高可用做到什么程度可以通過一年內服務不可用時間作為參考,要做到3個9的可用性,一年內只能累計有8個小時不可服務,而如果要做到5個9的可用性,則一年內只能累計5分鐘服務中斷。所以雖說每個公司都說自己的服務是7*24不間斷的,但實際上能做到5個9的屈指可數,甚至根本做不到,國內互聯網巨頭BAT(百度,阿里巴巴,騰訊)都有因為故障導致的停服問題。對于一個系統而言,可能包含很多模塊,比如前端應用,緩存,數據庫,搜索,消息隊列等,每個模塊都需要做到高可用,才能保證整個系統的高可用。對于數據庫服務而言,高可用可能更復雜,對用戶的服務可用,不僅僅是能訪問,還需要有正確性保證,因此討論數據庫的高可用方案時,一般會同時考慮方案中數據一致性問題。今天這篇文章主要討論MySQL數據庫的高可用方案,介紹每種方案的特性以及優缺點,本文是對各種方案的總結,希望拋磚引玉,和大家一起討論。

1.基于共享存儲的方案SAN

方案介紹:SAN(Storage Area Network)簡單點說就是可以實現網絡中不同服務器的數據共享,共享存儲能夠為數據庫服務器和存儲解耦。使用共享存儲時,服務器能夠正常掛載文件系統并操作,如果服務器掛了,備用服務器可以掛載相同的文件系統,執行需要的恢復操作,然后啟動MySQL。共享存儲的架構如下:

MySQL,數據庫

優點:

1.可以避免存儲外的其它組件引起的數據丟失。

2.部署簡單,切換邏輯簡單,對應用透明。

3.保證主備數據的強一致。

限制或缺點:

1.共享存儲是單點,若共享存儲掛了,則會丟失數據。

2.價格比價昂貴。

2.基于磁盤復制的方案 DRBD

方案介紹:DRBD(Distributed Replicated Block Device)是一種磁盤復制技術,可以獲得和SAN類似的效果。DBRD是一個以linux內核模塊方式實現的塊級別同步復制技術。它通過網卡將主服務器的每個塊復制到另外一個服務器塊設備上,并在主設備提交塊之前記錄下來。DRBD與SAN類似,也是有一個熱備機器,開始提供服務時會使用和故障機器相同的數據,只不過DRBD的數據是復制存儲,不是共享存儲。DRBD的架構圖如下:

MySQL,數據庫

優點:

1.切換對應用透明

2.保證主備數據的強一致。

限制或缺點:

1.影響寫入性能,由于每次寫磁盤,實質都需要同步到網絡服務器。

2.一般配置兩節點同步,可擴展性比較差

3.備庫不能提供讀服務,資源浪費

3.基于主從復制(單點寫)方案

前面討論的兩種方案分別依賴于底層的共享存儲和磁盤復制技術,來解決MYSQL服務器單點和磁盤單點的問題。而實際生產環境中,高可用更多的是依賴MySQL本身的復制,通過復制為Master制作一個或多個熱副本,在Master故障時,將服務切換到熱副本。下面的幾種方案都是基于主從復制的方案,方案由簡單到復雜,功能也越來越強大,實施難度由易到難,各位可以根據實際情況選擇合適的方案。

3.1.keepalived/heartbeat

方案介紹:

keepalived是一個HA軟件,它的作用是檢測服務器(web服務器,DB服務器等)狀態,檢查原理是模擬網絡請求檢測,檢測方式包括HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK等。對于DB服務器而言,主要就是IP,端口(TCP_CHECK),但這可能不夠(比如DB服務器ReadOnly),因此keepalived也支持自定義腳本。keepalived通過監聽來確認服務器的狀態,如果發現服務器故障,則將故障服務器從系統中剔除。keepalived的高可用架構如下圖,分別在主、從服務器上安裝keepalived的軟件,并配置同樣的VIP,VIP層將真實IP屏蔽,應用服務器通過訪問VIP來獲取DB服務。當Master故障時,keepalived感知,并將Slave提升主,繼續提供服務對應用層透明。

MySQL,數據庫

優點:

1. 安裝配置簡單

2. Master故障時,Slave快速切換提供服務,并且對應用透明。

限制或缺點:

1.需要主備的IP在同一個網段。

2.提供的檢測機制比較弱,需要自定義腳本來確定Master是否能提供服務,比如更新心跳表等。

3.無法保證數據的一致性,原生的MySQL采用異步復制,若Master故障,Slave數據可能不是最新,導致數據丟失,因此切換時要考慮Slave延遲的因素,確定切換策略。對于強一致需求的場景,可以開啟(semi-sync)半同步,來減少數據丟失。

4.keepalived軟件自身的HA無法保證。

3.2.MHA

方案介紹:MHA(Master High Availability)是一位日本MySQL大牛用Perl寫的一套MySQL故障切換方案,來保證數據庫的高可用,MHA通過從宕機的主服務器上保存二進制日志來進行回補,能在最大程度上減少數據丟失。MHA由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。MHA可以單獨部署在一臺獨立的機器上管理多個master-slave集群,MHA Node運行在每臺MySQL服務器上,主要作用是切換時處理二進制日志,確保切換盡量少丟數據。MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然后將所有其他的slave重新指向新的master,整個故障轉移過程對應用程序完全透明。MHA的架構如下:

MySQL,數據庫

MHA failover過程:

a.檢測到 Master 異常,進行一系列判斷,最后確定 Master 宕掉;

b.檢查配置信息,羅列出當前架構中各節點的狀態;

c.根據定義的腳本處理故障的 Master,VIP漂移或者關掉mysqld服務;

d.所有 Slave 比較位點,選出位點最新的 Slave,再與 Master 比較并獲得 binlog 的差異,copy 到管理節點;

e.從候選節點中選擇新的 Master,新的 Master 會和位點最新的 Slave 進行比較并獲得 relaylog 的差異;

f.管理節點把 binlog 的差異 copy 到新 Master,新 Master 應用 binlog 差異和 relaylog 差異,最后獲得位點信息,并接受寫請求(read_only=0);

g.其他 Slave 與位點最新的 Slave 進行比較,并獲得 relaylog 的差異,copy 到對應的 Slave;

h.管理節點把 binlog 的差異 copy 到每個 Slave,比較 Exec_Master_Log_Pos 和 Read_Master_Log_Pos,獲得差異日志;

i.每個Slave應用所有差異日志,然后 reset slave 并重新指向新 Master;

j.新 Master reset slave 來清除 Slave 信息。

優點:

1. 代碼開源,方便結合業務場景二次開發

2. 故障切換時,可以修復多個Slave之間的差異日志,最終使所有Slave保持數據一致,然后從中選擇一個充當新的Master,并將其它Slave指向它。

3. 可以靈活選擇VIP方案或者全局目錄數據庫方案(更改Master IP映射)來進行切換。

缺點:

1.無法保證強一致,因為從故障Master上保存二進制日志并不總是可行,比如Master磁盤壞了,或者SSH認證失敗等。

2.只支持一主多從架構,要求一個復制集群中必須最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫。

3.采用全局目錄數據庫方案切換時,需要應用感知變化,因此對應用不透明,因此要保持切換對應用透明,依然依賴于VIP。

4.不適用于大規模集群部署,配置比較復雜。

5.MHA管理節點本身的HA無法保證。

3.3.基于zookeeper的高可用

方案介紹:

從前面的討論可以看到,無論是keepalived方案還是MHA方案,都無法解決HA軟件自身的高可用問題,因為HA本身是單點。那么如果將HA也引入多個副本呢?那么又帶來新的問題,1.HA軟件之間如何保證強同步。2.如何確保不會有多個HA同時進行切換動作。這兩個問題實質都分布式系統一致性問題,為此,可以為HA軟件引入類似Paxos,Raft這樣的分布式一致性協議,保證HA軟件的可用性。zooKeeper是一個典型的發布/訂閱模式的分布式數據管理與協調框架,通過zookeeper中豐富的數據節點類型進行交叉使用,配合watcher事件通知機制,可以方便地構建一系列分布式應用涉及的核心功能,比如:數據發布/訂閱,負載均衡,分布式協調/通知,集群管理,Master選舉,分布式鎖和分布式隊列等。zookeeper是一個很大話題,大家可以google去找更多的信息,我這里主要討論zookeeper如何解決HA自身可用性問題。架構圖如下:

MySQL,數據庫

圖中每個MySQL節點上面部署了一個HA client,用于實時向zookeeper匯報本地節點的心跳狀態,比如主庫crash,通過修改zookeeper(以下簡稱zk)上的節點信息,來通知HA。HA節點在zk上注冊監聽事件,當zk節點發生變化時會自動讓HA感知,HA節點可以部署一個或多個,主要用于容災。HA節點之間通過zookeeper服務來實現數據的一致性,通過分布式鎖保證多個HA節點不會同時對一個主從節點進行切換。HA本身是無狀態的,所有MySQL節點狀態信息全部保存在zookeeper服務器上,切換時,HA會對MySQL節點進行復檢,然后切換。我們看看引入zookeeper后的切換流程:

a.HA client 檢測到 Master 異常,進行一系列判斷,最后確定 Master 宕掉;

b.HA client 刪除 Master在zk上的節點信息;

c.由于監聽機制,HA會感知到有節點被刪除;

d.HA對MySQL節點進行復檢,比如建立連接,更新心跳表等

e.確認異常后,則進行切換。

我們再看看這種架構下,是否能保證HA自身的高可用

(1).如果HA-client本身掛了,MySQL節點正常?

HA-Client管理的MySQL節點無法與zookeeper保持心跳,zk服務將節點刪除,HA會感知到這種變化,準備嘗試一次切換,切換前,會進行復檢,復檢時發現MySQL節點是OK的,則不會切換。

(2).MySQL節點與zookeeper的網絡斷了,那么表現如何?

由于HA-Client與節點在同一臺主機,因此HA-client無法再定時向zk匯報心跳,zk會將對應的MySQL節點信息刪除,HA嘗試復檢,依然失敗,則進行切換。

(3).HA掛了,表現如何?

由于HA無狀態,并且有多個副本,因此一個HA掛了,不會對整個系統造成影響。

優點:

1. 保證了整個系統的高可用

2. 主從的強一致依賴于MySQL本身,比如半同步,或者外圍工具的回補策略,類似MHA。

3. 擴展性非常好,可以管理大規模集群。

缺點:

1.引入zk,整個系統變得復雜。

4.基于Cluster(多點寫)方案

第3節討論的方案基本是目前業內使用的主流方案,這類方案的特點是,單點寫。雖然我們可以借助中間件進行分片(sharding),但是對于同一份數據,依然只允許一個節點寫,從這個角度來說,上面的方案是偽分布式。下面討論的兩種方案算是真正分布式,同一個數據理論上可以在多個節點寫入,類似于Oracle的RAC,EMC的GreenPlum這種分布式數據庫。在MySQL領域,主要提供了2種解決方案:基于Galera的PXC和NDB Cluster。MySQL Cluster實現基于NDB存儲引擎,使用很多局限性,而PXC是基于innodb引擎,雖然也有局限性,但由于目前innodb使用非常廣泛,所以有一定的參考價值。目前據我所知,去哪兒公司在他們的生產環境中使用了PXC方案。PXC(Percona XtraDB Cluster)的架構圖如下:

MySQL,數據庫

優點:

1.準同步復制

2.多個可同時讀寫節點,可實現寫擴展,較分片方案更進一步

3.自動節點管理

4.數據嚴格一致

5.服務高可用

缺點:

1.只支持innodb引擎

2.所有表都要有主鍵

3.由于寫要同步到其它節點,存在寫擴大問題

4.非常依賴于網絡穩定性,不適用于遠距離同步

5.基于中間件proxy的方案

準確地來說,中間件與高可用沒有特別大的關系,因為切換都是在數據庫層完成,但引入中間層后,使得對應用更透明。在引入中間件之前,所有的方案,基本都依賴于VIP漂移機制,或者不依賴于VIP又不能保證對應用透明。通過加入中間件層,可以同時實現對應用透明和高可用。此外中間層還可以做sharding,方便寫擴展。proxy的方案很多,比如mysql自帶的mysql-proxy和fabric,阿里巴巴的cobar和tddl等。我們以fabric為例,其架構圖如下:

MySQL,數據庫

應用都請求 Fabric 連接器,然后通過使用 XML-RPC 協議訪問 Fabric 節點, Fabric 節點依賴于備用存儲 (backing store),里面存儲整個 HA 集群的元數據信息。連接器讀取 backing store 的信息,然后將元數據緩存到 cache,這樣做的好處就是減少每次建立連接時與管理節點交互所帶來的開銷。Fabric 節點可管理多個 HA Group,每個 HA Group 里有一個 Primary 和多個 Secondary(slave),當 Primary 異常的時候會從 Secondary 中選出最合適的節點提升為新 Primary,其余 Secondary 都將重新指向新 Primary。這些都是自動操作,對業務是無感知的,HA 切換之后還需要通知連接器更新的元數據信息。

優點:

1.切換對應用透明

2.可擴展性強,方便分片擴展

3.可以跨機房部署切換

缺點:

1.是一個比較新的組件,沒有很多實際應用場景

2.沒有解決強一致問題,主備強一致性依賴于MySQL自身(半同步),以及回滾回補機制。

總結

以上介紹了目前MySQL幾種典型的高可用架構,包括基于共享存儲方案,基于磁盤復制方案和基于主從復制的方案。對于主從復制方案,分別介紹了keepalived,MHA以及引入zookeeper的方案。對于每種方案,都從持續可用,數據強一致性,以及切換對應用的透明性進行說明。個人覺得基于MySQL復制的方案是主流,也非常成熟,引入中間件和引入zookeeper雖然能將系統的可用性做地更好,可支撐的規模更大,但也對研發和運維也提出了更高的要求。因此,在選擇方案時,要根據業務場景和運維規模做抉擇。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜美女久久久久爽久久| 亚洲第一二三四五区| 欧美性猛交丰臀xxxxx网站| 国产精品美女www爽爽爽视频| 国产精品丝袜一区二区三区| 精品日韩美女的视频高清| 国产精品91在线| 久热在线中文字幕色999舞| 92国产精品久久久久首页| 欧美大秀在线观看| 亚洲精品不卡在线| 国产美女高潮久久白浆| 欧亚精品中文字幕| 亚洲国产中文字幕在线观看| 欧美精品手机在线| 欧美日韩精品中文字幕| 中文字幕欧美精品日韩中文字幕| 日韩精品视频免费| 亚洲第五色综合网| 国产午夜精品视频| 欧美猛少妇色xxxxx| 欧美成aaa人片免费看| 日韩亚洲欧美成人| 日韩av网址在线观看| 一区二区av在线| 国产亚洲aⅴaaaaaa毛片| 欧美视频在线视频| 亚洲欧洲免费视频| 国产精品青青在线观看爽香蕉| 日韩国产欧美精品一区二区三区| 另类美女黄大片| 亚洲欧美国产一本综合首页| 91在线播放国产| 亚洲国产精品女人久久久| 成人信息集中地欧美| 97在线视频免费观看| 亚洲成人精品视频在线观看| 国产在线999| 欧美激情视频播放| 原创国产精品91| 国内久久久精品| 韩日精品中文字幕| 色yeye香蕉凹凸一区二区av| 亚洲视频日韩精品| 午夜精品99久久免费| 亚洲欧洲自拍偷拍| 欧美成人国产va精品日本一级| 久久久噜噜噜久久| 日韩精品丝袜在线| 日韩精品有码在线观看| 亚洲淫片在线视频| 日韩精品在线免费播放| 日本精品免费一区二区三区| 成人乱人伦精品视频在线观看| 91精品视频在线免费观看| 国产精品久久久久久av福利| 2019中文在线观看| 中文在线资源观看视频网站免费不卡| 91精品视频在线播放| 国产精品视频大全| 精品久久久视频| 欧美大全免费观看电视剧大泉洋| 中文字幕成人精品久久不卡| 国产福利精品在线| 色综合男人天堂| 亚洲最新视频在线| 久久五月天综合| 亚洲午夜av久久乱码| 日韩中文字幕网| 日本三级久久久| 久久久久久久久久久国产| 亚洲电影av在线| 日韩欧美在线播放| 日韩av免费一区| 日韩一区二区av| 欧洲永久精品大片ww免费漫画| 亚洲自拍偷拍第一页| 成人在线国产精品| 欧美激情在线播放| 亚洲天堂av综合网| 国产精品高潮呻吟久久av野狼| 国产精品高精视频免费| 91久久久久久国产精品| 久久成年人免费电影| 亚洲欧美成人在线| 国产亚洲人成a一在线v站| 国产精品视频区1| 日韩成人中文字幕| 国外色69视频在线观看| 亚洲综合中文字幕在线观看| 国产精品普通话| 欧美巨猛xxxx猛交黑人97人| 91精品国产91久久久久久最新| 国产欧美日韩丝袜精品一区| 精品香蕉在线观看视频一| 2021久久精品国产99国产精品| 欧美极品美女电影一区| 亚洲风情亚aⅴ在线发布| 97视频在线看| 九色精品美女在线| 91禁国产网站| 欧美一区二区.| 欧美成人激情图片网| 18久久久久久| 97av视频在线| 激情成人中文字幕| 国产三级精品网站| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品中文字幕有码专区| 亚洲国产精品电影在线观看| 亚洲国产精彩中文乱码av在线播放| 成人在线播放av| 久久久久久久影视| 日韩av男人的天堂| 亚洲国产精品99久久| 亚洲欧美精品一区二区| 亚洲免费电影在线观看| 国产成人精品一区二区在线| 日本sm极度另类视频| 亚洲国产精品悠悠久久琪琪| 高跟丝袜一区二区三区| 在线中文字幕日韩| 国产精品视频自拍| 日韩av在线免费| 国产情人节一区| 精品久久久香蕉免费精品视频| 久久人人爽人人爽人人片亚洲| 中文字幕精品一区久久久久| 成人精品在线视频| 亚洲成人性视频| 一本一本久久a久久精品综合小说| 92裸体在线视频网站| 日本精品一区二区三区在线播放视频| www.久久草.com| 91在线观看免费| 久久精品国产久精国产思思| 成人精品一区二区三区电影黑人| 法国裸体一区二区| 日韩欧美在线观看| 日韩最新中文字幕电影免费看| 一级做a爰片久久毛片美女图片| 欧美精品中文字幕一区| 成人激情电影一区二区| 欧美亚洲成人精品| 欧美成人精品一区| 欧美激情第三页| 国产91在线播放九色快色| 国产91色在线免费| 伊人久久久久久久久久久久久| 91精品国产综合久久香蕉922| 国产一区二区三区在线观看网站| 精品国产精品自拍| 亚洲国产日韩欧美在线动漫| 欧美影院成年免费版| 97超级碰碰碰久久久| 欧美午夜丰满在线18影院| 日韩av片免费在线观看| 欧美成人一区在线| 亚洲国产日韩欧美综合久久| 欧美性资源免费| 国产美女精品视频| 亚洲人午夜色婷婷| 美日韩精品视频免费看| 日韩电影大片中文字幕|