之前研究數(shù)據(jù)庫的高可用性,需要用到數(shù)據(jù)庫的同步和備份,下面是我對MySQL的HA的一些研究。
根據(jù)《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同步功能,因無法實現(xiàn)IP地址的自動切換,而該表中所列的功能是MySQL Replication的單向同步工作方式,需要改進為雙向同步,就可以實現(xiàn)數(shù)據(jù)的雙向同步、重同步、數(shù)據(jù)庫切換的功能。
二、 MySQL Replication+Heartbeat
對于第二種方案,引入了heartbeat,所以可以實現(xiàn)IP地址切換,heartbeat只針對主機和網(wǎng)絡(luò)故障的切換,無法監(jiān)控數(shù)據(jù)庫故障,所以需要額外的工具和配置,而且MySQL Replication的工作機制為異步通訊方式,對同步的數(shù)據(jù)的一致性可能產(chǎn)生影響。
三、 MySQL+Heartbeat+DRBD
對于第三種采用了DRBD,DRBD是Distributed Replicated Block Device,是基于內(nèi)核開發(fā)的一個虛擬塊設(shè)備的工具,該軟件可以在一個實際塊設(shè)備或分區(qū)上虛擬一個塊設(shè)備,并掛載到系統(tǒng)之上,兩臺主機通過配置,來同步塊設(shè)備上的數(shù)據(jù),能夠?qū)崿F(xiàn)雙向?qū)崟r同步的功能,但同時只能有一臺主機處于活動狀態(tài),從服務(wù)器上的虛擬塊設(shè)備無法掛載,從而不能啟動從服務(wù)器的MySQL服務(wù),在切換時需要從服務(wù)器控制啟動順序,按順序切換DRBD,掛載虛擬塊設(shè)備,啟動MySQL,調(diào)試中該時延較長。而且DRBD基于內(nèi)核,在應(yīng)用調(diào)試中,多次導(dǎo)致服務(wù)器內(nèi)核出問題而導(dǎo)致主機死機,所以對于服務(wù)器的高穩(wěn)定需求不滿足。
四、 MySQL Cluster
集群方式一般應(yīng)用在負載均衡,采用單向同步的方式,對數(shù)據(jù)的修改只在一臺數(shù)據(jù)庫服務(wù)器上進行,對于查詢則交給其他的數(shù)據(jù)庫服務(wù)器,同時無法完成IP地址的自動切換,所以沒有調(diào)試
五、 MySQL+memcached
這種方案采用共享內(nèi)存的方式,使多個MySQL共享同一內(nèi)存緩沖區(qū),故不適用備份的目的。
六、 其他方案
1. MySQL Proxy:
對于IP地址切換的功能,也可以采用MySQL Proxy來實現(xiàn),其工作原理是在MySQL Server和Client之間添加一個代理設(shè)備,通過lua腳本來處理數(shù)據(jù)請求,可以根據(jù)業(yè)務(wù)需求用lua腳本實現(xiàn)不同的功能,但這種方式將多添加一臺MySQL Proxy服務(wù)器,所以不考慮。
2. MyBalance和MyReplication
對于同步功能,除了MySQL本身的同步和DRBD外,還有MyBalance和MyReplication兩個工具可以實現(xiàn),但這兩個工具只能進行單向同步,不適合雙向備份的目的,所以無法滿足需求。
本文出自“技術(shù)成就夢想”
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com