KaiwuDB 数据迁移工具
产品概述
KaiwuDB 数据迁移工具(KaiwuDB Data Transformer,简称 KDTS)是基于 DataX 框架开发的企业级异构数据库迁移解决方案。该工具提供图形化操作界面,支持多种主流数据库间的数据迁移和同步,帮助用户快速、安全地完成数据资产转移。
支持的数据源
KDTS 支持以下数据源间的迁移:
源数据库到 KaiwuDB:
- 关系数据库:MySQL、Oracle、PostgreSQL、ClickHouse、SQL Server
- 时序数据库:KaiwuDB、TDengine、InfluxDB、OpenTSDB
- NoSQL 数据库和文件系统:MongoDB、FTP、HDFS
KaiwuDB 到其他系统:
- 搜索引擎:ElasticSearch
说明
KDTS 理论上支持上述数据源之间的双向数据同步,但部分迁移路径尚未经过全面测试验证。建议在生产环境使用前进行充分的迁移测试。
核心功能
多样化迁移方式
KDTS 提供三种核心迁移模式,满足不同业务场景的需求:
- 结构迁移:自动读取源数据库的表结构信息,生成相应的 DDL 语句,在目标数据库中创建匹配的表结构。用户无需手动建表,大幅提升迁移效率。
- 数据迁移:在目标数据库表结构已存在的前提下,支持单表或多表的数据迁移。提供全量数据迁移和基于时间条件的增量数据迁移两种模式。
- 混合迁移:将结构迁移和数据迁移合并为一个流程,自动完成表结构创建和数据同步的全过程,实现一键式完整迁移。
灵活的迁移粒度
KDTS 支持多种迁移粒度,用户可根据实际业务需求灵活选择:
- 整库迁移:一次性迁移整个数据库中的所有表
- 多表迁移:选择性地迁移单个或多个指定的表
实时监控与报告
- 实时迁移进度监控:提供可视化迁移进度,实时掌握迁移执行情况
- 详细迁移报告生成:生成包含迁移概况、性能指标、异常信息的完整报告,便于后续分析
- 失败原因分析与定位:识别迁移失败原因,提供具体错误信息和解决建议,快速定位问题
迁移场景清单
下表展示不同源数据库到 KaiwuDB 可选择的迁移模式和迁移粒度:
数据库类型 | 源数据库 | 目标引擎 | 结构迁移 | 数据迁移 | 混合迁移 |
---|---|---|---|---|---|
关系数据库 | MySQL | 关系 | 表/库 | 表/库 | 表/库 |
时序 | 表/库 | 表 | 表 | ||
PostgreSQL | 关系 | 表/库 | 表/库 | 表/库 | |
时序 | 表/库 | 表 | 表 | ||
Oracle | 关系 | 表/库 | 表/库 | 表/库 | |
时序 | 表/库 | 表 | 表 | ||
ClickHouse | 关系/时序 | - | 表 | - | |
SQL Server | 关系/时序 | - | 表 | - | |
时序数据库 | TDengine | 时序 | 表/库 | 表 | 表 |
关系 | - | 表 | - | ||
InfluxDB | 时序 | 表/库 | 表 | 表 | |
关系 | - | 表 | - | ||
OpenTSDB | 关系/时序 | - | 表 | - | |
KaiwuDB | 关系/时序 | - | 表 | - | |
其他数据源 | MongoDB | 关系/时序 | - | 表 | - |
FTP | 关系/时序 | - | 表 | - | |
HDFS | 关系/时序 | - | 表 | - |
数据处理说明
不同数据库的数据类型和处理机制存在差异。下表详细说明了 KDTS 处理各类数据库的方式和注意事项:
数据库 | 数据处理说明 |
---|---|
ClickHouse | - NULL 值迁移至 KaiwuDB 后会被处理为 false - 二进制类型数据迁移后以 \x+ 空字符串的形式显示 |
MongoDB | - 不支持迁移 MongoDB 的 _id 系统字段 |
OpenTSDB | - OpenTSDB 采用键值对数据模型,读取时数据以键值对形式呈现 - 支持自动转换 metric 名称:将句点( . )替换为下划线(_ )作为 KaiwuDB 表名- 每张表包含 k_timestamp (时间戳)和 value (数值)两个标准列- 当目标表不存在时,支持自动创建表结构 |
TDengine | - BOOL 类型的 null 值迁移后处理为 false - NCHAR 类型的 null 值迁移后显示为空字符串- 不支持 JSON 数据类型:如果表的标签列采用 JSON 格式,需要预先转换为其他支持的数据类型 - 版本要求:结构迁移需要 TDengine 版本 ≥ 3.3.3.0,数据迁移无版本限制 |
KaiwuDB 1.2.x | 1.2.x 允许重复时间戳数据,2.0 及以上版本会自动去重覆盖。如需保留重复数据,在目标库执行 SET CLUSTER SETTING ts.dedup.rule = keep; 注意: keep 配置仅支持单机模式 |