自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】探索MySQL高可用架構(gòu)之MHA(概念和架構(gòu)篇)

數(shù)據(jù)庫 MySQL 數(shù)據(jù)庫運維
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現(xiàn)就職于 Facebook公司)開發(fā),是一套優(yōu)秀的作為MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在 0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達到真正意義上的高可用。
 本文出自51CTO博客博主走不完的路,看不完的書!
,如有任何問題請進入博主頁面互動討論。

博文地址:http://51power.blog.51cto.com/3549599/1664138

什么是高可用性?

很多公司的服務(wù)都是24小時*365天不間斷的。比如Call Center。這就要求高可用性。再比如購物網(wǎng)站,必須隨時都可以交易。那么當購物網(wǎng)的server掛了一個的時候,不能對業(yè)務(wù)產(chǎn)生任何影響。這就是高可用性。

如何處理failover?

解釋failover,意思就是當服務(wù)器down掉,或者出現(xiàn)錯誤的時候,可以自動的切換到其他待命的服務(wù)器,不影響服務(wù)器上App的運行。

以MySQL為例,什么樣的架構(gòu)才能保證其高可用性呢?

MySQL replication with manual failover

同步數(shù)據(jù)是采用MySQL replication的方法,在MySQL分表分塊到主從已經(jīng)解釋。簡單的說就是從庫根據(jù)主庫的日志來做相應(yīng)的處理,保證數(shù)據(jù)的一致。通常還配合MySQL Proxy或Amoeba等進行讀寫分離減少服務(wù)器壓力。

manual failover,顯然當Master掛掉時,利用本方式是需要手動來處理failover,一般來說是將slave更改為server。

Master-Master with MMM manager(Multi-Master Replication Manager)

同步數(shù)據(jù)的方式是Multi-Master Replication Manager,在MySQL分表分塊到主從解釋,多主多從的設(shè)置,是一個loop環(huán)形,每個DB既是前一個DB的Slave又是后一個的Master。優(yōu)勢就在于,一個Master掛掉,也還可以繼續(xù)DB操作。每個DB都可以進行讀寫,分散壓力。

Heartbeat/SAN

處理failover的方式是Heartbeat,Heartbeat可以看成是一組程序,監(jiān)控管理各個node間連接的網(wǎng)絡(luò)。當node出現(xiàn)錯誤時,自動啟動其他node開始服務(wù)。Heartbeat必須解決的一個問題就是split brain,在網(wǎng)絡(luò)中的一個node down掉后,每個node都會認為其他node down掉并嘗試開始服務(wù),因為產(chǎn)生數(shù)據(jù)沖突。

通過SAN來共享數(shù)據(jù)

SAN:Storage Area Network,是一種LAN來處理大數(shù)據(jù)量的傳輸,提供了計算機和存儲系統(tǒng)之間的數(shù)據(jù)傳輸。各個計算機組成的集群可以通過SAN共享存儲。

Heartbeat/DRBD

處理failover的方式依舊是Heartbeat。

同步數(shù)據(jù)使用DRBD:Distributed Replicated Block Device(DRBD)是一個用軟件實現(xiàn)的、無共享的、服務(wù)器之間鏡像塊設(shè)備內(nèi)容的存儲復(fù)制解決方案。和SAN網(wǎng)絡(luò)不同,它并不共享存儲,而是通過服務(wù)器之間的網(wǎng)絡(luò)復(fù)制數(shù)據(jù)。

MySQL Cluster

MySQL Cluster也是由各個DB node組成一個cluster,在這個cluster中由網(wǎng)絡(luò)連接??梢宰杂傻脑鰷pnode的個數(shù)來對應(yīng)數(shù)據(jù)庫壓力。

MySQL高可用性大殺器之MHA

MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現(xiàn)就職于 Facebook公司)開發(fā),是一套優(yōu)秀的作為MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在 0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達到真正意義上的高可用。

該軟件由兩部分組成:MHA Manager(管理節(jié)點)和MHA Node(數(shù)據(jù)節(jié)點)。MHA Manager可以單獨部署在一臺獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節(jié)點上。MHA Node運行在每臺MySQL服務(wù)器上,MHA Manager會定時探測集群中的master節(jié)點,當master出現(xiàn)故障時,它可以自動將最新數(shù)據(jù)的slave提升為新的master,然后將所有其 他的slave重新指向新的master。整個故障轉(zhuǎn)移過程對應(yīng)用程序完全透明。

