2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00
2022-08-14 00:07:04 +08:00

异构数据库数据与结构同步工具

一、工具介绍

1、功能描述

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

  • 结构迁移

字段类型、主键信息、建表语句等的转换具有类似kettle的表输出组件生成建表SQL功能。

  • 数据迁移

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

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

2、功能设计

function

3、详细功能

  • 源端oracle/SqlServer/mysql/PostgreSQL向目的端为Greenplum的迁移

To-Greenplum

  • 源端oracle/SqlServer/mysql/PostgreSQL向目的端为Oralce的迁移

To-Greenplum

  • 源端oracle/SqlServer/mysql/PostgreSQL向目的端为SQLServer的迁移

To-Greenplum

  • 源端oracle/SqlServer/mysql/PostgreSQL向目的端为PostgreSQL的迁移

To-Greenplum

  • 源端oracle/SqlServer/mysql/PostgreSQL向目的端为MySQL的迁移

4、结构设计

structure

二、编译配置

本工具纯Java语言开发代码中的依赖全部来自于开源项目。

1、编译打包

  • 环境要求:

    JDK:>=1.8

    maven:>=3.6

  • 编译命令:

(1) windows下

 双击build.cmd脚本文件即可编译打包

(2) Linux下

git clone https://gitee.com/inrgihc/dbswitch.git
cd dbswitch/
sh ./build.sh

2、安装部署

当编译打包命令执行完成后会在dbswitch/target/目录下生成dbswitch-relase-x.x.x.tar.gz的打包文件将文件拷贝到已安装JRE的部署机器上解压即可。

3、配置文件

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

配置参数 配置说明 示例 备注
source.datasource.url 来源端JDBC连接的URL jdbc:oracle:thin:@10.17.1.158:1521:ORCL 可为oracle/mysql/sqlserver/postgresql
source.datasource.driver-class-name 来源端数据库的驱动类名称 oracle.jdbc.driver.OracleDriver 对应数据库的驱动类
source.datasource.username 来源端连接帐号名 tangyibo
source.datasource.password 来源端连接帐号密码 tangyibo
target.datasource.url 目的端JDBC连接的URL jdbc:postgresql://10.17.1.90:5432/study 可为oracle/sqlserver/postgresql/greenplum
target.datasource.driver-class-name 目的端 数据库的驱动类名称 org.postgresql.Driver 对应数据库的驱动类
target.datasource.username 目的端连接帐号名 study
target.datasource.password 目的端连接帐号密码 123456
source.datasource-fetch.size 来源端数据库查询时的fetch_size设置 10000 需要大于100有效
source.datasource-source.schema 来源端的schema名称 ZFXFZB
source.datasource-source.includes 来源端schema下的表中需要包含的表名称 users1,orgs1 多个之间用英文逗号分隔
source.datasource-source.excludes 来源端schema下的表中需要过滤的表名称 users,orgs 不包含的表名称,多个之间用英文逗号分隔
target.datasource-target.schema 目的端的schema名称 public
target.datasource-target.drop 是否执行先drop表然后create表命令 true 可选值为true、false
target.writer-engine.insert 是否使用insert写入数据 true 可选值为true为insert写入、false为copy写入只针对目的端数据库为PostgreSQL/Greenplum的有效
target.change-data-synch target.datasource-target.drop为false时有效是否启用增量变更同步只针对有主键情况下有效,千万级以上数据量建议设为false false 可选值为true、false

注意:

  • 1如果source.datasource-source.includes不为空则按照包含表的方式来执行

  • 2如果source.datasource-source.includes为空则按照source.datasource-source.excludes排除表的方式来执行。

  • mysql的驱动配置样例

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.Driver
  • oracle的驱动配置样例
jdbc连接地址jdbc:oracle:thin:@172.17.2.58:1521:ORCL
jdbc驱动名称oracle.jdbc.driver.OracleDriver
  • SqlServer的驱动配置样例
jdbc连接地址jdbc:sqlserver://172.16.2.66:1433;DatabaseName=hqtest
jdbc驱动名称com.microsoft.sqlserver.jdbc.SQLServerDriver
  • PostgreSQL的驱动配置样例
jdbc连接地址jdbc:postgresql://172.17.2.10:5432/study
jdbc驱动名称org.postgresql.Driver

启动执行命令如下:

linux系统下

cd dbswitch-release-X.X.X/
bin/datasync.sh

windows系统下

切换到dbswitch-release-X.X.X/bin/目录下双击datasync.cmd脚本文件即可启动

三、特别说明

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

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

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

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状态,那在进行结构转换时会按照没有此主键处理。

四、文档博客

1https://blog.csdn.net/inrgihc/article/details/103739629

2https://blog.csdn.net/inrgihc/article/details/104642238

3https://blog.csdn.net/inrgihc/article/details/103738656

五、问题反馈

如果您看到或使用了本工具,或您觉得本工具对您有价值,请为此项目点个赞多谢如果您在使用时遇到了bug欢迎在issue中反馈。也可扫描下方二维码入群讨论加好友请注明"程序交流"

structure

Description
异构数据库迁移同步(搬家)工具
Readme BSD-3-Clause 193 MiB
Languages
Java 51.4%
JavaScript 42.8%
Vue 5.1%
HTML 0.2%
CSS 0.2%
Other 0.2%