目前暫時還沒有哪款數(shù)據(jù)庫產(chǎn)品是專門針對跨IDC進(jìn)行的優(yōu)化,在理論上被業(yè)界認(rèn)為最優(yōu)的方案是采用基于Paxos協(xié)議(暫時只有g(shù)oogle做
目前暫時還沒有哪款數(shù)據(jù)庫產(chǎn)品是專門針對跨IDC進(jìn)行的優(yōu)化,在理論上被業(yè)界認(rèn)為最優(yōu)的方案是采用基于Paxos協(xié)議(暫時只有g(shù)oogle做出了實(shí)現(xiàn),google f1),今天只討論MySQL在這方面的注意事項:
對于跨IDC的情況基本都會設(shè)計到以下問題:
1、MySQL多IDC的數(shù)據(jù)同步,數(shù)據(jù)一致性
2、多IDC之間的高可用
3、多IDC的多點(diǎn)寫入問題
4、運(yùn)維監(jiān)控
對于MySQL多IDC數(shù)據(jù)之間的同步問題:
1、MySQL的復(fù)制是異步的(對于5.5的半同步來說,還是屬于“異步的”),MySQL同步依賴的因素很多,同步的網(wǎng)絡(luò)環(huán)境,硬件配置,SQL語句是否高效,以及數(shù)據(jù)量的大小。
在數(shù)據(jù)量較大的情況下在master和slave端啟用slave-compressed-protocol = 1壓縮模式,網(wǎng)絡(luò)環(huán)境采用專線??梢岳胋lackhole存儲引擎的MySQL作為relay server實(shí)現(xiàn)級聯(lián)復(fù)制,這個最好控制在三層內(nèi),減少同步的延遲,減少機(jī)房之間傳輸?shù)臄?shù)據(jù)量。關(guān)于SQL語句,索引不要太多,影響插入速度,注意更新和刪除的問題,如果采用row模式進(jìn)行復(fù)制,,數(shù)據(jù)量是個問題,建議采用mixed模式進(jìn)行復(fù)制。對于實(shí)時性要求較高的應(yīng)用可以允許第一次讀的時候從主庫上讀取?;蛘咴趹?yīng)用端給出等待時間來緩解同步延遲對用戶的影響。
2、對于多IDC中的高可用問題。
對于采用relay server的方式,可以采用兩臺server,每隔relay下面都是一個slave集群。當(dāng)某個出現(xiàn)問題的時候,可以只訪問另一個slave集群。
對于采用雙主模式的情況下,這個容災(zāi)方式比較明顯,每個master下都接一個slave集群。但對于多IDC部署的話缺點(diǎn)也很明顯,只能使用兩個IDC。
3、多點(diǎn)寫入問題
雙主復(fù)制,環(huán)狀復(fù)制,通過federated引擎都可以實(shí)現(xiàn)多點(diǎn)寫入。這個時候?qū)τ诙帱c(diǎn)寫入需要考慮自增問題,可通過auto_increment_increment=N(增量值)和auto_increment_offset=N (初始值)來解決。更新丟失問題。每個master只寫本地數(shù)據(jù),slave擁有全部數(shù)據(jù),這個時候數(shù)據(jù)是以一定次序出現(xiàn)的。利用消息隊列,數(shù)據(jù)寫入本地數(shù)據(jù)庫時也寫入消息隊列中(本人為涉及到)
4、運(yùn)維監(jiān)控問題
監(jiān)控系統(tǒng)對整個維護(hù)過程中起著很重要的作用。為防止在多IDC之間網(wǎng)絡(luò)環(huán)境的影響,最好采用分布式監(jiān)控,并且每個IDC的監(jiān)控系統(tǒng)都能獨(dú)立工作,可以參考zabbix,ganglia(兩個開源企業(yè)級監(jiān)控系統(tǒng))
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com