基於交易日誌的數據庫同步和熱備

基於交易日誌的數據庫同步和熱備
何謂交易日誌


        數據庫日誌是記錄對數據庫詳細操作的文件,包含在線日誌和歸檔日誌,但是歸跟到底,數據庫是爲了保證交易完整性而放棄了簡單的文件操作,必須通過相關文件的集合來完成一組不能劃分的交易處理,同時可以通過這些操作回滾到交易之前的某數據時刻。
        基於上述考慮,交易日誌就應運而生了,他允許我們通過特定工具查看相關交易發生時的一些要素,比如時間、用戶、SQL語句等,它是數據庫日誌中和應用系統產生的交易關係緊密的數據庫操作、數據集合。
交易日誌和數據區別


        交易日誌中包含了數據庫的DDL、DML、DCL操作日誌,不只含有各時刻日誌,還含有各時刻數據,這樣我們通過對交易日誌的分析能夠得出用於交易審計的熱點數據:日期、時間、用戶名、操作類型、表名、操作字段等,通過這些數據我們就可以得出一些具體的和交易相關的歷史操作數據,從而達到對操作和數據在某一時刻的三維審計。
        但是數據庫中的數據就不一樣了,它永遠是某一時刻的真實數據,它只反映查看點時刻的數據情況,無法記錄歷史,如果想通過交易層面進行歷史數據分析,那麼只好建立歷史操作表,在每次操作完成後把操作內容記錄在該表中,但這樣做永遠無法達到通過日誌進行分析的精細度和安全性,因爲我們平時的SQL語句記錄的只是部分字段,無法象日誌那樣記錄全部字段內容,從而讓我們無法瞭解該交易操作前的記錄原始面貌如何;同時這樣操作又增大了數據庫的負擔,讓數據庫記錄了更多不屬於交易系統的數據,增大了系統開銷;另外,簡單的操作即可讓整個表數據消失,這樣增大了很多系統管理風險。
交易日誌用於同步


        對於同步和熱備大家已經不陌生,同步是熱備的基礎,只有從主庫同步相關的操作到備庫執行,才能保證數據在備庫完整重現,而同步的時候考慮到併發效率和整個數據庫的所有表,就產生了熱備的效果。
        爲何使用交易日誌能夠實現同步和熱備的功能呢?這是因爲,通過對交易日誌的分析,我們掌握了主庫中成功交易的完整原子操作,之後我們把原子操作在備庫執行就完全可以再現主庫執行的結果,從而實現了同步的功能,有時我們並不需要把數據文件的改變傳導到備庫,而是需要把數據改變的操作應用於備庫即可達到同步的目的。
交易日誌的同步特點


基於交易日誌的同步,有很多優勢:
1、按需複製

        可以根據用戶名、表名、甚至字段進行選擇性複製
2、備庫活動

        因爲數據庫要執行交易,所以備庫是屬於常開模式,所以很多系統可以拿備庫作爲查詢統計的數據源來爲主庫分擔壓力,同時由於同步的實時性,保證查詢統計的時點大大提前於數據倉庫提供的數據源
3、支持不同操作系統

        因爲我們是通過讀日誌來進行分析的,那我們只需要一個數據庫連接就足夠了,不過當然這個連接的
權限是能夠訪問到數據庫的日誌級別
4、支持衛星帶寬

        因爲我們只傳輸SQL語句,所以我們的同步模式傳輸的數據永遠是最少的,即使帶寬很小我們也能傳輸
5、支持斷點續傳

        因爲交易日誌是由同步軟件進行分析的,那麼通過記錄分析日誌的相關斷點我們就能夠找到網絡異常時最後一條交易日誌的位置;同樣在備庫執行時,我們可以通過備庫的交易日誌分析出來在備庫的執行語句是否已經成功
6、不在主庫安裝程序

        對於交易日誌的獲取我們數據庫連接即可,而不需要在主備庫上安裝程序,這樣對主庫的CPU和內存影響
達到最小
與其他技術的差異


目前世界上的數據庫同步技術主要有三種:
1、觸發器方式

        此種方式必須要在主庫上針對每張表建立相應的觸發器,只要該表進行操作,就記錄操作前的SQL語句,並在操作後的條件中增加到備庫的執行,此種方式部署簡單,原理簡單,但是需要在主庫進行大量操作,所以佔用主庫資源較大,適合小微企業壓力不大的服務器使用
2、數據格式分析

        此種方式需要在數據文件寫入時進行捕捉,之後把備庫中相應的數據進行修改,此種方式多爲存儲設備廠家使用,因爲通過對底層數據寫入的監視,可以獲得數據具體改變的位置,但此種方法的限制是主、備庫數據文件要一致,同時此種方法無法達到對交易SQL語句的分析,並且備庫是不能進行操作的,防止備庫數據會有所改變
3、日誌文件分析

        此種方式最多,通過對日誌文件的監視,對改變的日誌文件進行分析,可以定位出相關交易的SQL集合,從而在備庫執行,數據庫日誌可以獲取的很完整,但是此種方法的最大問題是要讀取和分析主庫日誌文件格式,所以同步程序必須要安裝在主庫,對不同操作系統的數據需要進行不同的版本維護,另外對每種數據庫不同版本的日誌文件都需要進行相應的分析,導致後期維護工作巨大。
4、交易日誌方式

        這是目前數據庫同步部署起來最簡便的方式,通過數據庫連接讀取數據庫日誌,不需要訪問數據庫日誌文件,另外和操作系統無關,和數據庫版本無關,程序維護只需要一個版本加上不同的功能模塊即可保持軟件產品的組合高效

        目前,數據庫同步主要由上面四種技術來進行支撐,其中3、4這兩種都是對日誌的讀取,只是交易日誌方式讓我們看到了更多的靈活性,讓同步熱備實現起來更加簡單也更容易維護,同時基於自身獨有的特點很多是其他方式做不到的,更加具有吸引力。

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