欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle和MySQL的高可用方案對(duì)比分析

 更新時(shí)間:2017年11月03日 12:14:06   投稿:mrr  
這篇文章主要介紹了Oracle和MySQL的高可用方案對(duì)比分析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

關(guān)于Oracle和MySQL的高可用方案,其實(shí)一直想要總結(jié)了,就會(huì)分為幾個(gè)系列來(lái)簡(jiǎn)單說(shuō)說(shuō)。通過這樣的對(duì)比,會(huì)對(duì)兩種數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)上的細(xì)節(jié)差異有一個(gè)基本的認(rèn)識(shí)。Oracle有一套很成熟的解決方案。用我在OOW上的ppt來(lái)看,是MAA的方案,今年是這個(gè)方案的16周年了。

而MySQL因?yàn)殚_源的特點(diǎn),社區(qū)里推出了更多的解決方案,個(gè)人的見解,InnoDB Cluster會(huì)是MySQL以后的高可用方案標(biāo)配。

而目前來(lái)看,MGR固然不錯(cuò),MySQL Cluster方案也有,PXC,Galera等方案,個(gè)人還是更傾向于MHA.

所以本文會(huì)分為幾個(gè)部分來(lái)解讀,先拿RAC和MHA來(lái)做一個(gè)基本的對(duì)比。

Oracle的解決方案在阿里快速發(fā)展時(shí)期支撐起了核心業(yè)務(wù)的需求。大概是這樣的架構(gòu)體系,看起來(lái)很龐大。里面的RAC算是一個(gè)貴族,用昂貴的商業(yè)存儲(chǔ),網(wǎng)絡(luò)帶寬要求極高,前端大量的小機(jī)業(yè)務(wù)還有不菲的licence費(fèi)用。非常典型的IOE的經(jīng)典架構(gòu)。

如果要考慮異地容災(zāi),那么資源配置要double,預(yù)算翻番。

MySQL的架構(gòu)方案相對(duì)來(lái)說(shuō)更加平民化,普通的pc就可以,但是數(shù)量級(jí)要高,做業(yè)務(wù)拆分,水平拆分就能夠橫向擴(kuò)展出非常多的節(jié)點(diǎn),很多大互聯(lián)網(wǎng)公司的MySQL集群規(guī)模都是幾百幾百的規(guī)模,上千都不稀奇。如此之多的服務(wù)資源,發(fā)生故障的概率還是有的,保證業(yè)務(wù)服務(wù)的可持續(xù)性訪問,是技術(shù)方案的關(guān)鍵。如果按照MHA的架構(gòu),基本上就是MHA Manager節(jié)點(diǎn)來(lái)負(fù)責(zé)整個(gè)集群的狀態(tài),好比一個(gè)居委會(huì)大媽,對(duì)住戶的大大小小的事情都了如指掌包打聽。

當(dāng)然上面的說(shuō)法過于籠統(tǒng),我們從一些細(xì)節(jié)入手。比如先來(lái)說(shuō)說(shuō)網(wǎng)絡(luò)的事情。

Oracle對(duì)于網(wǎng)絡(luò)的要求還是很嚴(yán)格的,一般都是要2塊物理網(wǎng)卡,每臺(tái)服務(wù)器需要至少3個(gè)IP, Public IP,private IP,VIP,除了共享存儲(chǔ),至少需要2個(gè)計(jì)算節(jié)點(diǎn)。

private IP是節(jié)點(diǎn)間互信的,Public IP和VIP在一個(gè)網(wǎng)段,簡(jiǎn)單來(lái)說(shuō),VIP是對(duì)外的,是public IP所在網(wǎng)絡(luò)的漂移IP,在10g里面都是通過VIP來(lái)做負(fù)載均衡的,11g開始有了scan-IP,原來(lái)的VIP還是保留,所以O(shè)racle里面的網(wǎng)絡(luò)配置要求還是很高的。拋開共享存儲(chǔ),搭建的核心就是網(wǎng)絡(luò)配置了,網(wǎng)絡(luò)通則通。

scan-IP還可以繼續(xù)擴(kuò)展,最多支持3個(gè)scan-ip,如下圖所示

當(dāng)然網(wǎng)絡(luò)層面不只是這些,這方面的亮點(diǎn)Oracle就很專業(yè)了。我們有必要了解下TAF,在我的書中《Oracle DBA工作筆記》中,我這樣寫道:

TAF(Transparent Application Failover)是Oracle中對(duì)應(yīng)用透明的故障轉(zhuǎn)移,在RAC環(huán)境中使用尤其廣泛。在RAC中Load Balance這塊確實(shí)做了很大的改進(jìn),從10g版本開始的多個(gè)VIP地址的Load Balance,到11g版本中的SCAN,做了很大的簡(jiǎn)化。

