愚公oracle數據庫同步工具
最近,利用一些時間對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數據庫同步工具