更新時間:2020-01-06 15:43:16 來源:動力節(jié)點(diǎn) 瀏覽3602次
分析數(shù)據(jù)庫架構(gòu)方案的幾個視角用發(fā)生故障時的高可用性、切換后的數(shù)據(jù)一致性和擴(kuò)展性。每個產(chǎn)品都還有自己獨(dú)特的優(yōu)勢和功能,這里不一定會提到。
2. Oracle數(shù)據(jù)庫的架構(gòu)方案
ORACLE數(shù)據(jù)庫既能跑OLTP業(yè)務(wù),也能跑OLAP業(yè)務(wù),能力是商業(yè)數(shù)據(jù)庫中數(shù)一數(shù)二的。支持IBM小機(jī)和x86 PC服務(wù)器,支持多種OS。同時有多種數(shù)據(jù)庫架構(gòu)方案供選擇,成本收益風(fēng)險也各不相同。
A. IBM AIX HACMP + ORACLE9I + EMC
架構(gòu)說明:
1. 兩臺IBM AIX A和B。AIX A運(yùn)行Oracle Primary實(shí)例,AIX B分出部分資源虛擬一個OS C,運(yùn)行Oracle Standby實(shí)例。AIX B剩余大部分資源空閑,用于未來起另外一個OraclePrimary實(shí)例。
2. 兩臺存儲(EMC只是舉例)A和B,分別直連兩臺AIX A和B。存儲A存放Primary實(shí)例的日志和數(shù)據(jù),也存放Standby實(shí)例的Redo(圖中未畫出,只有在角色未Primary時有效)。存儲B存放Standby實(shí)例的日志和數(shù)據(jù),也存放Primary實(shí)例的Redo文件。
3. AIX也可以換普通的x86_64 PC服務(wù)器,HACMP換為支持linux的集群軟件。如Veritas HA。
功能:
1. 高可用:Oracle Primary實(shí)例不可用時,HACMP起用AIX B上的Oracle Primary實(shí)例。存儲A不可用時,將AIX C上Standby實(shí)例Failover為Primary實(shí)例。
2. 數(shù)據(jù)一致性:Redo文件在兩個存儲上都有保留,Standby實(shí)例在Failover之前應(yīng)用Primary的Redo,理論上即使是Failover也不丟數(shù)據(jù)。
3. 擴(kuò)展性:數(shù)據(jù)庫性能由主機(jī)aix和存儲能力決定,都可以向上擴(kuò)展,成本會陡升,且有上限。
B. x86 + ORACLE RAC + EMC
架構(gòu)說明:
1. 兩臺主機(jī)A和B可以是AIX,也可以是x86_64普通PC服務(wù)器,彼此網(wǎng)絡(luò)直連,同時連接共享的存儲EMCA,A和B分別運(yùn)行一個RAC Primary實(shí)例。
2. 主機(jī)C可以是AIX或x86_64普通PC服務(wù)器,直連另外一個存儲B,運(yùn)行Standby實(shí)例。也有的架構(gòu)會有多個Standby實(shí)例,其中一個Standby實(shí)例也是RAC。
功能:
1. 高可用:Oracle RACPrimary實(shí)例無論哪個不可用,另外一個都可以自動接管服務(wù)。如果Primary實(shí)例的存儲A不可用,則將Standby實(shí)例Failover為Primary實(shí)例。
2. 數(shù)據(jù)一致性:如果Primary實(shí)例也將一組Redo 成員輸出到B存儲,則理論上可以絕對不丟數(shù)據(jù)。否則,極端情況下,F(xiàn)ailover可能會因?yàn)槿鄙貾rimary的事務(wù)日志而失敗,此時直接激活Standby實(shí)例為Primary實(shí)例,可能會丟失少量數(shù)據(jù)。
3. 擴(kuò)展性:數(shù)據(jù)庫計算能力不足可以水平擴(kuò)展(添加RAC節(jié)點(diǎn)),存儲能力不足可以向上擴(kuò)展(存儲擴(kuò)容)。
C. Oracle Dataguard 共享Redo
架構(gòu)說明:
1. 普通x86服務(wù)器A和B,分別運(yùn)行Oracle的Primary和Standby實(shí)例。彼此網(wǎng)絡(luò)直連,同時連接一個共享存儲。
2. Primary和Standby實(shí)例的Redo和控制文件、spfile都放在共享存儲上,所以占用空間非常小。數(shù)據(jù)文件放在本機(jī)上,通常是高速存儲(如SSD或者PCIE接口的Flash設(shè)備)。
功能:
1. 高可用:當(dāng)Primary實(shí)例不可用時,將Standby實(shí)例Failover為Primary實(shí)例。如果共享存儲不可用,則兩個實(shí)例都不可用。通常會有第三個Standby實(shí)例。
2. 數(shù)據(jù)一致性:Standby實(shí)例在Failover之前應(yīng)用Primary實(shí)例的Redo文件,不丟失事務(wù)日志,數(shù)據(jù)強(qiáng)一致。
3. 擴(kuò)展性:無。
3. MySQL數(shù)據(jù)庫的架構(gòu)方案
A. ADHA (Alibaba Database High Availability)
架構(gòu)說明:
1. 使用MySQL Master-Master架構(gòu),雙向同步,Slave只讀。
2. 使用Zookeeper集群做實(shí)例不可用監(jiān)測和防止腦裂。
功能:
1. 高可用:Master實(shí)例不可用后,將Slave激活。可用性優(yōu)先。如果Slave延時超出一定閥值,放棄切換。zk集群三節(jié)點(diǎn)部署,可以防止腦裂。
2. 數(shù)據(jù)一致性:為盡可能少的減少數(shù)據(jù)丟失,推薦開啟單向半同步技術(shù)。同時在老Master恢復(fù)后會盡可能的彌補(bǔ)未及時同步到新Master的數(shù)據(jù)。由于同步依賴Binlog,理論上也是無法保證主從數(shù)據(jù)絕對一致。
3. 擴(kuò)展性:可以做讀寫分離,可以新增slave擴(kuò)展讀服務(wù)能力。
B. MHA (Master High Availability)
架構(gòu)說明:
1. 從MySQL主從同步架構(gòu)衍生出來的,使用半同步技術(shù),所以至少有兩個從實(shí)例(Slave)。所以整體架構(gòu)為一主兩從,兩個從庫不是級聯(lián)關(guān)系。
功能:
1. 高可用:Master不可用時,自動從兩個Slave里選出包含Binlog最多的Slave,并提升為Master。同時更改另外一個Slave的Master為新的Master。Master異常時,Slave上的拉取的Binlog如果有丟失(master或者slave故障時),很容易出現(xiàn)復(fù)制中斷,因此這種高可用機(jī)制并不總是有效。
2. 數(shù)據(jù)一致性:為了盡可能少的丟失Binlog,主從同步推薦使用半同步技術(shù)。在網(wǎng)絡(luò)異常的情況下,半同步有可能降級為異步同步。MHA只是盡最大程度保證數(shù)據(jù)不丟失。且由于同步依賴的是Binlog,主從的數(shù)據(jù)理論上也并不能保證嚴(yán)格一致。
3. 擴(kuò)展性:可以提供讀寫分離服務(wù),可以新增slave節(jié)點(diǎn)擴(kuò)展讀服務(wù)能力。
C. Alipay的OceanBase
OceanBase的設(shè)計思路跟Spanner類似,但在SQL、存儲、事務(wù)方面都有自己的創(chuàng)新。
架構(gòu)說明:
1. 目前版本計算和存儲都集中在一個節(jié)點(diǎn)上(PC,OBServer)上,單進(jìn)程程序,進(jìn)程包括SQL引擎和存儲引擎功能。
2. 表數(shù)據(jù)存在一個或多個分區(qū)(使用分區(qū)表),需要業(yè)務(wù)指定分區(qū)規(guī)則。分區(qū)是數(shù)據(jù)遷移和高可用的最小單位。分區(qū)之間的一致性是通過MultiPaxos保證。
3. 支持分布式事務(wù)、2.x版本支持全局一致性快照。支持全局一致性備份。
4. 兼容MySQL主要用法和Oracle標(biāo)準(zhǔn)SQL用法,目前正在逐步兼容Oracle更多功能。如存儲過程、游標(biāo)和Package等。目標(biāo)是兼容Oracle常用功能以實(shí)現(xiàn)去IOE時應(yīng)用不修改代碼的目標(biāo)。
5. 有多租戶管理能力,租戶彈性擴(kuò)容,租戶之間有一定資源隔離機(jī)制。
6. 應(yīng)用可以通過一個反向代理obproxy或者ob提供的connector-java訪問OceanBase集群。
跟Spanner的關(guān)系和區(qū)別:
1. Spanner大概2008年開始研發(fā),2012年通過論文對外公開。首次跨地域?qū)崿F(xiàn)水平擴(kuò)展,并基于普通PC服務(wù)器實(shí)現(xiàn)自動高可用和數(shù)據(jù)強(qiáng)一致。OceanBase在2010年開始立項(xiàng)研發(fā),也是基于普通PC服務(wù)器,發(fā)展出自己獨(dú)特的ACID特性和高可用技術(shù)以及拆分技術(shù)。
2. Spanner對標(biāo)準(zhǔn)SQL支持不好,不是真正的關(guān)系型數(shù)據(jù)庫,定位于內(nèi)部應(yīng)用。OceanBase定位于通用的分布式關(guān)系型數(shù)據(jù)庫,支持標(biāo)準(zhǔn)SQL和關(guān)系模型。基本兼容MySQL功能,逐步兼容Oracle功能。
3. Spanner借助原子鐘硬件和TrueTime設(shè)計支持全局一致性快照,提供快照讀隔離級別,對節(jié)點(diǎn)間網(wǎng)絡(luò)延時要求比較高。OceanBase使用軟件提供全局時間服務(wù),實(shí)現(xiàn)了全局一致性快照功能。
4. Spanner的內(nèi)部診斷跟蹤機(jī)制很欠缺,OceanBase的內(nèi)部診斷分析機(jī)制功能很完善,是瞄準(zhǔn)商業(yè)軟件標(biāo)準(zhǔn)去做的。
功能:
1. 擴(kuò)展性:租戶和集群的彈性伸縮非常方便,可以在線進(jìn)行,對業(yè)務(wù)寫影響可控。可以用于兩地三中心異地容災(zāi)和多活(結(jié)合業(yè)務(wù)做單元化設(shè)計)。
2. 可用性:單個或多個observer不可用時,只要分區(qū)的絕大部分成員存活,則可以迅速選舉恢復(fù)服務(wù)(RTO=20s)。
3. 數(shù)據(jù)一致性:故障恢復(fù)后,數(shù)據(jù)庫數(shù)據(jù)絕對不丟。RPO=0。
數(shù)據(jù)庫相關(guān)教程免費(fèi)下載
數(shù)據(jù)庫mysql教程:http://m.ilovecolors.com.cn/v21/
oracle數(shù)據(jù)庫教程:http://m.ilovecolors.com.cn/v22/
數(shù)據(jù)庫plsql教程:http://m.ilovecolors.com.cn/v23/
jdbc數(shù)據(jù)庫教程:http://m.ilovecolors.com.cn/v24/
以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“動力節(jié)點(diǎn)Java數(shù)據(jù)庫視頻資源分享”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)文章
零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖
你還在糾結(jié)學(xué)Java,是自學(xué)還是去培訓(xùn)班嗎
一個標(biāo)準(zhǔn)的Java程序員如何進(jìn)階?
Java學(xué)習(xí)路線清單,快速進(jìn)階Java
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743