而在Failover的實(shí)現(xiàn)中,還是有一定的使用限定,比如11g中默認(rèn)的SCAN-IP的實(shí)現(xiàn)其實(shí)默認(rèn)沒有Failover的選項(xiàng),如果兩個(gè)節(jié)點(diǎn)中的其中一個(gè)節(jié)點(diǎn)掛了,那么原有的連接中繼續(xù)查詢就會(huì)提示session已經(jīng)斷開,需要重新連接??蛻舳薚AF主要會(huì)討論Failover Method和Failover Type的一些簡(jiǎn)單內(nèi)容。

(1)Failover Method

Failover Method的主要思路就是換取故障轉(zhuǎn)移時(shí)間,或者換取資源來(lái)實(shí)現(xiàn)。

可以這樣來(lái)理解,假設(shè)我們存在兩個(gè)節(jié)點(diǎn),如果某個(gè)session連接到了節(jié)點(diǎn)2,然而節(jié)點(diǎn)2突然掛了,為了更快處理Failover這種情況,F(xiàn)ailover Method有preconnect和basic兩種。

— preconnect這種預(yù)連接方式還是會(huì)占用較多的資源使用,在各個(gè)節(jié)點(diǎn)上會(huì)預(yù)先占用一部分額外的資源,在切換時(shí)會(huì)相對(duì)更加平滑,速度更快。

— basic這種方式,則在發(fā)生Failover時(shí),再去切換對(duì)應(yīng)的資源,中間會(huì)有一些卡頓,但是對(duì)于資源的消耗相對(duì)來(lái)說(shuō)要小很多。

簡(jiǎn)單來(lái)說(shuō),basic方式會(huì)在故障發(fā)生時(shí)才去判斷,而preconnect則是未雨綢繆;從實(shí)際的應(yīng)用來(lái)說(shuō),basic這種方式更加通用,也是默認(rèn)的故障轉(zhuǎn)移方式。

(2)Failover Type

Failover Type實(shí)現(xiàn)更加豐富而且靈活,非常強(qiáng)大。這個(gè)時(shí)候控制粒度可以針對(duì)用戶SQL的執(zhí)行情況進(jìn)行控制,有select和session兩種;通過一個(gè)小例子說(shuō)明一下。

比如,我們有個(gè)很大的查詢?cè)诠?jié)點(diǎn)2上進(jìn)行,結(jié)果節(jié)點(diǎn)2突然掛了,對(duì)于正在執(zhí)行的查詢,比如說(shuō)有10 000條數(shù)據(jù),結(jié)果剛好故障發(fā)生的時(shí)候查出了8 000條,那么剩下的2 000該怎么處理。

第一種方式就是使用select;即會(huì)完成故障切換,繼續(xù)把剩下的2 000條記錄返回,當(dāng)然中間會(huì)有一些上下文環(huán)境的切換,對(duì)于用戶是透明的。

第二種方式是session;即直接斷開連接,要求重新查詢。

在10g版本中借助于VIP的配置達(dá)到Load Balance+Failover的配置如下:

racdb=
(DESCRIPTION =
(ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.101)(PORT= 1521))
(ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.201)(PORT= 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER= DEDICATED)
(SERVICE_NAME = racdb)
(FAILOVER_MODE =
(TYPE= SELECT)
(METHOD= BASIC)
(RETRIES = 30)
(DELAY = 5))))
如果11g的SCAN-IP也想進(jìn)一步擴(kuò)展Failover,同樣也需要設(shè)置failover_mode和對(duì)應(yīng)的類型。
RACDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RACDB)
)
)

從這個(gè)角度來(lái)看Oracle的方案真是精細(xì)。再來(lái)看看MySQL的方案。

分布式的方案,讓MySQL看起來(lái)像一把瑞士牛刀,對(duì)于網(wǎng)絡(luò)層面的要求,幾乎可以說(shuō)MySQL沒有什么要求,申請(qǐng)一主一從,那么就只需要4個(gè)IP即可(主,從,VIP,MHA_Manager(考慮一個(gè)manager節(jié)點(diǎn))),一主兩從是5個(gè)。

這一點(diǎn)上MySQL原生并不支持所謂的負(fù)載均衡,可以通過前端的業(yè)務(wù)來(lái)分流,比如使用中間件proxy,或者持續(xù)的拆分,達(dá)到一定的粒度后,通過架構(gòu)設(shè)計(jì)的方式來(lái)滿足需求。因?yàn)榛谶壿嫷膹?fù)制,很容易擴(kuò)展,一主多從都是很常見的,代價(jià)也不高,延遲不能說(shuō)沒有,只是很低,能夠適應(yīng)絕大部分的互聯(lián)網(wǎng)業(yè)務(wù)需求。

