文档下载建议反馈入口

  • 配置示例
  • 数据类型映射

从 TDengine 迁移到 KaiwuDB

本节介绍了如何将 TDengine 数据迁移到 KaiwuDB,涵盖配置示例和数据类型映射关系。

提示

KaiwuDB 时序表的第一列必须是时间戳列,且必须设置主标签列。迁移 TDengine 数据的元数据到时序库时,KaiwuDB 会自动为表添加 tb_name_tag 标签列作为主标签列。

手动创建时序表迁移 TDengine 数据时,需要用户自行指定主标签列。

配置示例

本节提供了以下常见的迁移配置示例:

单库迁移元数据

前提条件

  • 完成迁移准备
  • 在 TDengine 数据库中创建 tdengine_kaiwudb 数据库和待迁移的数据表。
  • 在 KaiwuDB 数据库中创建 tdengine_kaiwudb 时序数据库。

说明

  • 目标数据库的库名必须与源数据库的库名相同。
  • 如果登录 KaiwuDB 数据库的用户为 admin 用户或 admin 角色的成员,则无需提前建库,KaiwuDB 将自动创建与源数据库同名的关系库。

步骤

  1. 解压缩 KaiwuDB DataX 插件包,将解压后的 kaiwudbwriter 复制到 datax/plugin/writer 目录。

  2. 创建 .yml 格式的迁移配置文件,配置元数据、源数据库和目标数据库。有关配置参数的详细信息,参见配置参数

    metadata:
      enable: true               # 启用元数据迁移
      engine-type: TIMESERIES    # 引擎类型为时序引擎
      auto-ddl: true             # 自动建表
      comment: true              # 启用注释迁移
      
    source:
      type: TDENGINE3X           # 源数据库类型为 TDengine 3.x
      host: 127.0.0.1            # TDengine 数据库的主机地址
      port: 6041                 # TDengine 数据库的端口号
      username: <username>       # TDengine 数据库的用户名
      password: <password>       # TDengine 数据库的密码
      databases:
        - name: tdengine_kaiwudb # 源数据库名称,指定要迁移的数据库
    
    target:
      type: KAIWUDB              # 目标数据库类型为 KaiwuDB
      host: 127.0.0.1            # KaiwuDB 数据库的主机地址
      port: 26257                # KaiwuDB 数据库的端口号
      username: <username>       # KaiwuDB 数据库的用户名
      password: <password>       # KaiwuDB 数据库的密码
      databases:
        - name: tdengine_kaiwudb  # 目标数据库名称,确保与源数据库同名
    
    
  3. kaiwudb-datax-utils-2.2.0.jar 所在目录,执行以下命令,开始迁移表元数据。有关迁移命令支持的所有参数,参见迁移命令参数

    java -jar -DyamlPath=../tdengine2kaiwudb.yml kaiwudb-datax-utils-2.2.0.jar
    

子表迁移业务数据

前提条件

  • 完成迁移准备
  • 在 TDengine 数据库中创建 tdengine_kaiwudb 数据库和待迁移的子表。
  • 在 KaiwuDB 数据库中创建 tdengine_kaiwudb 时序库和对应的表结构。

步骤

  1. 解压缩 KaiwuDB DataX 插件包,将解压后的 kaiwudbwriter 复制到 datax/plugin/writer 目录。

  2. 创建 .yml 格式的迁移配置文件,配置业务数据、源数据库和目标数据库。有关配置参数的详细信息,参见配置参数

    data:
      enable: true                   # 启用业务数据迁移
      readTimeout: 60                # 设置读取超时时间,单位为秒(60 秒)
      fetchSize: 1000                # 设置每次获取的记录条数为 1000 条
      batchSize: 1000                # 设置每批次迁移的记录条数为 1000 条
      ignoreTagsUnmatched: true      # 忽略不匹配的标签
      setting:
        speed:
          channel: 1                 # 设置迁移通道的数量为 1,表示单通道迁移
          byte: 1048576              # 每个通道的传输速率为 1 MB(1048576 字节)
          record: 1000               # 每个通道每次迁输 1000 条记录
        errorLimit:
          percentage: 0.02           # 最大错误率为 2%,超过此比例将停止迁移
          record: 1000               # 允许的最大错误记录数为 1000 条
          byte: 1048576              # 允许的最大错误字节数为 1 MB
      core:
        transport:
          channel:
            speed:
              byte: 1048576          # 每个通道的数据传输速率为 1 MB(1048576 字节)
              record: 1000           # 每个通道每次传输 1000 条记录
    
    source:
      type: TDENGINE3X               # 源数据库为 TDengine 3.x
      url: jdbc:TAOS-RS://127.0.0.1:6041/tdengine_kaiwudb?timestampFormat=STRING&timezone=Asia%2FShanghai  # TDengine 连接 URL,设置时间戳格式和时区
      username: <username>           # TDengine 数据库的用户名
      password: <password>           # TDengine 数据库的密码
      databases:
        - name: tdengine_kaiwudb     # 源数据库名称
          tables:
            - name: child_table_1    # 迁移的子表名
              querySql:
                - select ts,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,TBNAME as tb_name_tag from tdengine_kaiwudb.child_table_1 order by ts               # SQL 查询语句,设置需要迁移的字段,将 TBNAME 作为主标签列 tb_name_tag
              beginDateTime: "2024-04-18 14:03:37.000"  # 数据迁移的起始时间
              endDateTime: "2024-04-18 14:04:37.000"    # 数据迁移的结束时间
    
    target:
      type: KAIWUDB                 # 目标数据库类型为 KaiwuDB
      url: jdbc:kaiwudb://127.0.0.1:26257/tdengine_kaiwudb  # KaiwuDB 连接 URL
      username: <username>          # KaiwuDB 数据库用户名
      password: <password>          # KaiwuDB 数据库密码
      databases:
        - name: tdengine_kaiwudb    # 目标数据库名称
          tables:
            - name: child_table_1   # 目标表名
              column: ts,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,tb_name_tag  # 目标表列
              
    
  3. kaiwudb-datax-utils-2.2.0.jar 所在目录,执行以下命令,开始迁移表元数据和业务数据。有关迁移命令支持的所有参数,参见迁移命令参数

    java -jar -DyamlPath=../tdengine2kaiwudb.yml -DdataxPath=../datax -Dpython=python kaiwudb-datax-utils-2.2.0.jar
    

