1. 程式人生 > >愚公oracle數據庫同步工具

愚公oracle數據庫同步工具

開發環境 follow 物化視圖 中斷 影響 簡潔 時間 trac 工具

最近,利用一些時間對oracle數據庫實時同步工具做了一些調研分析,主要關註了linkedin的databus和阿裏的yugong兩個中間件,其中databus需要在每個待同步的表上增加額外的列和觸發器來實現,方案比較重,本文將著重分析一下阿裏的yugong實現方案及給出分析調研報告。

1.yugong實時同步原理

使用了oracle的物化視圖日誌功能,類似於一個內部的觸發器,原表的數據庫需要對用戶授權具有物化視圖日誌的創建和刪除權限,關於物化視圖日誌的詳細描述,可以參考下面的文章:

http://blog.csdn.net/tianlesoftware/article/details/7720580

2.性能測試

a.在測試環境1的原表(TEST_SOURCE)新生成300萬數據

b.為不影響開發環境的數據,修改yugong代碼,將目標表改為TEST_SOURCE_BAK

c.啟動yugong服務,開始同步數據

d.經過1.5小時,同步完所有增量數據

3.數據延時測試

a.分別手動對原表數據進行了增改刪操作,10秒鐘內可以實現數據同步

b.在目標庫中新增一列,類型為時間類型,默認值為當前時間

c.使用腳本反復在原庫中生成一批數據(50條為一批)

d.所有數據的延遲時間都在30秒以內

4.數據完整性測試

a.手工隨機抽查數據,對比同一條記錄的各個列值,數據都是一致的

b.使用jdbc抽出特定的記錄集合,使用md5函數,md5結果一致

5.其它測試用例

a.原表增加字段,而目標表不增加,數據正常同步

b.目標表先增加字段,原表不增加字段,數據正常同步

c.原表和目標表同時增加字段,服務需要重新啟動後才可以進行數據同步

d.無主鍵測試,yugong不支持無主鍵同步

e.主鍵為多列測試,可以正常同步

f.yugong服務連續運行72個小時,中間出現過一次同步中斷,原因不明

g.物化視圖日誌在事務中rollback時,會同步rollback

h.目標表將某條記錄刪除,原表將此記錄更新,此記錄會重新同步到目標表

6.yugong分析

a.代碼簡潔,分為extractor(提取)、translator(翻譯)、applier(更新到目標庫)三個部分

b.只有一個服務,無其它第三方依賴

c.原理簡單,可以按照我們的意圖來更改代碼

愚公oracle數據庫同步工具