在IBM大型主機(jī)的世界中,有一個(gè)GDPS家族為數(shù)據(jù)中心提供全方位的呵護(hù)。經(jīng)歷了20多年的歷練,這個(gè)家族可以高質(zhì)量地提供好幾種災(zāi)備和雙活的解決方案,再配以靈活的深度可裁剪能力,自然有適合您的選擇。其中的GDPS/Active-Active雙活方案宇宙行已經(jīng)在兩年多前成功實(shí)施上線,并成功實(shí)現(xiàn)了生產(chǎn)系統(tǒng)運(yùn)行中進(jìn)行的一鍵式乾坤大挪移。
事隔一年多,關(guān)注宇宙行的朋友可能還注意到了朋友圈里這樣一則消息《工行主機(jī)新一代雙活非對(duì)稱架構(gòu)投產(chǎn)成功》(2018年4月):
宇宙行總是不負(fù)眾望的。升級(jí)了同城雙活架構(gòu)到達(dá)2.0版本!雙活2.0和非對(duì)稱架構(gòu),這又是什么意思呢?讓我來給您解答一下。2016年底成功地進(jìn)行了生產(chǎn)運(yùn)行中的雙活乾坤大挪移Live Demo的版本稱為雙活1.0,這次的進(jìn)階版本被宇宙行定版為雙活2.0。雙活2.0使用的基礎(chǔ)架構(gòu)是IBM稱為GDPS/Active-Active ZDL(Zero Data Loss,ZDL)即雙活數(shù)據(jù)零丟失的解決方案。
其實(shí)大家都有一個(gè)期望就是能夠在系統(tǒng)層面做到零數(shù)據(jù)丟失。然而,通常使用數(shù)據(jù)庫層面的異步復(fù)制技術(shù)達(dá)不到啊。于是,IBM在原有GDPS Continuous Availability sites (GDPS AA 1.0)概念的基礎(chǔ)上,結(jié)合磁盤復(fù)制技術(shù)進(jìn)行創(chuàng)新,特意為同城距離的GDPS AA實(shí)現(xiàn)了零數(shù)據(jù)丟失的功能,從系統(tǒng)層面在保證RPO=0的情況下,一個(gè)方案同時(shí)解決計(jì)劃內(nèi)和計(jì)劃外的事件應(yīng)對(duì)。
出個(gè)簡單明了的架構(gòu)示意圖如下,讓我們來一起看看GDPS/A-A 1.0的基本架構(gòu)和GDPS/A-A ZDL(零數(shù)據(jù)丟失)架構(gòu)的數(shù)據(jù)復(fù)制架構(gòu)不同:
* 圖中標(biāo)注的GDPS/A-A 1.7 ZDL的意思是在GDPA/A-A 1.7版時(shí)加入了零數(shù)據(jù)丟失(ZDL)的架構(gòu)支持。
首先要注意的一點(diǎn)是數(shù)據(jù)復(fù)制路線的變化。1.0的基本架構(gòu)是通過IBM InfoSphere Data Replication for Db2 z/OS (IIDR,也簡稱QREP)在生產(chǎn)Site1把Db2的日志更新進(jìn)行捕獲(Capture),然后傳輸?shù)絊ite2進(jìn)行日志重放(Apply)。ZDL的架構(gòu)不同的地方是引入了MTMM(Multi-Target Metro Mirror)或者叫MTPPRC。通過磁盤的PPRC同步復(fù)制技術(shù)把Db2的日志同步傳輸?shù)絊ite2。在Site2再進(jìn)行Db2的日志更新捕獲和日志重放。ZDL結(jié)合了PPRC同步復(fù)制技術(shù)和數(shù)據(jù)庫異步復(fù)制技術(shù),保證Db2日志RPO=0,再通過數(shù)據(jù)庫復(fù)制補(bǔ)齊Site2數(shù)據(jù)庫中的內(nèi)容(在同一個(gè)站點(diǎn)內(nèi)進(jìn)行,速度會(huì)非???,達(dá)到數(shù)據(jù)層面的RPO=0。
其次再多看一點(diǎn)MTMM。AA1.0基本架構(gòu)下,一般的生產(chǎn)系統(tǒng)(在Site1)都會(huì)配置本地的PPRC同步磁盤復(fù)制,同時(shí)激活Hyperswap功能。這樣就可以保證本地磁盤的高可用了。而在ZDL架構(gòu)下引入的MTMM,在保證本地磁盤高可用的情況下,還可以再多一份磁盤拷貝放到遠(yuǎn)端。如圖中所示,RS1和RS2是在Site1的兩套磁盤做本地磁盤高可用。RS3是第三份磁盤拷貝放到了Site2。這三份磁盤之間通過三角形兩兩互聯(lián)。正常情況下數(shù)據(jù)復(fù)制的方向如RL1和RL2所標(biāo)識(shí)的。MTMM也支持兩種配置,一種是三份磁盤等量復(fù)制;一種是本地兩份全量,第三份部分復(fù)制。圖示中的RS3是部分復(fù)制的配置。如果當(dāng)本地磁盤發(fā)生Hyperswap(RS1故障,RS2接管)后,RL3的虛線會(huì)即時(shí)轉(zhuǎn)變?yōu)镽S2到RS3的復(fù)制鏈路,同步兩端的狀態(tài)(MTIR),并繼續(xù)進(jìn)行數(shù)據(jù)復(fù)制。
再次來看看QREP復(fù)制組件位置的變化。ZDL架構(gòu)下“在Site2再進(jìn)行Db2的日志更新捕獲和日志重放”,這個(gè)變化還是很有意味的。數(shù)據(jù)復(fù)制的架構(gòu)通過這樣的變化脫離了Site1的生產(chǎn)數(shù)據(jù)庫。減少了數(shù)據(jù)復(fù)制組件和生產(chǎn)數(shù)據(jù)庫的相互影響,同時(shí)Capture和Apply之間的穩(wěn)定性也得到極大提升。Site1生產(chǎn)環(huán)境變得更加單純了。
最后,CDDS (壓縮字典數(shù)據(jù)集)是新引入的一個(gè)重要組件。通過CDDS的PPRC鏡像,源端Db2 DSG (Data Sharing Group)的一些關(guān)鍵狀態(tài)信息都同步復(fù)制到了Site2。這樣,在Site2的QREP才在不進(jìn)入源端環(huán)境的情況下,能夠正確了解源端Db2 DSG的狀態(tài),從而進(jìn)行正確的Capture/Apply操作。例如,CDDS中包含了Db2 DSG集群成員的Log使用狀態(tài);包含了源端數(shù)據(jù)庫表正在使用的兩代壓縮字典,等等。
那么GDPS在整個(gè)架構(gòu)中起到什么作用呢?簡單回答就是兩個(gè)中心,兩個(gè)主機(jī)集群,好多磁盤,好多軟件實(shí)例,還有應(yīng)用負(fù)載,數(shù)據(jù)復(fù)制,你一定想應(yīng)該有個(gè)東西能夠統(tǒng)一管理,自動(dòng)化操作,方便的配置等等,這就是GDPS的核心作用??梢粤_列出至少以下幾點(diǎn):
別看架構(gòu)變化不太大,可產(chǎn)生了兩大效果:
第一,磁盤級(jí)同步數(shù)據(jù)復(fù)制在Site2形成了一個(gè)真正的Site1生產(chǎn)數(shù)據(jù)庫的影子,實(shí)時(shí)同步;
第二,QREP的數(shù)據(jù)捕獲(Capture)移到Site2,變得更加獨(dú)立。
這兩大效果反映到用戶的實(shí)際場景中的價(jià)值,那就是無論計(jì)劃內(nèi)還是計(jì)劃外的事件都可以做到RPO=0。同時(shí)優(yōu)化了整體的復(fù)制架構(gòu),使得復(fù)制的效率和穩(wěn)定性都得到大幅提升。通過GDPS和客戶裁剪的腳本可以讓兩中心的統(tǒng)一運(yùn)維管理得到極大的簡化并提升效率。
總結(jié)都寫了,但還有兩個(gè)問題重要問題要說明一下!
問題一:為啥要引入PPRC同步復(fù)制呢?
回答:實(shí)際效果前面都寫到了。那么從理論上如何認(rèn)識(shí)這件事情呢?“雙活或者多活數(shù)據(jù)中心在要求數(shù)據(jù)完整一致的情況下,就必須要在整體的架構(gòu)設(shè)計(jì)中在某個(gè)層面保證某一類數(shù)據(jù)跨中心的完整一致,在出現(xiàn)問題時(shí),可以通過這類數(shù)據(jù)進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的恢復(fù)。”這個(gè)說法很容易通過反證法證明。
PPRC的引入,是把數(shù)據(jù)最終恢復(fù)用到的Db2日志進(jìn)行跨中心的同步復(fù)制。在數(shù)據(jù)中心的層面完成整個(gè)系統(tǒng)中最關(guān)鍵的數(shù)據(jù)完整一致的保證。從系統(tǒng)的層面實(shí)現(xiàn)RPO=0。
問題二:為啥叫非對(duì)稱架構(gòu)呢?
回答:從上面的圖中也可以看到,從Site1到Site2是通過MTMM加上QREP的方式把Db2日志復(fù)制到Site2并在Site2進(jìn)行Db2日志重放。而從Site2到Site1圖中并沒有明示通過什么方式。如果從Site2到Site1選用的方式也是通過和Site1到Site2一樣的MTMM加上QREP的方式,那么,我們就說這樣的配置是對(duì)稱架構(gòu),否則就是非對(duì)稱架構(gòu)。
如果真到了對(duì)稱架構(gòu)的模式,我們又有更多的想象空間了。比如,對(duì)稱架構(gòu)下的站點(diǎn)切換模式和平臺(tái)運(yùn)行模式。