在 MHA自動故障切換過程中,MHA試圖從宕機的主服務(wù)器上保存二進制日志,最大程度的保證數(shù)據(jù)的不丟失,但這并不總是可行的。例如,如果主服務(wù)器 硬件故障或無法通過ssh訪問,MHA沒法保存二進制日志,只進行故障轉(zhuǎn)移而丟失了最新的數(shù)據(jù)。使用MySQL 5.5的半同步復(fù)制,可以大大降低數(shù)據(jù)丟失的風(fēng)險。MHA可以與半同步復(fù)制結(jié)合起來。如果只有一個slave已經(jīng)收到了最新的二進制日志,MHA可以將最 新的二進制日志應(yīng)用于其他所有的slave服務(wù)器上,因此可以保證所有節(jié)點的數(shù)據(jù)一致性。

目前MHA主要支持一主多從的架構(gòu),要搭建MHA,要求一個復(fù)制集群中必須最少有三臺數(shù)據(jù)庫服務(wù)器,一主二從,即一臺充當master,一臺充當備用 master,另外一臺充當從庫,因為至少需要三臺服務(wù)器,出于機器成本的考慮,淘寶也在該基礎(chǔ)上進行了改造,目前淘寶TMHA已經(jīng)支持一主一從。

官方介紹:https://code.google.com/p/mysql-master-ha/

#p#

本次架構(gòu)實現(xiàn)功能

a.一主庫,三個從庫(其中1個為備主),實現(xiàn)ABBB復(fù)制

b.使用Atlas實現(xiàn)讀寫分離,主庫和備主庫接收寫操作,從庫接收讀操作

c.使用Mha實現(xiàn)現(xiàn)有架構(gòu)的高可用

d.使用keepalived實現(xiàn)vip的漂移

e.手工編寫shell,修復(fù)Mha的不足

  • e1.修復(fù)當AB故障切換一次后,mha-manager會自動退出
  • e2.修復(fù)原主庫,出問題后,修復(fù)后不能自動加入現(xiàn)有AB集群
  • e3.關(guān)于relay log的清除

本次實現(xiàn)架構(gòu)圖

 

wKiom1TccpKDp42jAAFcdHTu3Zc071.jpg

本次架構(gòu)主機劃分

 

wKioL1WHxYGBK1qPAADbOYvN1EM615.jpg

軟件版本

 

wKiom1WHxG2z-KQPAADxWnMzJ-U228.jpg

安裝路徑

 

wKioL1WHxtqhEV2uAAFYSzLPmTw790.jpg

 

責(zé)任編輯:Ophira 來源: 51CTO博客
相關(guān)推薦

2014-12-23 11:23:14

DRBDHeartbeatNFS

2019-08-12 10:48:24

MySQLMHA架構(gòu)應(yīng)用場景

2022-05-17 11:06:44

數(shù)據(jù)庫MySQL系統(tǒng)

2018-01-12 14:20:37

數(shù)據(jù)庫MySQL高可用架構(gòu)

2019-08-27 15:56:44

MySQL 互聯(lián)網(wǎng)數(shù)據(jù)庫

2014-12-03 09:28:56

云端虛擬機LVS+Keepali集群架構(gòu)

2017-03-13 11:39:00

WOTWOTA高可用架構(gòu)

2019-02-12 09:34:00

微博短視頻架構(gòu)

2017-11-03 09:40:27

數(shù)據(jù)庫MySQLMHA

2015-09-29 10:26:51

pythonlogging模塊

2021-02-18 14:25:52

MySQL數(shù)據(jù)庫架構(gòu)

2024-04-26 08:28:08

高可用存儲架構(gòu)

2013-07-02 15:23:08

MySQL MHA故障轉(zhuǎn)移

2021-12-06 17:44:56

MHAMySQL高可用

2014-12-24 11:13:06

可用性集availabilitset

2023-01-05 07:52:36

高可用架構(gòu)消息隊列

2015-05-15 10:04:28

localhost

2025-03-03 04:20:00

高可用架構(gòu)冗余法則

2023-12-11 07:44:36

MySQL架構(gòu)高可用

2023-03-01 22:28:15

Redis高可用
點贊
收藏

51CTO技術(shù)棧公眾號