概述

简介

Datamigrate数据导入导出工具是一个采用纯C语言开发的数据导入导出工具。支持在Windows、Linux(包括国产Linux系统)等多种操作系统;以及国产鲲鹏、飞腾、龙芯、神威、兆芯、海光等CPU平台上。 Datamigrate支持从文本文件与数据库互导;也支持数据库之间的数据迁移处理。由于datamigrate采用了在源端和目的端都采用了多线程异步操作模式,能充分利用平台的硬件资源来提高数据处理效率,因此它具备极高的性能,被广泛应用在大数据的导入导出的场景中。

../../../../_images/image144.png

数据加载流程图

../../../../_images/image220.png

Datamigrate多线程从源端读取数据,到buffer中,buffer本质是一个buffer池,每个buffer会有一个ready标志位,目的端的调度线程会循环轮询每个buffer的ready状态,如果是已经ready的buffer,则开启加载线程将数据写入目的端。使用完成后的buffer标记为非ready状态,数据读取线程可以用这个buffer写入新的数据。 Datamigrate提供了很多参数来配置源端、buffer池、目的端以及公共配置参数,根据环境调整参数会获得更好的数据迁移效率,详细参考《参数说明》章节的参数详细介绍。

Datamigrate的优势如下:

  • 支持多样化的数据源:文件文件:CSV文件、二进制文件、SQL文件,同时支持指定对应文件的目录方式进行批量指定多个文件;数据库:支持神通数据库、神通MPP分布式,神通KSTORE、Oracle、MySQL等数据库;
  • 支持多样化的目的端:文件文件:CSV文件、SQL文件;数据库:支持神通数据库关系、神通MPP分布式,神通KSTORE;
  • 支持多线程异步模式:Datamigrate在设计时,充分利用多线程机制实现在源端和目的端的并发操作,源端线程和目的线程端通过数据池进行交互,相互之间独立工作;源端和目的端都会开启多个线程去生成数据或处理数据,这有点像数据总线的设计,源端往数据池中写入准备好的数据(数据来源可以是文本或者数据库),目的端从数据池中获取准备好的数据单元。
  • 支持多样化的数据源:文件文件:CSV文件、二进制文件、SQL文件,同时支持指定对应文件的目录方式进行批量指定多个文件;数据库:支持神通数据库、神通MPP分布式,神通KSTORE、Oracle、MySQL等数据库;
  • 回调机制:由于是异步处理,数据处理接口收到数据单元后立即返回,如果处理数据过程中出现异常,通过回调函数将错误批次的数据写入到文件中或者丢弃,提供了事后处理的机制。
  • 支持模拟数据的生成:Datamigrate提供了模拟数据生成机制,能生成整数、字符串、中文、浮点数、日期或时间戳、ip4/ip6、Mac地址等,可生成固定值或者随机值;对于数值或者日期类型,可指定生成的范围。
  • 支持多种IO操作:从文件读取时,为了提高数据读取效率,datamigrate支持MMAP 内存映射模式、PREAD 批量读取模式、AIO 异步IO模式。
  • 自动生成序列:在进行并发数据加载过程中,如果采用数据库自动生成自动增长列的值,在高并发的情况下会出现性能瓶颈,因此datamigrate提供了自动生成序列的机制,提高数据加载效率。

Datamigrate源端和目的支持的数据种类:

源端支持的种类 目的端支持的种类
TEXTFILE 文本文件 TEXTFILE 文本文件
TEXTDIR 文本目录 TEXTFDIR 文本目录
SQLFILE SQL文件 BINARYFILE 二进制文件
SQLDIR SQL目录 BINARYDIR 二进制文件目录
BINARYFILE 二进制文件 OSCAR 神通数据库
BINARYDIR 二进制文件目录 KSTORE(MPP5) 神通MPP5
CUSTFILE 单列未转义文件 XCLUSTER 神通集群
CUSTDIR 单列未转义文件目录  
XMLFILE XML文件  
XMLDIR XML文件目录  
OSCAR 神通数据库  
KSTORE(MPP5) 神通MPP5  
XCLUSTER 神通集群  
ORACLE Oracle  
MYSQL MySQL  
GENERATE 自动生成  

