天天看點

[開源]一款開源的資料同步中間件,支援任意搭配表同步映射關系

作者:一飛開源
一飛開源,介紹創意、新奇、有趣、實用的免費開源應用、系統、軟體、硬體及技術,一個探索、發現、分享、使用與互動交流的開源技術社群平台。緻力于打造活力開源社群,共建開源新生态!

一、開源項目簡介

[開源]一款開源的資料同步中間件,支援任意搭配表同步映射關系

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(推薦版本以上)

安裝配置

步驟

  1. 安裝JDK 1.8(省略詳細)
  2. 下載下傳安裝包DBSyncer-1.0.0-RC.zip(也可手動編譯)
  3. 解壓安裝包,Window執行bin/startup.bat,Linux執行bin/startup.sh
  4. 打開浏覽器通路:http://127.0.0.1:18686
  5. 賬号和密碼: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/

繼續閱讀