數(shù)據(jù)庫高可用架構(gòu)對于我們這些應(yīng)用端開發(fā)的人來說是一個比較陌生的領(lǐng)域,是在具體的數(shù)據(jù)庫產(chǎn)品之上搭建的環(huán)境,需要像DBA這樣對數(shù)據(jù)庫產(chǎn)品有足夠的了解才能有所涉及,雖然不能深入其中,但可以通過一些經(jīng)典的高可用架構(gòu)學(xué)習(xí)其中的思想。就我所了解到的有以下幾種:
MySQL Replication
MySQL Cluster
Oracle RAC
IBM HACMP
Oracle ASM
MySQL Replication
MySQL Replication就是通過異步復(fù)制多個copy以達(dá)到提高可用性的目的,常規(guī)的復(fù)制架構(gòu)有以下幾種:
Master-Slaves
Master-Master
Master-Master-Salves
1)Master-Slaves
Master- Slaves是最常用的提高可用的方法,特別是在互聯(lián)網(wǎng)應(yīng)用中,讀遠(yuǎn)遠(yuǎn)大于寫,因此提高讀的可用性是首當(dāng)其中的,Master-Slaves就是讓寫的操作集中在一臺數(shù)據(jù)庫Master上,然后這個Master會把更新的操作復(fù)制到其他數(shù)據(jù)庫Slaves上,讀的操作都發(fā)生在Slaves上,架構(gòu)圖如下所示:
這樣的分層也是由MySQL本身把SQL處理和存儲分開的架構(gòu)相關(guān)系的。
這樣一來MySQL Cluster就可以分別在SQL處理和存儲兩個層次上做高可用的復(fù)制策略。在SQL處理層次上,比較容易做集群,因為這些SQL處理是無狀態(tài)性的,完全可以通過增加機(jī)器的方式增強(qiáng)可用性。在存儲層次上,通過對每個節(jié)點進(jìn)行備份的形式增加存儲的可用性,這類似與MySQL Replication,結(jié)構(gòu)圖如下所示:
IBM HACMP
IBM HACMP與Oracle RAC也是類似,主要用于雙機(jī)互備,運(yùn)行流程如下所示:
1)作為雙機(jī)系統(tǒng)的兩臺服務(wù)器(主機(jī)A和B)同時運(yùn)行在Hacmp環(huán)境中;
2)服務(wù)器除正常運(yùn)行自機(jī)的應(yīng)用外,同時又作為對方的備份主機(jī);
3)兩臺主機(jī)系統(tǒng)(A和B)在整個運(yùn)行過程中,通過 “心跳線”相互監(jiān)測對方的運(yùn)行情況(包括系統(tǒng)的軟硬件運(yùn)行、網(wǎng)絡(luò)通訊和應(yīng)用運(yùn)行情況等);
4)一旦發(fā)現(xiàn)對方主機(jī)的運(yùn)行不正常(出故障)時,故障機(jī)上的應(yīng)用就會立即停止運(yùn)行,本機(jī)(故障機(jī)的備份機(jī))就會立即在自己的機(jī)器上啟動故障機(jī)上的應(yīng)用,把故障機(jī)的應(yīng)用及其資源(包括用到的IP地址和磁盤空間等)接管過來,使故障機(jī)上的應(yīng)用在本機(jī)繼續(xù)運(yùn)行;
5)應(yīng)用和資源的接管過程由Ha軟件自動完成,無需人工干預(yù);
6)當(dāng)兩臺主機(jī)正常工作時,也可以根據(jù)需要將其中一臺機(jī)上的應(yīng)用人為切換到另一臺機(jī)(備份機(jī))上運(yùn)行。
Oracle ASM
Oracle ASM主要提供存儲的可擴(kuò)展性,通過自動化的存儲管理加上后端可擴(kuò)展性的存儲陣列達(dá)到高可用性,結(jié)構(gòu)圖如下所示:
更多信息請查看IT技術(shù)專欄