从 TDengine 迁移到 KaiwuDB
本节介绍了如何将 TDengine 数据迁移到 KaiwuDB,涵盖配置示例和数据类型映射关系。
提示
KaiwuDB 时序表的第一列必须是时间戳列,且必须设置主标签列。迁移 TDengine 数据的元数据到时序库时,KaiwuDB 会自动为表添加 tb_name_tag
标签列作为主标签列。
手动创建时序表迁移 TDengine 数据时,需要用户自行指定主标签列。
配置示例
本节提供了以下常见的迁移配置示例:
单库迁移元数据
前提条件
- 完成迁移准备。
- 在 TDengine 数据库中创建
tdengine_kaiwudb
数据库和待迁移的数据表。 - 在 KaiwuDB 数据库中创建
tdengine_kaiwudb
时序数据库。
说明
- 目标数据库的库名必须与源数据库的库名相同。
- 如果登录 KaiwuDB 数据库的用户为
admin
用户或admin
角色的成员,则无需提前建库,KaiwuDB 将自动创建与源数据库同名的关系库。
步骤
解压缩 KaiwuDB DataX 插件包,将解压后的
kaiwudbwriter
复制到datax/plugin/writer
目录。创建
.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 # 目标数据库名称,确保与源数据库同名
在
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
时序库和对应的表结构。
步骤
解压缩 KaiwuDB DataX 插件包,将解压后的
kaiwudbwriter
复制到datax/plugin/writer
目录。创建
.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 # 目标表列
在
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
时序数据库和对应的表结构。
步骤
解压缩 KaiwuDB DataX 插件包,将解压后的
kaiwudbwriter
复制到datax/plugin/writer
目录。创建
.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 # 目标表的列定义
在
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 表结构迁移字段和标签数据类型映射关系如下:
TDengine | KaiwuDB 时序数据 |
---|---|
BOOL | BOOL |
TINYINT | INT2 |
SMALLINT | INT2 |
INT | INT4 |
BIGINT | INT8 |
DOUBLE | FLOAT8 |
FLOAT | FLOAT4 |
NCHAR | NCHAR |
VARCHAR | VARCHAR |
BINARY | VARBYTES |
VARBINARY | VARBYTES |
TIMESTAMP | TIMESTAMP |
JSON | NVARCHAR |
TINYINT UNSIGNED | INT2 |
SMALLINT UNSIGNED | INT4 |
INT UNSIGNED | INT8 |
BIGINT UNSIGNED | INT8 |