Datamigrate运行平台支持: 下表表示datamigrate运行在对应的硬件平台上时,支持哪些数据库的迁移:

  Oracle Mysql 神通系列产品
X86(Intel/AMD) 支持 支持 支持
Arm(鲲鹏、飞腾) 支持 支持 支持
龙芯 不支持 支持 支持
神威 不支持 支持 支持
兆芯 支持 支持 支持
海光 支持 支持 支持

注解

因为datamigrate是C开发,需要C平台下的驱动,Oracle在部分平台不支持的原因是Oracle没有提供对应平台C驱动,从而导致无法迁移。

使用入门

程序名称

Window:datamigrate.exe Linux:datamigrate

2.0.58 及其一下版本介绍

程序路径

$SZ_OSCAR_HOME/datamigrate

程序依赖的库

由于Datamigrate支持多种数据库的处理,因此依赖很多数据库的驱动库文件,包含了神通公司自研产品以及部分商业数据库和开源数据库的驱动库,比如STOI、ACI、ECI、OCI、mysql驱动库等,这些文件都随着数据库的安装同步被安装。

在Linux环境下,可执行ldd datamigrate的方式查看datamigrate依赖的库是否都能找到,可以将这些库拷贝到与datamigrate同一目录下,也可以拷贝到系统lib或lib64下。

其它依赖动态库的查找顺序为:

1)程序运行的当前路径

2)环境变量LD_LIBRARY_PATH设置的路径

3)64位程序查找路径:/lib64、/usr/lib64;32位程序查找路径:/lib、/usr/lib

注解

Oracle和mysql只支持x86平台和和ARM平台。

2.0.59 及其以上版本介绍

程序路径

$SZ_OSCAR_HOME/bin

程序依赖的库

由于Datamigrate支持多种数据库的处理,因此依赖很多数据库的驱动库文件,datamigrate发布时自带神通自研数据库产品的驱动库,比如STOI、ACI、ECI、OCI等

对于商业库或开源库的驱动库不在包含,需要使用时,需自行准备对应的驱动库文件放在指定位置并作软连接。

驱动库拷贝到与datamigrate相同目录 或者 Linux平台datamigrate的相对目录./so, 也可以拷贝到系统lib或lib64下。

其它依赖动态库的查找顺序为:

1)程序运行的当前路径

2)程序运行的当前路径的so目录(Linux平台下)

3)环境变量LD_LIBRARY_PATH设置的路径

4)64位程序查找路径:/lib64、/usr/lib64;32位程序查找路径:/lib、/usr/lib

注解

Oracl和MySQL只支持Win64、x86平台和和ARM64平台。DB2只支持Win64和x86平台

注解

此次升级不在包含商业库,在使用商业库时如下:

如果没有商业库的情况下会报错如下:

  • MYSQL:

    MYSQL job failed, Error Info -- "Failed to open mysql dependency library."

  • ORACLE:

    ORACLE job failed, Error Info -- "Failed to open oracle dependency library."

  • DB2:

    DB2 job failed, Error Info -- "Failed to open db2 dependency library."

如果有商业库的情况下需做如下操作:

  • Windows只需将对应的商业库放在$SZ_OSCAR_HOME/bin/下即可

  • 非Windows下需要做软链接。

    如:ln -s $SZ_OSCAR_HOME/bin/so/libclntsh.so.19.1 $SZ_OSCAR_HOME/bin/so/libclntsh.so 这时使用Oracle数据导出时能正常使用,请保障Oracle驱动库依赖的完整性,否则可能无法连接数据库。

注解

此次升级后,如需内含商业库的驱动库及所有依赖库完的整datamigrate包,需联系神通公司技术支持人员与产品研发沟通提供!