# DBSwitch阉割版实现异构数据库表结构同步
# 一、前言
  在公司使用dataX实现异构数据库离线结构同步之后,公司同步数据库数据效率大大提升,但是如果oracle数据库创建了一张test表,想同步到mysql数据库,也需要在mysql数据库中创建test表之后,才能实现数据库表结构同步,DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作,但是就是没有同步表结构的功能,然后在gitee上面,发现了一个叫做dbswitch的项目
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_decQAwYeSa.png)
* dbswitch开源项目地址:[https://gitee.com/inrgihc/dbswitch](https://gitee.com/inrgihc/dbswitch "https://gitee.com/inrgihc/dbswitch")
dbswitch实现的功能是:**异构数据库迁移同步工具**,dbswitch提供源端数据库向目的端数据的全量与增量迁移同步功能,其实大概功能和datax类似,只是效率和稳定性没有datax好,因为datax毕竟是阿里巴巴开源,并且也是目前国内认为开源中最好的离线数据同步工具,但是dbswitch有一个强大的功能,并且目前开源项目中我认为最完善的异构数据库表结构同步功能(我是在github,gitee上面找了几乎所有的国内表结构同步项目,最后选择了dbswitch)目前dbswitch同步的功能有:
一句话,dbswitch工具提供源端数据库向目的端数据库的**批量**迁移同步功能,支持数据的全量和增量方式同步。包括:
* **结构迁移**
支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。
支持基于正则表达式转换的表名与字段名映射转换。
* **数据同步**。
基于JDBC的分批次读取源端数据库数据,并基于insert/copy方式将数据分批次写入目的数据库。
支持有主键表的 **增量变更同步** (变化数据计算Change Data Calculate)功能(千万级以上数据量的性能尚需在生产环境验证)
而他的数据同步可以使用datax替代,但是结构迁移目前最好表结构同步方案,然后我经过了大概半个月的时间,进行修改测试整合,目前dbswitch+datax的整合已经进入尾声,在生产环境上能够实现dbswitch实现表结构同步,datax实现数据同步!
# 二、dbswitch阉割版(异构数据库表结构同步工具)简介
### 1、dbswitch阉割版之后功能
 我将dbswitch修改之后,dbswitch只支持表结构同步功能,没有数据同步功能了,主要支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。
支持基于正则表达式转换的表名与字段名映射转换。
### 2、功能设计
这张图是dbswitch开源作者画的,其中阉割版的dbswitch就取消了离线异构数据同步功能
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_nPrD5xEXlf.png)
### 3、表结构同步支持的数据库
目前常见数据库oracle,db2,mysql,sqlserver都全部支持,具体详情请参考:
* 源段oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为Greenplum/PostgreSQL/HighGo的迁移(**支持绝大多数常规类型字段**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为Oracle的迁移(**支持绝大多数常规类型字段**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为DM的迁移(**支持绝大多数常规类型字段...**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为SQLServer的迁移(**字段类型兼容测试中...**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为MySQL/MariaDB的迁移(**字段类型兼容测试中...**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为DB2的迁移(**字段类型兼容测试中...**)
* 源端oracle/SqlServer/MySQL/MariaDB/PostgreSQL/DB2/DM/Kingbase8/HighGo/Hive向目的端为Kingbase8的迁移(**支持绝大多数常规类型字段...**)
### 4、dbswitch模块结构设计
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_8Tv6LH7ndH.png)
### 5、模块结构功能
```bash
└── dbswitch
├── dbswitch-common // dbswitch通用定义模块
├── dbswitch-pgwriter // PostgreSQL的二进制写入封装模块
├── dbswitch-dbwriter // 数据库的通用批量Insert封装模块
├── dbswitch-core // 数据库元数据抽取与建表结构语句转换模块
├── dbswitch-sql // 基于calcite的DML语句转换与DDL拼接模块
├── dbswitch-dbcommon // 数据库操作通用封装模块
├── dbswitch-dbchange // 基于全量比对计算变更(变化量)数据模块
├── dbswitch-dbsynch // 将dbchange模块计算的变更数据同步入库模块
├── dbswitch-data // 工具入口模块,读取配置文件中的参数执行异构迁移同步
├── dbswitch-admin // 在以上模块的基础上引入Quartz的调度服务与接口
├── dbswitch-admin-ui // 基于Vue2的前段WEB交互页面
├── package-tool // 基于maven-assembly-plugin插件的项目打包模块
```
# 三、dbswitch实现异构数据库表结构同步功能
我们可以将gitee仓库的dbswitch拉取到本地开发环境:[https://gitee.com/inrgihc/dbswitch.git](https://gitee.com/inrgihc/dbswitch.git "https://gitee.com/inrgihc/dbswitch.git")
### 1、在dbswitch-data下找到MigrationHandler
拉取下来之后部署,修改MigrationHandler代码如下:
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_eTzim-OpD5.png)
```java
```
### 2、修改dbswitch-admin的配置
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_DARaACbpHM.png)
```.properties
server:
port: 9088
spring:
application:
name: dbswitch-admin
tomcat:
uri-encoding: UTF-8
max-http-header-size: 8096
mvc:
throw-exception-if-no-handler-found: true
static-path-pattern: /statics/dbswitch/**
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbswitch?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: root
validation-query: SELECT 1
test-on-borrow: true
flyway:
locations: classpath:db/migration
baseline-on-migrate: true
table: DBSWITCH_SCHEMA_HISTORY
enabled: true
mybatis:
configuration:
lazy-loading-enabled: true
aggressive-lazy-loading: false
map-underscore-to-camel-case: true
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper:
wrap-keyword: "`{0}`"
enable-method-annotation: true
```
* 注意:我使用的是mysql8所以还得修改maven
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
<scope>runtime</scope>
</dependency>
```
### 3、如果想实现Oracle相关表结构同步需要添加依赖
在dbswitch-core的maven里面添加依赖,不然最初始的项目不支持oracle,会报错:
```xml
<dependency>
<groupId>cn.easyproject</groupId>
<artifactId>orai18n</artifactId>
<version>12.1.0.2.0</version>
</dependency>
```
![](https://csdn-image.oss-cn-beijing.aliyuncs.com/img/image_7njjE2cW0i.png)
这样之后启动项目,启动项目之前需要在数据库中创建dbswitch数据库,dbswitch可以实现自动导入表,所以只需�
没有合适的资源?快使用搜索试试~ 我知道了~
dbswitch-tableSynchronization异构数据库表结构同步,要支持字段类型、主键信息、建表语句等的转换
共1021个文件
class:355个
java:303个
js:113个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2023-12-02
14:55:25
上传
评论
收藏 23.04MB ZIP 举报
温馨提示
将dbswitch修改之后,dbswitch只支持表结构同步功能,没有数据同步功能了,主要支持字段类型、主键信息、建表语句等的转换,并生成建表SQL语句。支持基于正则表达式转换的表名与字段名映射转换
资源推荐
资源详情
资源评论
收起资源包目录
dbswitch-tableSynchronization异构数据库表结构同步,要支持字段类型、主键信息、建表语句等的转换 (1021个子文件)
SimpleRow.class 26KB
AbstractMapping.class 26KB
ObjectCastUtils.class 21KB
DatabaseSqlserverImpl.class 16KB
AbstractDatabase.class 16KB
ChangeCalculatorService.class 16KB
DbConnectionService.class 15KB
StructureController.class 14KB
GreenplumCopyWriterImpl.class 14KB
AssignmentService.class 13KB
MigrationService.class 13KB
MetaDataService.class 13KB
DatabasePostgresImpl.class 13KB
DatabaseGreenplumImpl.class 12KB
JDBCURL.class 11KB
DatabaseMysqlImpl.class 11KB
MigrationHandler.class 11KB
MetaDataByDescriptionServiceImpl.class 11KB
DatabaseKingbaseImpl.class 11KB
MetaDataByJdbcServiceImpl.class 11KB
AbstractDatabaseSynchronize.class 10KB
DatabaseOracleImpl.class 10KB
DatabaseDB2Impl.class 10KB
MetaDataByDataSourceServiceImpl.class 10KB
DatabaseHiveImpl.class 9KB
AssignmentConfigEntity.class 9KB
SystemLogEntity.class 9KB
LogAdviceAspect.class 9KB
JobExecutorService.class 9KB
PatternMapperService.class 8KB
AbstractDatabaseWriter.class 8KB
AssignmentDetailResponse$Configuration.class 8KB
ScheduleService.class 8KB
TaskParamEntity.class 8KB
SystemUserEntity.class 8KB
TypeConvertUtils.class 8KB
ValueHandlerProvider.class 8KB
DatabaseConnectionEntity.class 8KB
SourceDataSourceProperties.class 8KB
AssigmentCreateRequest.class 8KB
OracleDatabaseSyncImpl.class 7KB
GeneratorController.class 7KB
AssigmentUpdateRequest.class 7KB
CalciteSqlConvertServiceImpl.class 7KB
AssigmentCreateRequest$AssigmentCreateConfig.class 7KB
AssigmentUpdateRequest$AssigmentUpdateConfig.class 7KB
MetadataColumnDetailResponse.class 7KB
SystemLogDetailResponse.class 7KB
TargetDataSourceProperties.class 7KB
MySqlWriterImpl.class 7KB
AssignmentDetailResponse.class 6KB
DatabaseDmImpl.class 6KB
AssignmentJobEntity.class 6KB
TheMssqlSqlDialect.class 6KB
TheMysqlSqlDialect.class 6KB
AssignmentTaskEntity.class 6KB
TaskJobDetailResponse.class 6KB
SqlServerWriterImpl.class 6KB
DbConnectionDetailResponse.class 6KB
PgBulkInsert.class 6KB
DbConnectionController.class 6KB
MetadataTableDetailResponse.class 6KB
AssignmentInfoResponse.class 6KB
PostgresqlDatabaseSyncImpl.class 5KB
SqlServerDatabaseSyncImpl.class 5KB
MySqlDatabaseSyncImpl.class 5KB
DB2DatabaseSyncImpl.class 5KB
DmDatabaseSyncImpl.class 5KB
AssignmentController.class 5KB
DatabaseAwareUtils.class 5KB
SystemUserDetailResponse.class 5KB
SystemLogEntity$SystemLogEntityBuilder.class 5KB
BulkProcessor.class 5KB
JdbcUrlUtils.class 5KB
ColumnMetaData.class 5KB
MySqlDialectImpl.class 5KB
DatabaseSqlserver2000Impl.class 5KB
SimpleRowWriter.class 5KB
JobManagerService.class 5KB
AssignmentJobDAO.class 5KB
SupportDbTypeEnum.class 5KB
DbConnectionUpdateRequest.class 5KB
DatabaseConnectionEntity$DatabaseConnectionEntityBuilder.class 5KB
AssignmentDetailConverter.class 5KB
ThePostgresqlSqlDialect.class 5KB
GenerateSqlUtils.class 5KB
SystemUserEntity$SystemUserEntityBuilder.class 5KB
TheOracleSqlDialect.class 5KB
ObjectIdentifier.class 5KB
MetaDataController.class 5KB
SystemLogService.class 4KB
Result.class 4KB
PostgresqlConst.class 4KB
PgBinaryWriter.class 4KB
DbConnectionCreateRequest.class 4KB
SwaggerConfig.class 4KB
DdlSqlAlterTable.class 4KB
PostgresDialectImpl.class 4KB
AbstractDatabaseOperator.class 4KB
OverviewStatisticsResponse.class 4KB
共 1021 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
yanglamei1962
- 粉丝: 2032
- 资源: 335
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功