一飛開源,介紹創意、新奇、有趣、實用的免費開源應用、系統、軟體、硬體及技術,一個探索、發現、分享、使用與互動交流的開源技術社群平台。緻力于打造活力開源社群,共建開源新生态!
一、開源項目簡介
DBSyncer是一款開源的資料同步中間件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步場景。支援上傳插件自定義同步轉換業務,提供監控全量和增量資料統計圖、應用性能預警等。
特點
- 組合驅動,自定義庫同步到庫組合,關系型資料庫與非關系型之間組合,任意搭配表同步映射關系
- 實時監控,驅動全量或增量實時同步運作狀态、結果、同步日志和系統日志
- 開發插件,自定義轉化同步邏輯
二、開源協定
使用Apache-2.0開源協定
三、界面展示
✨預覽
驅動管理
驅動詳情
驅動表字段關系配置
監控
上傳插件
四、功能概述
應用場景
連接配接器 | 資料源 | 目标源 | 支援版本(包含以下) |
MySQL | ✔ | ✔ | 5.7.19以上 |
Oracle | ✔ | ✔ | 10gR2 -11g |
SqlServer | ✔ | ✔ | 2008以上 |
PostgreSQL | ✔ | ✔ | 9.5.25以上 |
ES | ✔ | ✔ | 6.0以上 |
Kafka | 開發中 | ✔ | 2.10-0.9.0.0以上 |
File | ✔ | ✔ | *.txt, *.unl |
SQL | ✔ | 支援以上關系型資料庫 | |
後期計劃 | Redis |
五、技術選型
設計
架構圖
開發依賴
- JDK - 1.8.0_40(推薦版本以上)
- Maven - 3.3.9(推薦版本以上)
安裝配置
步驟
- 安裝JDK 1.8(省略詳細)
- 下載下傳安裝包DBSyncer-1.0.0-RC.zip(也可手動編譯)
- 解壓安裝包,Window執行bin/startup.bat,Linux執行bin/startup.sh
- 打開浏覽器通路:http://127.0.0.1:18686
- 賬号和密碼:admin/admin
增量同步配置(源庫)
MySQL
- Dump Binlog二進制日志。Master同步Slave, 建立IO線程讀取資料,寫入relaylog,基于消息訂閱捕獲增量資料。
修改my.ini檔案,重新開機服務
#服務唯一ID
server_id=1
log-bin=mysql_bin
binlog-format=ROW
max_binlog_cache_size = 256M
max_binlog_size = 512M
#監聽同步的庫, 多個庫使用英文逗号“,”拼接
replicate-do-db=test
準備賬号用于資料同步(這裡我為test資料庫建立了ae86賬号,并授權)
CREATE USER 'ae86'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'ae86'@'%';
GRANT SELECT ON test.* TO 'ae86'@'%';
flush privileges;
Oracle
- CDN注冊訂閱。監聽增删改事件,得到rowid,根據rowid執行SQL查詢,得到變化資料。
1、授予賬号監聽權限, 同時要求目标源表必須定義一個長度為18的varchar字段,通過接收rowid值實作增删改操作。
grant change notification to 你的賬号
2、賬号必須是監聽表的OWNER
SELECT OBJECT_ID, OBJECT_NAME, OWNER FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER='你的賬号';
SqlServer
- SQL Server 2008提供了内建的方法變更資料捕獲(Change Data Capture 即CDC)以實作異步跟蹤使用者表的資料修改。
要求2008版本以上, 啟動代理服務(Agent服務), 連接配接賬号具有 sysadmin 固定伺服器角色或 db_owner 固定資料庫角色的成員身份。對于所有其他使用者,具有源表SELECT 權限;如果已定義捕獲執行個體的通路控制角色,則還要求具有該資料庫角色的成員身份。
啟動 代理 和 資料庫 服務
準備測試賬号,test
配置設定sysadmin角色
配置設定指定資料庫權限
PostgreSQL
- 通過複制流技術監聽增量事件,基于内置插件pgoutput、test_decoding實作解析wal日志
修改postgresql.conf檔案,重新開機服務
wal_level=logical
File
- 監聽檔案修改時間得到變化檔案,通過檔案偏移量讀取最新資料
監聽檔案實作方案
ES
- 定時擷取增量資料。
賬号具有通路權限。
日志
建議MySQL、SqlServer、PostgreSQL都使用日志
定時
假設源表資料格式
六、源碼位址
通路一飛開源:https://code.exmay.com/