dbswitch 部署 - 异构数据库数据与结构同步工具 安装部署


https://gitee.com/inrgihc/dbswitch/releases

https://gitee.com/inrgihc/dbswitch.git

dbswitch工具提供源端数据库向目的端数据的迁移功能,包括全量和增量方式。迁移包括:

---结构迁移

字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。

---数据迁移。

基于JDBC的分批次读取源端数据库数据,并基于insert/copy方式将数据分批次写入目的数据库。

支持有主键表的 增量变更同步 (变化数据计算Change Data Calculate)功能(千万级以上数据量慎用)

---模块结构功能

└── dbswitch

    ├── dbswitch-common    // dbswitch通用定义模块

    ├── dbswitch-pgwriter  // PostgreSQL的二进制写入封装模块

    ├── dbswitch-dbwriter  // 数据库的通用批量Insert封装模块

    ├── dbswitch-core      // 数据库元数据抽取与建表结构语句转换模块

    ├── dbswitch-sql       // 基于calcite的DML语句转换与DDL拼接模块

    ├── dbswitch-dbcommon  // 数据库操作通用封装模块

    ├── dbswitch-dbchange  // 基于全量比对计算变更(变化量)数据模块

    ├── dbswitch-dbsync    // 将dbchange模块计算的变更数据同步入库模块

    ├── dbswitch-data      // 工具入口模块,读取配置文件中的参数执行异构迁移同步

    ├── dbswitch-webapi    // dbswitch-core与dbswitch-sql的RESTful接口模块

    ├── package-tool       // 基于maven-assembly-plugin插件的项目打包模块


cd   /opt

git clone https://gitee.com/inrgihc/dbswitch.git

cd dbswitch/

sh ./build.sh

当编译打包命令执行完成后,

会在dbswitch/target/目录下生成dbswitch-relase-x.x.x.tar.gz的打包文件,

将文件拷贝到已安装JRE的部署机器上解压即可



#配置

---配置文件信息请见部署包中的:conf/config.properties

配置参数配置说明示例备注
dbswitch.source[i].url来源端JDBC连接的URLjdbc:oracle:thin:@10.17.1.158:1521:ORCL可为:oracle/mysql/mariadb/sqlserver/postgresql/db2
dbswitch.source[i].driver-class-name来源端数据库的驱动类名称oracle.jdbc.driver.OracleDriver对应数据库的驱动类
dbswitch.source[i].username来源端连接帐号名tangyibo
dbswitch.source[i].password来源端连接帐号密码tangyibo
dbswitch.source[i].fetch-size来源端数据库查询时的fetch_size设置10000需要大于100有效
dbswitch.source[i].source-schema来源端的schema名称dbo,test多个之间用英文逗号分隔
dbswitch.source[i].prefix-table创建对应目的表的前缀TA_不能含有特殊字符,可以为空; 建议最长为8个字符,以下划线结尾
dbswitch.source[i].source-includes来源端schema下的表中需要包含的表名称users1,orgs1多个之间用英文逗号分隔
dbswitch.source[i].source-excludes来源端schema下的表中需要过滤的表名称users,orgs不包含的表名称,多个之间用英文逗号分隔
dbswitch.target.url目的端JDBC连接的URLjdbc:postgresql://10.17.1.90:5432/study可为:oracle/sqlserver/postgresql/greenplum,mysql/mariadb/db2也支持,但字段类型兼容性问题比较多
dbswitch.target.driver-class-name目的端 数据库的驱动类名称org.postgresql.Driver对应数据库的驱动类
dbswitch.target.username目的端连接帐号名study
dbswitch.target.password目的端连接帐号密码123456
dbswitch.target.target-schema目的端的schema名称public目的端的schema名称只能有且只有一个
dbswitch.target.target-drop是否执行先drop表然后create表命令,当target.datasource-target.drop=true时有效true可选值为:true、false
dbswitch.target.create-table-auto-increment是否执启用支持create表时主键自增true可选值为:true、false
dbswitch.target.writer-engine-insert是否使用insert写入数据false可选值为:true为insert写入、false为copy写入,只针对目的端数据库为PostgreSQL/Greenplum的有效
dbswitch.target.change-data-synch是否启用增量变更同步,dbswitch.target.target-drop为false时且表有主键情况下有效,千万级以上数据量建议设为falsefalse可选值为:true、false

注意:

  • (1)支持源端为多个数据源类型,如果dbswitch.source[i]为数组类型,i为编号,从0开始的整数;

  • (2)如果dbswitch.source[i].source-includes不为空,则按照包含表的方式来执行;

  • (3)如果dbswitch.source[i].source-includes为空,则按照dbswitch.source[i].source-excludes排除表的方式来执行。

  • (4)如果dbswitch.target.target-drop=false,dbswitch.target.change-data-synch=true;时会对有主键表启用增量变更方式同步

  • mysql/mariadb的驱动配置样例

jdbc连接地址:jdbc:mysql://172.17.2.10:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true 
jdbc驱动名称: com.mysql.cj.jdbc.DriverCopy to clipboardErrorCopied
jdbc连接地址:jdbc:mariadb://172.17.2.10:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true 
jdbc驱动名称: org.mariadb.jdbc.DriverCopy to clipboardErrorCopied
  • oracle的驱动配置样例
jdbc连接地址:jdbc:oracle:thin:@172.17.20.58:1521:ORCL 
jdbc驱动名称:oracle.jdbc.driver.OracleDriverCopy to clipboardErrorCopied
  • SqlServer(>=2005)的驱动配置样例
jdbc连接地址:jdbc:sqlserver://172.16.20.66:1433;DatabaseName=hqtest 
jdbc驱动名称:com.microsoft.sqlserver.jdbc.SQLServerDriverCopy to clipboardErrorCopied
  • PostgreSQL的驱动配置样例
jdbc连接地址:jdbc:postgresql://172.17.20.10:5432/study 
jdbc驱动名称:org.postgresql.Driver


---启动执行命令:

cd dbswitch-release-X.X.X/

bin/datasync.sh


-特别说明

1、对于向目的库为PostgreSQL/Greenplum的数据离线同步默认采用copy方式写入数据,说明如下:

(a) 如若使用copy方式写入,配置文件中需配置为postgresql的jdbcurl和驱动类(不能为greenplum的驱动包),

(b) 如若使用insert方式写入,需要在config.properties配置文件中设置如下参数为true:

dbswitch.target.writer-engine-insert=true


2、dbswitch离线同步工具提供各种数据库间表结构转换RESTful类型的API接口,服务启动方式如下:

cd dbswitch-release-X.X.X/

bin/startup.sh

提供swagger在线接口文档:htttp://127.0.0.1:9088/swagger-ui.html


3、dbswitch离线同步工具支持的数据类型包括:整型、时间、文本、二进制等常用数据类型;


4、Oracle的表虽然设置了主键,如果主键约束实际为DISABLED状态,那在进行结构转换时会按照没有此主键处理。


5、关于增量变更同步方式的使用说明

步骤A:先通过设置dbswitch.target.target-drop=true,dbswitch.target.change-data-synch=false;启动程序进行表结构和数据的全量同步;

步骤B:然后设置dbswitch.target.target-drop=false,dbswitch.target.change-data-synch=true;再启动程序对(有主键表)数据进行增量变更同步。

注:如果待同步的两端表结构已经一致或源端字段是目的端字段的子集,也可直接用步骤B配置进行变更同步


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回