使用數據庫同步中間件DBSyncer實現不同數據庫的數據同步
有去O(ORACLE數據庫)、信創(chuàng)、國產化數據庫等項目實踐的同學應該都遇到過不同數據庫之前進行數據遷移的問題,雖然有各種工具可以實現,但是有些工具的部署、使用比較復雜,也有些工具遷移數據效率很低。本文將介紹一款開源且部署、使用簡單、遷移相對高效的數據庫中間件DBSyncer來進行數據遷移。該工具支持Oracle、MySQL、PostgreSQL、 SQL SERVER、ES、Kafka等數據庫之間的遷移。
1. 部署
推薦機器配置:內存8GB,4core,磁盤60GB(建議上好點的SSD)。
本次在Linux服務器上進行部署。
(1)部署JDK
根據官方文檔指引,需要安裝JDK8,具體可以自行在官方下載安裝。
我使用的8.0.191也可以。
(2)下載安裝包并進行部署啟動
DBSyncer分社區(qū)版記專業(yè)版,如果想試用專業(yè)版功能可以自行測試,本文將使用社區(qū)版進行測試。
下載:
社區(qū)版下載地址:https://gitee.com/ghi/dbsyncer/releases。
為了體驗新特性及優(yōu)化后的功能,可以下載最新版本,當前最新版本為2.0.4,選擇并進行下載。
wget https://gitee.com/ghi/dbsyncer/releases/download/v2.0.4/dbsyncer-2.0.4-bin.zip
解壓、啟動:
unzip dbsyncer-2.0.4-bin.zip
bin目錄下有啟停腳本、執(zhí)行運行即可
# 啟動
sh startup.sh
看到“Start successfully!”即啟動成功。
啟動后的管理頁面可以通過 http:// ip:18686進行登錄查看,默認管理賬號密碼為 admin/admin。
2. 數據遷移
(1)準備工作
本次測試的是從Oracle遷移數據至MySQL,因此先在Oracle數據庫中創(chuàng)建一張表及測試數據,在MySQL數據庫中也創(chuàng)建一張表。
Oracle庫:
CREATE TABLE test1(id int ,c1 varchar(20))
INSERT INTO test1 values(1,'a');
INSERT INTO test1 values(2,'b');
commit;
MySQL庫:
CREATE TABLE test1(id INT PRIMARY KEY ,c1 VARCHAR(20));
(2)配置數據源
配置一個名為oracle1的數據源,對應填寫連接信息、賬號密碼等,完成后保存即可
如果保存時不報錯,則說明連接添加成功,如果保存過程中有錯誤,則按照錯誤信息進行解決。
再配置一個MySQL數據源作為目標庫,MySQL的連接URL里要注意庫名的配置。
保存后即可在界面上看到對應的數據源。
(3)配置遷移任務
這個版本點擊“添加驅動”進行數據遷移任務的配置(建議修改名稱,以免有誤解)。
先選擇源目數據源,并配置一個任務名稱。
保存后進行相關表影射等配置,例如選擇表名及目標表,對應的主鍵名等。
在高級配置中還可以進行其他的轉換配置等。
任務配置完成后,可以在頁面上看到同步列表。
(4)啟動任務
點擊右上角的啟動按鈕即可啟動本任務。
啟動后會顯示”運行中“”的狀態(tài)。
完成后會顯示進度、耗時及成功數量。
去目標庫中查看結果,可以發(fā)現數據已同步進MySQL,至此本次數據遷移完成。
3. 小結
根據DBSyncer官方介紹,社區(qū)版的效率確實相對于專業(yè)版遷移效率差別很大,大家可以下載測試一下。另外,也可以配置大字段、大表,不同數據庫的兼容配置、增量同步等進行更個方面的測試。
除了DBSyncer,其他的數據遷移工具也可以多嘗試及對比。