如何把数据从 TDengine 2.x 迁移到 3.x ?

news/2024/7/4 7:46:49 标签: tdengine, 数据库, sql, 时序数据库, 涛思数据

一.迁移背景:

随着时序数据库(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,升级注意事项以及操作步骤都可以参考这篇文章:TDengine 离线升级流程 - TDengine | 涛思数据。(注意:RPM 和 Deb 包不含 taosdump ,它需要通过安装 taosTools 包获得。 所以建议大家直接使用包含 TDengine 的 Tar 包完成升级。)TDengine 安装包需从 2.6 版本的文档去下载:所有下载链接 - TDengine | 涛思数据 。如果使用了 RPM 和 Deb 的话,同样需要通过上述链接下载最新版的 taostool 获取 taosdump工具(当前最新版为 2.4.5)
  2. 使用 taosdump 把数据导出:

具体操作可参考:taosdump | TDengine 文档 | 涛思数据

举例: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 包完成部署,下载链接:TDengine 发布历史及下载链接 | TDengine 文档 | 涛思数据)但是如果只能使用 RPM 或者 Deb ,taosTools 则需要从 3.0 的文档单独下载,地址:taosTools 发布历史及下载链接 | TDengine 文档 | 涛思数据 (当前最新版为 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 建库参数细节可参考:数据库 | TDengine 文档 | 涛思数据
     

示例:

原本的建库语句:
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 后,便可以执行导入操作了,导入操作本身是比较简单的,具体操作可参考:taosdump | TDengine 文档 | 涛思数据

    举例:taosdump -i /test -T 4 

这条命令会把 /test 目录下的数据,用 4 个线程导入到当前环境下面,地址默认为 localhost,线程数可根据机器配置酌情设置。

导入完毕之后检验数据内容,确认无误之后,开源版 TDengine 2.0 至 3.0 数据迁移便完成了。

如果上述方案不能帮助我们完成数据迁移,欢迎联系 TDengine 企业版团队做定制化的支持服务。


http://www.niftyadmin.cn/n/359693.html

相关文章

2022年度互联网平均薪资出炉!高到离谱!

近期,国家统计局发布2022年平均工资数据,互联网行业薪资再次成为大家关注的焦点。 在2022年分行业门类分岗位就业人员年平均工资中,信息传输、软件和信息技术服务业的薪资遥遥领先其他行业,为全国平均薪资水平的 1.78 倍&#xf…

STL --- 2、容器 (2)List

目录 1、std::list 的特点 2、std::list 常用的 API 3、std::list 使用的例子 4、std::list 一些坑 1、std::list 的特点 (1)list 是 STL 中的一个容器,实现了双向链表结构。 (2)list 中的元素可以在任何位置进行…

java设计模式之代理设计模式的前世今生

代理设计模式是什么? 代理设计模式是一种结构性模式,它允许一个对象充当另一个对象的代理,以控制对该对象的访问。代理对象充当客户端和真实对象之间的中介,客户端通过代理对象访问真实对象,代理对象可以在访问真实对…

⑩【图神经网络×自监督×时空】视频自监督学习、时间对比图学习、多尺度时间依赖性(长期、短期) 、频域学习

你无法同时拥有青春和对青春的感悟。 最是人间留不住,朱颜辞镜花辞树。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN…

JavaEE进阶5/25

1.五大类注解详解(重点 1.Controller 控制器,用于业务逻辑层,来控制用户的行为。它用来检查用户参数的有效性。 当用户的参数有效的话会继续分发到服务层。controller可以理解为程序的安保系统 2.Service 服务层。归属服务层,调用…

《程序员的炫技代码》

程序员,这个职业总是让人感到神秘而又充满魅力。他们手中的代码常常充满了令人惊叹的炫技操作,让人不禁感叹他们的技术能力之高。在这篇文章中,我想和大家分享一些我所知道的程序员的炫技代码。 一行代码实现斐波那契数列 斐波那契数列是一…

【数据结构】顺序二叉树的实现—以堆的实现为例、堆的调整、堆的创建、堆的插入和删除、堆排序

文章目录 1.堆的概念及结构2.堆的实现(以大堆为例)2.1堆的插入2.1.1堆的向上调整算法 2.2堆的删除2.2.1堆的向下调整算法 2.3堆的创建2.4有关建堆的时间复杂度 3.堆排序4.C语言堆实现源码 1.堆的概念及结构 堆就是顺序结构二叉树。 如果有一个关键码的集…

绝对不能错过的7个零基础免费的ChatGPT镜像网站

还在为打不开openai官网烦心?本文帮你实现ChatGPTMidJourney自由( ̄∇ ̄)/ 📒收集了一些截至目前(2023年5月25日午12:00)可以免费访问,并且零基础也能正常使用的镜像网站,后续将持续维护更新(。&a…