而說(shuō)到觸發(fā)MHA切換的條件,從網(wǎng)絡(luò)層面來(lái)看,如下的紅點(diǎn)都是潛在的隱患,有的是網(wǎng)絡(luò)的中斷,有的是網(wǎng)絡(luò)的延遲,發(fā)生故障的時(shí)候,保數(shù)據(jù)還是保性能穩(wěn)定,都可以基于自己的需求來(lái)定制。從這一點(diǎn)上來(lái)說(shuō),丟失數(shù)據(jù)的概率是有的。絕對(duì)不是強(qiáng)一致性的無(wú)損復(fù)制。

整體來(lái)看兩種方案,RAC是集中共享,除了存儲(chǔ)層面的共享外,網(wǎng)絡(luò)層面的組播其實(shí)也會(huì)提高節(jié)點(diǎn)間通信的成本,所以RAC對(duì)于網(wǎng)絡(luò)的需求很大,如果存在延遲是很危險(xiǎn)的,發(fā)生了腦裂就很尷尬了。MySQL MHA的方案是分布式的。支持大批量的環(huán)境,節(jié)點(diǎn)間通信的成本相對(duì)來(lái)說(shuō)要低很多。但是從數(shù)據(jù)架構(gòu)的角度來(lái)說(shuō),因?yàn)槭菑?fù)制的數(shù)據(jù)分布方式,所以對(duì)于存儲(chǔ)盡管不是共享存儲(chǔ),但是對(duì)于存儲(chǔ)的成本還是高于RAC(不是說(shuō)存儲(chǔ)的價(jià)格,是存儲(chǔ)的數(shù)據(jù)量大小).

相關(guān)文章

  • mysql?or走索引加索引及慢查詢的作用

    mysql?or走索引加索引及慢查詢的作用

    這篇文章主要介紹了mysql?or走索引加索引及慢查詢的作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)塊大小及配置方法

    MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)塊大小及配置方法

    MySQL作為一種流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),在處理大規(guī)模數(shù)據(jù)存儲(chǔ)和查詢時(shí),數(shù)據(jù)塊(data block)大小是一個(gè)至關(guān)重要的因素,本文將詳細(xì)探討MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)塊大小,結(jié)合實(shí)際例子說(shuō)明其重要性和配置方法,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 設(shè)置MySQL中的數(shù)據(jù)類型來(lái)優(yōu)化運(yùn)行速度的實(shí)例

    設(shè)置MySQL中的數(shù)據(jù)類型來(lái)優(yōu)化運(yùn)行速度的實(shí)例

    這篇文章主要介紹了設(shè)置MySQL中索引的數(shù)據(jù)類型來(lái)優(yōu)化運(yùn)行速度的實(shí)例,主要是適當(dāng)使用短字節(jié)的數(shù)據(jù)類型來(lái)處理短索引,需要的朋友可以參考下
    2015-05-05
  • Oracle和MySQL的高可用方案對(duì)比分析

    Oracle和MySQL的高可用方案對(duì)比分析

    這篇文章主要介紹了Oracle和MySQL的高可用方案對(duì)比分析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • MySQL條件查詢語(yǔ)句常用操作全面匯總

    MySQL條件查詢語(yǔ)句常用操作全面匯總

    當(dāng)用戶查看表格的大量數(shù)據(jù)是,由于數(shù)據(jù)量過于巨大會(huì)導(dǎo)致很難獲取到需要的數(shù)據(jù),在這時(shí),就需要一個(gè)方法,一個(gè)可以通過用戶輸入獲取到用戶需要的數(shù)據(jù)并回填入表格,這就是條件查詢的作用
    2022-04-04
  • 避坑:Sql中?in?和not?in中有null值的情況說(shuō)明

    避坑:Sql中?in?和not?in中有null值的情況說(shuō)明

    這篇文章主要介紹了避坑:Sql中?in?和not?in中有null值的情況說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 記一次MySQL的優(yōu)化案例

    記一次MySQL的優(yōu)化案例

    這篇文章主要介紹了記一次MySQL的優(yōu)化案例,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-10-10
  • 詳解mysql8.0創(chuàng)建用戶授予權(quán)限報(bào)錯(cuò)解決方法

    詳解mysql8.0創(chuàng)建用戶授予權(quán)限報(bào)錯(cuò)解決方法

    這篇文章主要介紹了詳解mysql8.0創(chuàng)建用戶授予權(quán)限報(bào)錯(cuò)解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • MySQL 內(nèi)存表和臨時(shí)表的用法詳解

    MySQL 內(nèi)存表和臨時(shí)表的用法詳解

    這篇文章主要介紹了MySQL 內(nèi)存表和臨時(shí)表的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-01-01
  • Mysql的longblob字段插入數(shù)據(jù)問題解決

    Mysql的longblob字段插入數(shù)據(jù)問題解決

    在使用mysql的過程中,有個(gè)問題就是mysql的優(yōu)化,mysql中l(wèi)ongblob字段在5.5版本中默認(rèn)的為1M,需要解決問題的朋友可以參考下
    2014-01-01

最新評(píng)論