之前研究數據庫的高可用性,需要用到數據庫的同步和備份,下面是我對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. MyBalance和MyReplication
對於同步功能,除瞭MySQL本身的同步和DRBD外,還有MyBalance和MyReplication兩個工具可以實現,但這兩個工具隻能進行單向同步,不適合雙向備份的目的,所以無法滿足需求。
本文出自“技術成就夢想”