暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

「YashanDB个人版体验」YashanDB数据迁移实战

原创 lzlhit 2023-12-01
675

前言

随着YashanDB个人版的发布,最近很多小伙伴都下载部署并做了一些很有意思的测试。也有小伙伴希望结合业务对YashanDB进行更深入的测试,其中可能需要从Oracle或MySQL等数据库迁移业务数据到YashanDB中。和大多数数据库厂商一样,崖山也研发了配套的数据迁移工具:数据迁移平台YMP,在11月份崖山产品发布会上也做了专题介绍,但目前是不对个人开放的。因此,我来简单验证一下,使用一些开源工具,尝试打通YashanDB和主流的数据库(如Oracle、MySQL等)之间的数据迁移

如下图所示,构造一个数据迁移场景:

  1. 分别在MySQL、YashanDB、Oracle中创建一张相同的表。

  2. 编写代码在MySQL表中写入1000条数据。

  3. 使用DBeaver数据导出功能将1000条数据迁移至YashanDB。

  4. 使用Kettle将YashanDB表中1000条数据迁移至Oracle表中。

数据库及工具版本信息

  1. YashanDB个人版:YashanDB Personal 23.1 (Linux X86),下载链接:https://download.yashandb.com/download

  2. MySQL社区版:8.0.32

  3. Oracle:11.2.0.4

  4. DBeaver:YashanDB DBeaver V23.1 (Windows X86),下载链接:https://download.yashandb.com/download

  5. Kettle:pdi-ce-8.3.0.0-371

备注:各个数据库和工具安装步骤较多,这里就不赘述了。

建表

创建一个用于同步数据的表,字段覆盖主要的数据类型,包括整形、小数、字符型、时间、大对象。

MySQL建表语句:

CREATE TABLE CUSTOMER
(ID int,
NAME VARCHAR(32),
REMARK text,
CREATEDATE TIMESTAMP,
PERCENT FLOAT(5,2)
); 

YashanDB和Oracle数据类型基本兼容,建表语句一致:

CREATE TABLE CUSTOMER
(ID INTEGER, 
NAME VARCHAR(32),
REMARK CLOB,
CREATEDATE TIMESTAMP,
PERCENT NUMBER(5,2)
);

初始化数据

使用Java代码往MySQL的CUSTOMER表中插入1000条数据:

ID(INT):0~999

NAME(VARCHAR(32)):customer_0~customer_999

REMARK(text):一个长度为32002的字符串

CREATEDATE(TIMESTAMP):系统当前时间

PERCENT(FLOAT(5,2)):100以内的随机小数(保留2位小数)

初始化完成后,通过DBeaver查询MySQL表中的数据:

数据迁移MySQL->YashanDB

在DBeaver操作将CUSTOMER表的数据迁移至YashanDB,需要在DBeaver中添加YashanDB的数据库连接信息。

  1. 右键选中DBeaver中的mysql的CUSTOMER表,点击菜单中“导出数据”

  1. 设置导出目标为“数据库表”

  1. 表映射设置,目标容器选择预先创建的YashanDB数据库连接,并映射到对应的表。

  1. 其他配置保持默认,配置完成后执行导出。

  1. 数据迁移完成后,在DBeaver中查看YashanDB的CUSTOMER表数据,说明数据已经完整从Mysql表中迁移至YashanDB表中。

数据迁移YashanDB->Oracle

再验证将YashanDB的CUSTOMER表的数据通过Kettle迁移至Oracle数据库中。

  1. 配置数据源

在data-integration\simple-jndi\jdbc.properties文件中分别配置YashanDB和Oracle的连接信息

将YashanDB和Oracle对应的JDBC驱动包(yashandb-jdbc-1.5.1.jar,ojdbc6.jar)放在data-integration\lib目录下

oracle1/type=javax.sql.DataSource
oracle1/driver=oracle.jdbc.driver.OracleDriver
oracle1/url=jdbc:oracle:thin:@192.168.3.173:1521/orcl
oracle1/user=test123
oracle1/password=********

yasdb123/type=javax.sql.DataSource
yasdb123/driver=com.yashandb.jdbc.Driver
yasdb123/url=jdbc:yasdb://192.168.23.53:2688/yasdb
yasdb123/user=test123
yasdb123/password=********
  1. 打开Kettle,新创建一个转换,在图形化界面中拖拽两个组件“表输入”和“表输出”,并将两个组件连接起来

  1. 创建DB连接,分别创建YashanDB和Oracle的连接。连接方式选择JNDI,JNDI名称输入jdbc.properties配置的名称,YashanDB的连接类型也选择“Oracle”。

  1. 编辑“表输入”和“表输出”步骤。

“表输入”的数据库连接选择上一步配置的YashanDB的DB连接,SQL区域填写查表语句。

“表输出”的数据库连接选择上一步配置的Oracle的DB连接,填写对应的schema和表名称

  1. 如上配置完成后,启动转换任务。

  1. 查看日志确认执行结果,从YashanDB读取1000行数据,并写入Oracle。

    2023/12/01 15:34:19 - Spoon - Using legacy execution engine
    2023/12/01 15:34:19 - Spoon - 转换已经打开.
    2023/12/01 15:34:19 - Spoon - 正在打开转换 [YashanDB2Oracle]…
    2023/12/01 15:34:19 - Spoon - 开始执行转换.
    2023/12/01 15:34:19 - YashanDB2Oracle - 为了转换解除补丁开始 [YashanDB2Oracle]
    2023/12/01 15:34:19 - 表输出.0 - Connected to database [oracle] (commit=1000)
    2023/12/01 15:34:27 - 表输入.0 - Finished reading query, closing connection.
    2023/12/01 15:34:27 - 表输入.0 - 完成处理 (I=1000, O=0, R=0, W=1000, U=0, E=0)
    2023/12/01 15:34:51 - 表输出.0 - 完成处理 (I=0, O=1000, R=1000, W=1000, U=0, E=0)
    2023/12/01 15:34:51 - Spoon - 转换完成!!

  2. 在Oracle库中查询CUSTOMER表的数据,确认迁移结果。说明通过Kettle,YashanDB表中数据已经完整迁移至Oracle中。

总结

通过这个数据迁移场景的验证,说明YashanDB在JDBC和Kettle/DBeaver这些开源工具的兼容性还是做得不错的,用起来非常顺畅。对于一些简单的YashanDB与其他数据库之间的数据迁移场景来说,这些开源工具完全够用了。小伙伴们可以试一试,迁移部分业务数据到YashanDB做更深入的测试和验证。

对于一些复杂和高要求的数据迁移场景,期待后续能见识和验证一下崖山迁移平台(YMP)的能力!

最后修改时间:2023-12-01 21:25:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论