超表迁移业务数据

前提条件

  • 完成迁移准备
  • 在 TDengine 数据库中已创建 tdengine_kaiwudb 数据库和待迁移的超表。
  • 在 KaiwuDB 数据库中已创建 tdengine_kaiwudb 时序数据库和对应的表结构。

步骤

  1. 解压缩 KaiwuDB DataX 插件包,将解压后的 kaiwudbwriter 复制到 datax/plugin/writer 目录。

  2. 创建 .yml 格式的迁移配置文件,配置业务数据、源数据库和目标数据库。有关配置参数的详细信息,参见配置参数

    data:
      enable: true                # 启用业务数据迁移
      batchSize: 1000             # 每批次迁移的记录条数为 1000 条
      setting:
        speed:
          channel: 1              # 设置迁移通道的数量为 1,表示单通道迁移
        errorLimit:
          percentage: 0.02        # 最大错误率为 2%,超过此比例将停止迁移
      core:
        transport:
          channel:
            speed:
              byte: 1048576       # 每个传输通道的数据传输速率为1 MB(1048576 字节)
              record: 1000        # 每次迁移 1000 条记录
    source:
      type: TDENGINE3X            # 源数据库为 TDengine 3.x
      url: jdbc:TAOS-RS://127.0.0.1:6041/tdengine_kaiwudb?timestampFormat=STRING&timezone=Asia%2FShanghai  # TDengine 数据库 URL,设置时间戳格式和时区
      username: <username>        # TDengine 数据库用户名
      password: <password>        # TDengine 数据库密码
      databases:
        - name: tdengine_kaiwudb  # 源数据库名
          tables:
            - name: super_table   # 迁移的超表名
              querySql:
                - select ts,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,TBNAME as tb_name_tag from tdengine_kaiwudb.super_table order by ts  # 定义SQL查询语句,按时间戳(ts)排序,将 TBNAME 作为主标签列 tb_name_tag
    target:
      type: KAIWUDB               # 目标数据库类型为 KaiwuDB
      url: jdbc:kaiwudb://127.0.0.1:26257/tdengine_kaiwudb  # KaiwuDB 数据库 URL
      username: <username>        # KaiwuDB 数据库用户名
      password: <password>        # KaiwuDB 数据库密码
      databases:
        - name: tdengine_kaiwudb  # 目标数据库名称
          tables:
            - name: super_table   # 目标表名
              column: ts,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,tb_name_tag  # 目标表的列定义         
    
  3. kaiwudb-datax-utils-2.2.0.jar 所在目录,执行以下命令,开始迁移表元数据和业务数据。有关迁移命令支持的所有参数,参见迁移命令参数

    java -jar -DyamlPath=../tdengine2kaiwudb.yml -DdataxPath=../datax -Dpython=python kaiwudb-datax-utils-2.2.0.jar
    

数据类型映射

TDengine 到 KaiwuDB 表结构迁移字段和标签数据类型映射关系如下:

TDengineKaiwuDB 时序数据
BOOLBOOL
TINYINTINT2
SMALLINTINT2
INTINT4
BIGINTINT8
DOUBLEFLOAT8
FLOATFLOAT4
NCHARNCHAR
VARCHARVARCHAR
BINARYVARBYTES
VARBINARYVARBYTES
TIMESTAMPTIMESTAMP
JSONNVARCHAR
TINYINT UNSIGNEDINT2
SMALLINT UNSIGNEDINT4
INT UNSIGNEDINT8
BIGINT UNSIGNEDINT8