概念
同步的數據傳輸的特點有 :
1) 同步講究數據傳輸的時效性, 要求對於數據的變化要快速反應。
2) 同步的數據通常是少量的。
背景
在資料庫同步技術出現之前,只能通過備份和恢復來複製一個新的資料庫。
但是這個方法有比較大的問題:
1) 備份和恢複數據庫需要很長的時間
2)恢復後的數據和源庫沒有辦法保持一致, 源庫修改後,需要再次備份/恢復, 這樣目的庫才能得到新數據。
目的
企業的大量寶貴數據都存儲在資料庫中。但是目前大量的企業套用系統中線上的資料庫通常就只有一份,如果這一個運行中的資料庫出問題了,結果可能就是災難性的。
為了保證資料庫的可靠運行,目前採用的通常是HA+備份。
備份是保留了額外的數據,但是問題是數據不是最新的,通常是會丟失至少一天的數據。
HA通常的作用是保證資料庫服務庫有2台以上,來減少系統當機的可能性,但是不能解決ONLINE數據只有一份的問題。
因此,希望能夠得到另外一個ONLINE資料庫的渴望推動了資料庫同步技術的發展。
同步內容
針對於具體的資料庫 - ORACLE,同步的數據可以分為兩大類:
1) DML數據 --- 這些是數據操控指令。 包含INSERT/UPDATE/DELETE語句。
2) DDL數據 --- 這些是數據描述指令。 這個就非常的複雜,常用的有TABLE/INDEX的相關語句。
同步技術
無論國內國外, 目前數據同步的基本技術流程就是:
1)讀取源數據的重做日誌 - REDOLOG,
2)然後分析出SQL語句
3) 然後到目的庫執行
產品
國外產品
QUEST 的shareplex:
這個公司還開發TOAD,這個SHAREPLEX沒有TOAD使用廣泛。
Oracle的GoldenGate :
原來是獨立開發的, 後來被ORACLE 用一億美金收購, 現在由ORACLE力推。
國內產品
沃信科技的PORER ACTIVE CLONE(PAC):
由深圳沃信科技獨立開發。
產品考量要點
資料庫同步的概念並不複雜, 但是實際產品部署的過程中非常的複雜。
因此,對於產品供應商的產品需要進行仔細的考量。
穩定行/性能/兼容性? 那個最重要的呢?
最重要的是兼容性! 為什麼呢。
資料庫同步的其實是交易。 交易有ACID的特性。
交易的ACID特性原來是資料庫上的, 現在加入了同步軟體,那么這些特性也需要在同步軟體上體現。
具體的問題如下:
1)如果源庫的日誌檔案沒有辦法讀取, 同步如何解決?
2)如果同步軟體因各種原因退出, 如何解決?
3)如果目的庫無法連線, 如何解決?
4)如果網路突然中斷, 如何保證同步的交易完整性?
5)如果主庫和備庫的物理存儲結構不一致, 如何解決DDL複製的問題?
...
套用案例
海上的FPOS(單點系泊船)運行了基於ORACLE 的ERP, 基地上為FPOS服務的部門運行另外的同版本ERP, 海上系統中的工單(WORK ORDER)需要通過衛星線路(頻寬3K)傳輸到基地, 基地上的採購單(PURCHASE ORDER)需要傳輸到海上。
為了實現工單和採購單在兩個ONLINE資料庫之間的傳輸, 就需要用到資料庫同步技術來完成。
這個套用的要點就是要解決不穩定網路, 低頻寬, 數據的雙向傳輸問題。