如何保證數(shù)據(jù)庫同步中目的端交易提交的原子性 |
發(fā)布時間: 2012/7/27 17:23:29 |
數(shù)據(jù)庫同步過程中既要保證數(shù)據(jù)庫裝載的效率,又要保證數(shù)據(jù)庫每個交易的原子性,即保證一個事務(wù)中多條SQL語句執(zhí)行的成功出于以上目的,我們選擇多表并發(fā)加多斷點方式來進行同步,原理是取出需要同步的事務(wù),按照表及SQL語句量進行劃分,分給不同的進程來執(zhí)行,每個進程有一個斷點,當(dāng)一個表的某一條SQL語句執(zhí)行出錯的時候,該進程會記錄下此斷點,該表停止同步,其他表的數(shù)據(jù)同步繼續(xù)進行,當(dāng)手工處理完該表出錯的SQL語句后,該進程根據(jù)標(biāo)志把錯誤表需要同步的SQL語句重新執(zhí)行或跳過,這樣同步進程會繼續(xù),并且個別表的錯誤不會影響整體的同步 那么原子性如何能夠在同步過程中保持一致呢?借助網(wǎng)格斷點就可以達到該目的。網(wǎng)格斷點實際上就是把交易的SCN號和每條SQL語句的表順序進行關(guān)聯(lián),記錄該SCN號中的某條SQL語句執(zhí)行情況的流水文件,日志分析進程按照表名創(chuàng)建多個網(wǎng)格文件,內(nèi)容是SCN號以及執(zhí)行語句,按照SCN號來排序,這樣每個同步進程就可以讀取屬于自己的相關(guān)表文件,并按照SCN號的順序進行并發(fā)裝載,這樣保證同一時點的數(shù)據(jù)是按照SCN號進行裝載的,保證了在備庫上查詢統(tǒng)計的一致性。 當(dāng)每個進程執(zhí)行成功后就會修改自己對應(yīng)的斷點文件,所以當(dāng)系統(tǒng)出現(xiàn)異常的時候我們就會檢查所有的斷點文件,這樣數(shù)據(jù)庫就可以根據(jù)斷點情況繼續(xù)同步,對于不同的DDL和DML語句進行相應(yīng)的錯誤處理。 本文出自:億恩科技【www.riomediacenter.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |