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