之前研究數據庫的高可用性,需要用到數據庫的同步和備份,下面是我對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兩個工具可以實現,但這兩個工具只能進行單向同步,不適合雙向備份的目的,所以無法滿足需求。
本文出自“技術成就夢想”
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com