关于数据库:如何把数据从-TDengine-2x-迁移到-3x

39次阅读

共计 2597 个字符,预计需要花费 7 分钟才能阅读完成。

一. 迁徙背景:

随着时序数据库(Time Series Database)TDengine 3.0 的公布至今,咱们除了在继续地优化产品质量的自身,也始终在致力地晋升用户体验。但因为 3.0 底层有大量的重构优化,导致开源版的 2.0 用户无奈通过惯例路径来降级到 3.0,本期文章将会帮助大部分开源版用户解决这个问题。

注释:

首先,咱们先说下 taosdump 为什么是帮助“大部分”开源版用户解决这个问题:

taosdump 的导出行为的实质其实是应用 SQL 进行查问,将数据压缩后输入到本地,导入行为则是通过 STMT 接口再把导出的数据导入新的环境。在外部,它嵌入了一个 TDengine 客户端,通过 -T 参数的线程数配置,并发地把所有 SQL 申请发给数据库,尔后,后续的查问工作就是数据库本人的事件了。鉴于以上起因,所以它的导出导入的性能都非常依赖于数据库自身的部署建模是否迷信,硬件资源是否短缺等因素。

举个简略例子:如果某用户在建表的时候,对于一列本应应用 binary(100) 就足够的数据应用了 nchar(2000),那么等到导出 SQL 执行的时候,性能就会被连累很多。

因而,可能顺利完成数据导出的用户,应尽量领有如下几个特色:

  1. 领有足够磁盘空间——因为硬盘上的数据是列式压缩,而导出数据为行式压缩。如果抉择一次性导出全副数据,倡议须要至多留出 du -sh $dataDir/vnode –exclude=’wal’ 大小的 3 倍空间(多多益善)。但如果是依照库 / 表为单位分批导出,或者指定工夫范畴导出的话,就比拟灵便了。
  2. 数据库日常应用负载不高,在大量导出 SQL 执行时,数据库仍有短缺资源能够保障失常生产应用。
  3. 待迁徙的 2.0 数据为测试环境不需放心影响业务,或者生产环境的业务间歇期足够实现数据的导出——这两点须要联合以后导出速度本人评估。

总结而言,导出 / 导入数据的快慢是由 SQL 执行效率来决定的,而 SQL 执行效率的背地又是由部署建模,硬件资源等因素决定的。

只有磁盘空间短缺,工夫短缺,就能够实现导出操作。导入则绝对简略,没有额定需要,依照失常的数据库部署思路即可。

因为 taosdump 自身的产品特色决定了在上述非凡状况下,迁徙数据会有效率问题,因而这也是咱们开发业余的企业版数据迁徙工具 taosX 的起因之一。

二. 迁徙操作

导出方:

对于 2.0 一侧,首先要筹备好最新版本的 TDengine 和 taosdump 工具,具体操作如下:

  1. 把数据库降级到 2.6.0.34,降级注意事项以及操作步骤都能够参考这篇文章:https://www.taosdata.com/engineering/10222.html。(留神:RPM 和 Deb 包不含 taosdump,它须要通过装置 taosTools 包取得。所以倡议大家间接应用蕴含 TDengine 的 Tar 包实现降级。)TDengine 安装包需从 2.6 版本的文档去下载:https://www.taosdata.com/all-downloads。如果应用了 RPM 和 Deb 的话,同样须要通过上述链接下载最新版的 taostool 获取 taosdump 工具(以后最新版为 2.4.5)
  2. 应用 taosdump 把数据导出:

具体操作可参考:https://docs.taosdata.com/2.6/reference/taosdump/

举例:taosdump -o /test  -D test  -T 4

这条命令会把 test 库的数据,用 4 个线程导出到 /test 目录上面,文件模式如下:

接下来,咱们须要把 test 门路下的导出文件,迁徙到 3.0 的环境中,筹备数据导入。

导入方:

  1. 3.0 这一侧,新环境咱们倡议应用最新版,各方面都更好(以后最新版为 3.0.4.1),失常装置部署即可。(同样:RPM 和 Deb 包不含 taosdump,它须要通过装置 taosTools 包取得。所以倡议大家间接应用蕴含 taosdump 的 tar 包实现部署,下载链接:https://docs.taosdata.com/releases/tdengine/)然而如果只能应用 RPM 或者 Deb,taosTools 则须要从 3.0 的文档独自下载,地址:https://docs.taosdata.com/releases/tools/(以后最新版为 2.5.0)
  2. 导入之前,咱们首先要进入导出文件目录下的标红目录,关上外面的 dbs.sql,针对建库 SQL 做一些针对性的调整。尤其须要留神的是 VGROUPS 参数,这是 3.0 的新增参数,代替了此前 2.0 的一系列建表逻辑,默认是 2,代表着这个库有 2 个 VGROUP。如果本来的 2.0 环境应用了 4 个 VGROUP,那么就须要手动增加 “VGROUPS 4” 到建库语句前面,即可放弃和 2.0 版本一样的 VGROUP 数量了。(其余参数同理,间接在建库 SQL 后增加即可,至于该语句中 2.0 时代的旧参数则会被导入程序主动屏蔽掉。具体的 3.0 建库参数细节可参考:https://docs.taosdata.com/taos-sql/database/)

示例:
本来的建库语句:
CREATE DATABASE IF NOT EXISTS test REPLICA 1  QUORUM 1 DAYS 10 KEEP 3650 CACHE 16 BLOCKS 6 FSYNC 3000  PRECISION ‘ms’  MINROWS 100 MAXROWS 4096 COMP 2 ;

增加参数后:
CREATE DATABASE IF NOT EXISTS test REPLICA 1  QUORUM 1 DAYS 10 KEEP 3650 CACHE 16 BLOCKS 6 FSYNC 3000  PRECISION ‘ms’  MINROWS 100 MAXROWS 4096 COMP 2 VGROUPS 4;

  1. 批改完 dbs.sql 后,便能够执行导入操作了,导入操作自身是比较简单的,具体操作可参考:https://docs.taosdata.com/2.6/reference/taosdump/
    举例:taosdump -i /test -T 4 

这条命令会把 /test 目录下的数据,用 4 个线程导入到以后环境上面,地址默认为 localhost,线程数可依据机器配置酌情设置。
导入结束之后测验数据内容,确认无误之后,开源版 TDengine 2.0 至 3.0 数据迁徙便实现了。

如果上述计划不能帮忙咱们实现数据迁徙,欢送分割 TDengine 企业版团队做定制化的反对服务。

正文完
 0