一、database-sync簡介
database-sync作為一種開源輔助工具,用于資料庫之間的表同步,更確切的說法是復制,可以從一個資料庫復制表到另一個資料庫
-
該工具支持的功能如下:
(1)自動同步表欄位,如:源表擴欄位,目標表自動擴欄位(2)支持增量或全量同步資料
(3)支持指定欄位同步,只同步關心的欄位
-
支持的關系型資料庫:
mysql、db2、postgresql、oracle、sqlserver
-
源代碼下載:
database-sync代碼托管在github上
源代碼下載:下載
二、database-sync適配openGauss
目標:database-sync適配openGauss資料庫,可支持openGauss與其他資料庫之間實作資料同步
源代碼下載:適配openGauss的源代碼已上傳到個人倉庫下的“douxin_master”分支
下載鏈接:下載
三、程式使用說明
前提:已安裝Java JDK 1.8或更高版本,安裝maven
Step 1:下載代碼并打包
git clone下載 douxin_master分支的代碼,并進行打包
git clone https://gitee.com/ywzq1161327784/database-sync.git
cd database-sync/
git checkout origin/douxin_master
mvn clean package -Dmaven.test.skip=true
打包后,target目錄內容如下:

Step 2:構建可執行工程目錄
將mylib目錄、target下的lib目錄和database-sync-1.3.jar包復制到同一目錄下,并創建一個config目錄,在其下創建config.json檔案寫入配置資訊,目錄結構如下所示:

Step 3:撰寫組態檔
資料庫連接資訊以json格式配置在config/config.json檔案中,每個節點包含type、driver、url、user、password、tbspace_ddl、encoding資訊,
其中type指定資料庫型別,取值為db2、postgres、mysql、oracle、sqlserver、openGauss,特別地,對于openGauss資料庫需指定“type”:“openGauss”;
tbspace_ddl指定表空間陳述句,encoding指定編碼方式,
組態檔示例:
{
"database1":{
"type":"openGauss",
"driver":"org.postgresql.Driver",
"url":"jdbc:postgresql://ip:port/postgres",
"user": "****",
"password":"******",
"tbspace_ddl": "",
"encoding":"utf-8"
},
"database2":{
"type":"postgres",
"driver":"org.postgresql.Driver",
"url":"jdbc:postgresql://ip:5432/postgres",
"user": "****",
"password":"******",
"tbspace_ddl":"WITH (compression=no, orientation=orc, version=0.12)\ntablespace hdfs\n",
"encoding":"utf-8"
},
"database3":{
"type":"oracle",
"driver":"oracle.jdbc.driver.OracleDriver",
"url":"jdbc:oracle:thin:@localhost:1521:orcl",
"user": "****",
"password":"****",
"tbspace_ddl": "",
"encoding":"utf-8"
},
"database4":{
"type":"db2",
"driver":"com.ibm.db2.jcc.DB2Driver",
"url":"jdbc:db2://ip:port/wbsj",
"user": "****",
"password":"****",
"tbspace_ddl": "",
"encoding":"utf-8"
},
"database5":{
"type":"mysql",
"driver":"com.mysql.cj.jdbc.Driver",
"url":"jdbc:mysql://localhost:3306/aarondb",
"user": "****",
"password":"****",
"encoding":"utf-8"
},
"buffer-rows": 100000
}
Step 4:查看程式幫助資訊
在步驟2中的目錄下,執行java -jar database-sync-1.3.jar -h命令可查看程式運行的幫助資訊

其中[]表示可選引數,包括如下幾種:
-
–version或者-v表示列印版本資訊并退出;
-
–help或者-h表示列印幫助資訊并退出;
-
–sync-ddl或者-sd 表示自動同步表結果,默認情況下不會自動同步表結構,因此不指定該引數時,同步表時下述的目標表{toDB}需存在;
-
–from_fields=col1,col2或者-ff=col3,col4表示指定原表的欄位序列;
-
–to_fields=col1,col2或者-tf=col3,col4表示指定目標表的欄位序列;
-
–no-feture或者-nf表示不使用特定資料庫的特性;
-
[whereClause]表示where條件,用于增量更新,
{}表示必選引數,共有6個,分別說明如下:
{fromDB}表示原表所在的資料庫資訊,在Step3所示的組態檔中,可以取值為database1,database2等;
-
{fromSchema}表示原表的模式名;
-
{fromTable}表示原表的表名;
-
{toDB}表示目標表所在的資料庫資訊;
-
{toSchema}表示目標表的模式名;
-
{toTable}表示目標表的表名,
Step 5:跨資料庫間實作表資料同步
eg 1:從postgres到openGauss實作表同步
java -jar database-sync-1.3.jar -sd postgres public test_0322 opengauss1 public test_0322_1

eg 2:從openGauss到postgres實作表同步
java -jar database-sync-1.3.jar -sd opengauss1 public test_0322_1 postgres public test_0322

至此,可實作openGauss資料庫與其他資料庫間的表資料同步
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355313.html
標籤:java
