2025-02-10

 之前研究數據庫的高可用性,需要用到數據庫的同步和備份,下面是我對MySQL的HA的一些研究。

 

 

根據《MySQL 5.0 Reference Manual》中提供的HA方案,主要由以下幾種:

 

 

Requirements

MySQL Replication

MySQL Replication + Heartbeat

MySQL Heartbeat + DRBD

MySQL Cluster

MySQL + memcached

Availability

 

 

 

 

 

Automated IP failover

No

Yes

Yes

No

No

Automated database failover

No

No

Yes

Yes

No

Typical failover time

User/script-dependent

Varies

< 30 seconds

< 3 seconds

App dependent

Automatic resynchronization of data

No

No

Yes

Yes

No

Geographic redundancy support

Yes

Yes

Yes, when combined with MySQL Replication

Yes, when combined with MySQL Replication

No

Scalability

 

 

 

 

 

Built-in load balancing

No

No

No

Yes

Yes

Supports Read-intensive applications

Yes

Yes

Yes, when combined with MySQL Replication

Yes

Yes

Supports Write-intensive applications

No

No

Yes

Yes

No

Maximum number of nodes per group

One master, multiple slaves

One master, multiple slaves

One active (primary), one passive (secondary) node

255

Unlimited

Maximum number of slaves

Unlimited (reads only)

Unlimited (reads only)

One (failover only)

Unlimited (reads only)

Unlimited

 

對於方案的研究如下,文字性的比較多。

 

一、 MySQL Replication

對於單一的MySQL同步功能,因無法實現IP地址的自動切換,而該表中所列的功能是MySQL Replication的單向同步工作方式,需要改進為雙向同步,就可以實現數據的雙向同步、重同步、數據庫切換的功能。

二、 MySQL Replication+Heartbeat

對於第二種方案,引入瞭heartbeat,所以可以實現IP地址切換,heartbeat隻針對主機和網絡故障的切換,無法監控數據庫故障,所以需要額外的工具和配置,而且MySQL Replication的工作機制為異步通訊方式,對同步的數據的一致性可能產生影響。

三、 MySQL+Heartbeat+DRBD

對於第三種采用瞭DRBD,DRBD是Distributed Replicated Block Device,是基於內核開發的一個虛擬塊設備的工具,該軟件可以在一個實際塊設備或分區上虛擬一個塊設備,並掛載到系統之上,兩臺主機通過配置,來同步塊設備上的數據,能夠實現雙向實時同步的功能,但同時隻能有一臺主機處於活動狀態,從服務器上的虛擬塊設備無法掛載,從而不能啟動從服務器的MySQL服務,在切換時需要從服務器控制啟動順序,按順序切換DRBD,掛載虛擬塊設備,啟動MySQL,調試中該時延較長。而且DRBD基於內核,在應用調試中,多次導致服務器內核出問題而導致主機死機,所以對於服務器的高穩定需求不滿足。

四、 MySQL Cluster

集群方式一般應用在負載均衡,采用單向同步的方式,對數據的修改隻在一臺數據庫服務器上進行,對於查詢則交給其他的數據庫服務器,同時無法完成IP地址的自動切換,所以沒有調試

五、 MySQL+memcached

這種方案采用共享內存的方式,使多個MySQL共享同一內存緩沖區,故不適用備份的目的。

六、 其他方案

1.    MySQL Proxy

對於IP地址切換的功能,也可以采用MySQL Proxy來實現,其工作原理是在MySQL Server和Client之間添加一個代理設備,通過lua腳本來處理數據請求,可以根據業務需求用lua腳本實現不同的功能,但這種方式將多添加一臺MySQL Proxy服務器,所以不考慮。

2.    MyBalanceMyReplication

對於同步功能,除瞭MySQL本身的同步和DRBD外,還有MyBalance和MyReplication兩個工具可以實現,但這兩個工具隻能進行單向同步,不適合雙向備份的目的,所以無法滿足需求。

 本文出自“技術成就夢想”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *