如何保證數據庫同步中目的端交易提交的原子性

如何保證數據庫同步中目的端交易提交的原子性

    數據庫同步過程中既要保證數據庫裝載的效率,又要保證數據庫每個交易的原子性,即保證一個事務中多條SQL語句執行的成功出於以上目的,我們選擇多表併發 加多斷點方式來進行同步,原理是取出需要同步的事務,按照表及SQL語句量進行劃分,分給不同的進程來執行,每個進程有一個斷點,當一個表的某一條SQL 語句執行出錯的時候,該進程會記錄下此斷點,該錶停止同步,其他表的數據同步繼續進行,當手工處理完該表出錯的SQL語句後,該進程根據標誌把錯誤表需要 同步的SQL語句重新執行或跳過,這樣同步進程會繼續,並且個別表的錯誤不會影響整體的同步

    那麼原子性如何能夠在同步過程中保持一致呢?藉助網格斷點就可以達到該目的。網格斷點實際上就是把交易的SCN號和每條SQL語句的表順序進行關聯,記錄 該SCN號中的某條SQL語句執行情況的流水文件,日誌分析進程按照表名創建多個網格文件,內容是SCN號以及執行語句,按照SCN號來排序,這樣每個同 步進程就可以讀取屬於自己的相關表文件,並按照SCN號的順序進行併發裝載,這樣保證同一時點的數據是按照SCN號進行裝載的,保證了在備庫上查詢統計的 一致性。

    當每個進程執行成功後就會修改自己對應的斷點文件,所以當系統出現異常的時候我們就會檢查所有的斷點文件,這樣數據庫就可以根據斷點情況繼續同步,對於不同的DDL和DML語句進行相應的錯誤處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章