銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì)_第1頁
銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì)_第2頁
銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì)_第3頁
銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì)_第4頁
銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 銀行跨數(shù)據(jù)中心數(shù)據(jù)庫雙活架構(gòu)設(shè)計(jì) 難點(diǎn)一:數(shù)據(jù)庫雙活,如何解決幾十公里延時(shí)帶來的性能問題?分享一:幾十公里的延時(shí)主要表現(xiàn)在兩方面,一個(gè)是存儲(chǔ)雙寫延遲,一個(gè)是節(jié)點(diǎn)通信延遲。從存儲(chǔ)延時(shí)來說首先要做到本地讀。這個(gè)在GPFS文件系統(tǒng)里是可以做到的。其次是增大緩存,減少同步寫的次數(shù)。對(duì)于數(shù)據(jù)庫里的大對(duì)象,最好使用inline的方式放在常規(guī)表空間里,或者存放在開啟了文件緩存的表空間里。對(duì)于數(shù)據(jù)庫日志,一定要設(shè)置足夠的日志緩沖池,避免因?yàn)榫彌_池不夠發(fā)生的同步寫。在通信的延遲上,我們需要做到的是盡量減少通信。所以要想辦法解決熱點(diǎn)數(shù)據(jù)問題。同時(shí)能夠本地訪問和緩沖的都要想辦法實(shí)現(xiàn)。例如推薦采用客戶端偏好鏈接?;?/p>

2、于current member來組織表和數(shù)據(jù)等等。(孔再華)有個(gè)問題,由于CF節(jié)點(diǎn)只有一個(gè),對(duì)于寫來說,必然存在兩個(gè)站點(diǎn)的DB2 MEMBER都同時(shí)需要通過RDMA訪問CF節(jié)點(diǎn)GBP,本地來說,問題不存在,跨站點(diǎn)RDMA訪問的話,這個(gè)通信耗時(shí)和性能是否需要重點(diǎn)關(guān)注?(鄧毓)你說的非常正確,跨站點(diǎn)的member和CF通信需求是雙活環(huán)境調(diào)優(yōu)的關(guān)鍵。所以這個(gè)就是重點(diǎn)關(guān)注的對(duì)象,要減少這種交互。數(shù)據(jù)庫提供了mon_get_cf等相關(guān)表函數(shù)能夠抓取CF的功能和耗時(shí),進(jìn)而分析是什么操作最慢,能不能減少或者調(diào)整。(孔再華)分享二:我從Oracle數(shù)據(jù)庫層RAC說一下吧,個(gè)人比較喜歡用ASM,用ASM可以解決

3、一部分性能問題,之所以說一部分是因?yàn)锳SM也只能解決讀的問題;由于距離產(chǎn)生的延遲,那么最好的辦法就是不縮短距離,這個(gè)好像是廢話,但是對(duì)于Oracle ASM的 redundancy來說其實(shí)是可以做到的,比如創(chuàng)建Oracle ASM的磁盤組的時(shí)候選擇的是Normal redundancy的方式,那么磁盤組就會(huì)至少有2個(gè)failure group ,而我們可以把2個(gè)failure group里的物理盤手工的劃分到不同的物理位置,一般雙活都有2個(gè)機(jī)房,那么一個(gè)failure group里放一個(gè)機(jī)房的磁盤,另外一個(gè)fialure group里放置另外一個(gè)機(jī)房的磁盤,這樣雙活也就實(shí)現(xiàn)了,但是隨即而來的問

4、題就是物理距離的增加和光信號(hào)的衰減和傳輸?shù)男阅芙档?,Oracle ASM考慮到提升一部分功能,在參數(shù)里提供了asm_preferred_read_failure_groups這個(gè)參數(shù),也就是說當(dāng)做物理讀的時(shí)候每一個(gè)機(jī)房里的節(jié)點(diǎn)(RAC節(jié)點(diǎn))都可以配置自己優(yōu)先讀的“機(jī)房” ,這樣可以保證“讀”不受“距離”的影響,但是“寫” 是必須要在雙節(jié)點(diǎn)都完成的,所以對(duì)于ASM來說對(duì)于“寫”也沒有特別好的辦法解決距離產(chǎn)生的延遲。 當(dāng)然這個(gè)時(shí)候如果RAC的節(jié)點(diǎn)的使用和劃分以及應(yīng)用層的布置是都慎重考慮的,否則有可能會(huì)出現(xiàn)本來業(yè)務(wù)應(yīng)該登陸節(jié)點(diǎn)1 而因?yàn)榕渲脝栴}缺被隨機(jī)分到了節(jié)點(diǎn)2,那這個(gè)時(shí)候反而適得其反。(liuh

5、efromoracle)分享三:數(shù)據(jù)雙活和網(wǎng)絡(luò)延遲的性能問題是一個(gè)很難平衡的問題。常見的方案是采用專線連接,更快的服務(wù)器,優(yōu)化的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和應(yīng)用,而且?guī)资锏木嚯x只能算同城,對(duì)于數(shù)據(jù)雙活而言并不是很大的問題,當(dāng)然也可以選擇較近的距離作為數(shù)據(jù)中心位置。(韓成亮)分享四:數(shù)據(jù)寫到主服務(wù)器,commit時(shí)復(fù)制到從服務(wù)器。復(fù)制完畢commit完成。只有commit有性能問題,是批量操作性質(zhì),可以把通信開銷降到最低。但是如果有鎖,鎖的傳遞需要時(shí)間。復(fù)制時(shí)如果從服務(wù)器失效,操作應(yīng)該依然成功,要在主服務(wù)器記錄從服務(wù)器遺漏事務(wù)。待從服務(wù)器復(fù)活,回復(fù)遺漏事務(wù)。如果寫幾千條記錄到主服務(wù)器,這期間沒有復(fù)制開銷。

6、在commit時(shí)復(fù)制,產(chǎn)生一個(gè)批量傳輸,開銷是很小的。但是如果主機(jī)從機(jī)都在錄入數(shù)據(jù),他們之間是否有重復(fù)記錄是不易檢測的。一個(gè)辦法是commit時(shí)檢測,重復(fù)數(shù)據(jù)導(dǎo)致commit失敗。如果在恢復(fù)遺漏事務(wù)時(shí)發(fā)生重復(fù)記錄啦,唯一的辦法是拋棄重復(fù)記錄。所以主從系統(tǒng)需要階段性一致性檢查,如果有不一致數(shù)據(jù),以時(shí)間戳最新的為準(zhǔn)。(匿名用戶)難點(diǎn)二:如何解決熱點(diǎn)數(shù)據(jù)在雙活環(huán)境的問題?分享一:熱點(diǎn)數(shù)據(jù)是指當(dāng)前業(yè)務(wù)頻繁訪問的數(shù)據(jù)。如果是單節(jié)點(diǎn)數(shù)據(jù)庫,這些數(shù)據(jù)集中在一起可以提高緩沖池命中率。但是在集群環(huán)境恰恰相反!不同數(shù)據(jù)庫成員節(jié)點(diǎn)訪問同樣的熱點(diǎn)數(shù)據(jù)會(huì)產(chǎn)生競爭問題。所以在集群環(huán)境,需要考慮熱點(diǎn)數(shù)據(jù)的分布。大的page

7、size會(huì)存放更多的row,會(huì)有更大的概率產(chǎn)生競爭。所以在集群環(huán)境,盡量使用小的pagesize, 例如4K。而對(duì)于熱點(diǎn)表,我們可用通過在使用分區(qū)表等數(shù)據(jù)庫技術(shù)來從物理上打散當(dāng)前的熱點(diǎn)數(shù)據(jù)。例如我們?cè)谟?jì)費(fèi)系統(tǒng)的雙活環(huán)境里面,針對(duì)熱點(diǎn)的日志表,傳統(tǒng)分區(qū)表一般使用時(shí)間列來組合數(shù)據(jù),而我們是用了current member這個(gè)變量和序列號(hào)組合,做了個(gè)隱藏列,實(shí)現(xiàn)本地節(jié)點(diǎn)插入數(shù)據(jù)落在自己單獨(dú)的分區(qū)里,同時(shí)本地分區(qū)也是被輪詢使用,徹底打散熱點(diǎn)數(shù)據(jù)。部分定義如下:SERIALIZED_REQUEST BLOB(1048576) INLINE LENGTH 1000 LOGGED NOT COMPACT ,

8、CURMEM SMALLINT IMPLICITLY HIDDEN WITH DEFAULT CURRENT NODE ,IDKEY SMALLINT IMPLICITLY HIDDEN GENERATED ALWAYS AS (MOD(ID,10) + MOD(CURMEM,4)*10) )COMPRESS YES ADAPTIVEINDEX IN TBS_LOG_IDX_4K PARTITION BY RANGE(IDKEY)(PART PART0 STARTING(0) IN TBS_LOG_DAT INDEX IN TBS_LOG_IDX_4K LONG IN TBS_CLOB_DAT

9、,對(duì)于熱點(diǎn)表的熱點(diǎn)索引,建議使用分區(qū)索引,random索引等方式。也可以加入current member列作為索引的一部分,從而減少成員節(jié)點(diǎn)間的競爭。(孔再華)分享二:主要是通過部署負(fù)載均衡設(shè)備,當(dāng)然熱點(diǎn)數(shù)據(jù)的可以通過讀寫分離和緩存來實(shí)現(xiàn),業(yè)務(wù)層面或者架構(gòu)層面的調(diào)整其實(shí)是最簡潔有效的。(馮帥)難點(diǎn)三:在雙活環(huán)境應(yīng)該怎么設(shè)計(jì)數(shù)據(jù)庫對(duì)象?分享一:其實(shí)作為雙活環(huán)境不可避免的存在很多問題,比如說網(wǎng)絡(luò)延遲,熱點(diǎn)數(shù)據(jù),數(shù)據(jù)耦合等,其實(shí)最主要是數(shù)據(jù)的一致性,作為雙中心的環(huán)境,我們需要保證數(shù)據(jù)庫的一致性,這個(gè)就要求我們?cè)谠O(shè)計(jì)表或者其他對(duì)象的時(shí)候需要考慮這方面可能出現(xiàn)的問題,加強(qiáng)對(duì)于業(yè)務(wù)維護(hù)時(shí)間戳的維護(hù),同時(shí)減

10、少雙數(shù)據(jù)中心的單個(gè)時(shí)間點(diǎn)的高數(shù)據(jù)交互,對(duì)業(yè)務(wù)邏輯進(jìn)行拆分打散,避免大事務(wù)對(duì)復(fù)制延遲的影響,這就要求我們?cè)谠O(shè)計(jì)表的時(shí)候需要進(jìn)行更加細(xì)致的拆分,特別是對(duì)于熱點(diǎn)數(shù)據(jù),盡量使用緩存處理。(韓成亮)難點(diǎn)四:本地?cái)?shù)據(jù)庫雙活的異地容災(zāi)該怎么做?分享一:數(shù)據(jù)庫雙活環(huán)境做異地容災(zāi)就是選擇如何復(fù)制數(shù)據(jù)。復(fù)制數(shù)據(jù)有兩種方式,一種是通過存儲(chǔ)復(fù)制,另一種是通過數(shù)據(jù)庫復(fù)制技術(shù)。存儲(chǔ)復(fù)制只需要復(fù)制單數(shù)據(jù)中心的數(shù)據(jù),在異地搭建同架構(gòu)的集群環(huán)境(可以使輕量級(jí)的,資源配置不要求一致)。我行就有系統(tǒng)通過SRDF存儲(chǔ)異步復(fù)制技術(shù)將數(shù)據(jù)復(fù)制到異地。數(shù)據(jù)庫復(fù)制技術(shù)更推薦使用。因?yàn)閿?shù)據(jù)集復(fù)制技術(shù)能夠規(guī)避存儲(chǔ)復(fù)制壞塊的風(fēng)險(xiǎn)。同時(shí)對(duì)網(wǎng)絡(luò)帶寬的

11、壓力也小很多(只復(fù)制變化的日志)。這個(gè)是更加推薦的方式。(孔再華)分享二:異地容災(zāi)主要看你需要實(shí)現(xiàn)什么樣的級(jí)別。常見的容災(zāi)方案有1 基于存儲(chǔ)層的容災(zāi)復(fù)制方案2 基于邏輯卷的容災(zāi)復(fù)制方案3 基于log的邏輯復(fù)制方式(ORACLE REDO、MYSQL binlog)4 還有一些第三方的軟件5 自己開發(fā)的一些腳本或者工具其實(shí),總的來說,本地?cái)?shù)據(jù)庫雙活的異地容災(zāi),單活異地容災(zāi)最大的區(qū)別在于,你以哪個(gè)為主,同步的頻率,同時(shí),如果你的環(huán)境已經(jīng)是雙活,那么異地容災(zāi)說白了僅僅是一個(gè)冷備。至于如何做,需要切合你的業(yè)務(wù)需求。(韓成亮)難點(diǎn)五:有沒有針對(duì)雙活環(huán)境的數(shù)據(jù)庫開發(fā)規(guī)范?分享一:在雙活環(huán)境大部分開發(fā)規(guī)范是

12、和單機(jī)數(shù)據(jù)庫的開發(fā)規(guī)范一樣的,但是有寫針對(duì)這個(gè)環(huán)境特點(diǎn)的開發(fā)規(guī)范:事務(wù)處理設(shè)計(jì):盡量避免熱點(diǎn)數(shù)據(jù)和不必要的數(shù)據(jù)重復(fù)訪問。例如計(jì)費(fèi)系統(tǒng)的查重,入表,更新表等操作,可以改變?yōu)樽詈笾徊迦胍粭l最終的記錄。盡量將業(yè)務(wù)分表。例如計(jì)費(fèi)里面將不同的業(yè)務(wù)計(jì)入不同的流水表里面。合理設(shè)計(jì)索引。不要建立不必要的索引,適當(dāng)使用聚合索引。批處理:由于CF通信和存儲(chǔ)復(fù)制的延時(shí),雙活環(huán)境的單個(gè)事務(wù)會(huì)比單機(jī)版慢,所以批處理建議通過提高并發(fā)的方式來加快處理速度。拆分批處理,將單次批拆成多個(gè)批一起跑。例如一天的歸檔拆成按照小時(shí)的歸檔。作業(yè)拆分,使用跟多并發(fā)的方式處理單個(gè)批處理。報(bào)表:在雙活環(huán)境里面運(yùn)行實(shí)時(shí)報(bào)表需要慎重,防止GBP的

13、DE空間被占滿。盡量避免出現(xiàn)全表掃描的報(bào)表。合理安排利用索引,減少記錄掃描數(shù)量。(孔再華)分享二:其實(shí)還有一些更加嚴(yán)格的安全規(guī)范,行為規(guī)范1. 表結(jié)構(gòu)變更必須通知DBA進(jìn)行審核。2. 禁止有super權(quán)限的應(yīng)用程序賬號(hào)存在。3. 禁止有DDL、DCL權(quán)限的應(yīng)用程序賬號(hào)存在。4. 重要項(xiàng)目的數(shù)據(jù)庫方案選型和設(shè)計(jì)必須提前通知DBA參與。5. 批量導(dǎo)入、導(dǎo)出數(shù)據(jù)必須通過DBA審核,并在執(zhí)行過程中觀察服務(wù)。6. 批量更新數(shù)據(jù),如UPDATE、DELETE操作,必須DBA進(jìn)行審核,并在執(zhí)行過程中觀察服務(wù)。7. 產(chǎn)品出現(xiàn)非數(shù)據(jù)庫導(dǎo)致的故障時(shí),如被攻擊,必須及時(shí)通DBA,便于維護(hù)服務(wù)穩(wěn)定。8. 業(yè)務(wù)部門程序出現(xiàn)BUG等影響數(shù)據(jù)庫服務(wù)的問題,必須及時(shí)通知DBA,便于維護(hù)服務(wù)穩(wěn)定。9. 業(yè)務(wù)部門推廣活動(dòng)或上線新功能,必須提前通知DBA進(jìn)行服務(wù)和訪問量評(píng)估,并留出必要時(shí)間以便DBA完成擴(kuò)容。10. 出現(xiàn)業(yè)務(wù)部門人為誤操作導(dǎo)致

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論