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

news2024/12/28 20:35:16

一.迁移背景:

随着时序数据库(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.coloradmin.cn/o/568077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

集权攻击-无权限条件下AD域凭据获取与利用分析

前言 对AD域攻击的前期,在没有任何域内据点或域用户凭据时,攻击者往往会使用用户名枚举、密码爆破、密码喷洒、Roasting等手段进行域用户凭据的窃取,本篇文章将针对AD域攻击时无权限环境下对域用户的信息收集及凭据窃取进行分析。 用户名枚举…

四、CNNs网络架构-深度可分离卷积

《A review of convolutional neural network architectures and their optimizations》论文指出一些高性能的卷积神经网络方法不可避免地带来巨大的计算成本,往往需要高性能GPU或高度优化的分布式CPU架构的支持。尽管CNNs应用向移动终端扩展,但大多数移…

如何在Spring Boot服务端实现公网远程调试并进行HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Go语言 -- Web开发基础学习 net/http包

前言 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言最擅长的领域就是Web开发,此贴是本人入门完go语法基础后学习Web开发的学习笔记。 第一个Go Web 新建go文件hello_world.go 写入: package mainimport (&…

企业级信息系统开发——初探Spring AOP

文章目录 一、提出游吟诗人唱赞歌任务(一)采用传统方式实现(二)采用传统方式实现的缺点 二、采用配置方式使用AOP(一)创建本讲所需子包(二)创建杀龙任务类(三&#xff09…

VESD静电监控系统:提高静电防护效果与管理效率

随着科学技术不断发展,现代的工业对静电防护的要求越来越高。因为静电的存在可能会对产品质量、工作环境、甚至是人身产生威胁。静电监控系统是一项高效的管理工具,能够有效地控制和监测静电产生的情况,提高静电防护效果和管理效率。 VESD静电…

群晖DS920 video station使用教程

群晖DS920 video station使用教程 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 安装video station在群晖套件里点一下就好,这里不说了。 一、添加视频库 可以添加电视剧、电视节目等类型。 比如我在国产剧这个视频…

写出诗一样代码的灵丹妙药: const与assert

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,…

网络安全好就业吗?会不会容易被淘汰?

网络安全发展前景好吗?好就业吗?会不会容易被淘汰?很多刚入门或者想入门的小伙伴都会有这样的疑问 今天就在这里给大家介绍一下。我就在这个行业,目前湖南,薪资就没必要说了,高就对了。 这个行业优势就是工…

互联网营销推荐算法理论-30分钟理解协同过滤

一、协同过滤概念 不论在淘宝还是京东,你浏览了/购买了某个商品A,后面几天你在该app内总是会在首页看到商品A和商品A相似的商品,背后支撑这种能力的就是推荐系统,而其推荐算法可能就是协同过滤。(注:app内…

Scala学习(九)---List集合

文章目录 1.List1.1 不可变List集合1.2 可变集合ListBuffer 1.List List集合默认为不可变集合,List集合在实例化的时候,无法通过new关键字进行实例化,只能通过伴生apply方法来对其进行实例化 1.1 不可变List集合 创建一个不可变list集合 …

真题详解(树的结点)-软件设计(八十四)

真题详解(汇总)-软件设计(八十三)https://blog.csdn.net/ke1ying/article/details/130856130?spm1001.2014.3001.5501 COCOMOII估算不包括_____。 对象点 B.功能点 C.用例数 D.源代码行 答案:C 语法翻译是一种&#xff…

【vue3】 实现 公共搜索组件,在当前页搜索的路由跳转不能改变当前值的操作,使用bus / event-emitter 派发器

一、安装 bus 插件 cnpm install --save event-emitter 二、创建 bus.ts 文件 1、在utils下创建bus.ts 2、bus.ts 代码如下 import ee from event-emitter export default ee() 三、页面使用 1、搜索的公用组件页面&#xff0c;search.vue <el-input v-model.trim&qu…

全网最详细实现微信小程序小程序支付功能【前端部分】

文章目录 功能描述&#xff1a;准备工作申请微信支付接口权限 微信支付api需要的参数说明示例代码 需要传入后端接口的参数说明&#xff1a;接口返回的参数说明&#xff1a;支付逻辑代码&#xff08;只包含支付功能&#xff09;以下是功能完整代码确认订单页面结构部分逻辑部分…

【阿里云】文本转语音方言— 阿里云语音合成,文本转语音方言工具类

目录 一、导入SDK坐标 二、文本转语音方言 —步骤和工具类 1.登录阿里云账号&#xff0c;创建一个语音合成项目和创建用户并设置权限。 2.获取appKey、accessKeyId、accessKeySecret在相应位置进行填写。 3.相应位置填写自己需要保存的本地路径。意思就是说&#xff0c;自…

【HarmonyOS】低代码元服务开发中的地图实现

在元服务开发过程中&#xff0c;大家可能需要在应用中使用地图&#xff0c;如果使用SDK集成的方式&#xff0c;地图SDK包体积大小很大&#xff0c;集成后元服务大小可能会超过10M&#xff0c;这就超出了HAP包的大小限制。那么是否有其他途径可以在元服务中使用地图呢&#xff1…

视频理解学习笔记(一):双流卷积神经网络

视频理解学习笔记&#xff08;一&#xff09;&#xff1a;双流卷积神经网络 两句话总结双流卷积神经网络论文概览方法详解Spatial stream ConvNetTemporal stream ConvNet测试方法 光流什么是光流怎么预处理光流 数据集UCF101&#xff08;已被刷爆&#xff09;HMDB51 Experimen…

安装包UI美化之路-Electron打包出界面美观,功能完善的安装包,这三步就够了

这篇文章应该说是《安装包UI美化之路-nsNiuniuSkin安装包制作可视化配置向导》的延伸与进一步应用&#xff0c;在可视配置的基础之上&#xff0c;生成供electron-builder打包的脚本&#xff01; 一直有朋友反馈&#xff0c;不知道如何将nsNiuniuSkin与Electron打包结合起来&am…

Real-Time C++ 嵌入式C++ 程序设计(二)

翻译自 Real-Time C Efficient Object-Oriented and Template Microcontroller Programming 4th Edition - Kormanyos, Christopher&#xff0c;这书涉及了从C11 到C20 的内容&#xff0c;主要介绍使用C 的模板、面向对象等特性设计嵌入式程序。书里的示例代码都是公开的&#…

【OpenCV DNN】Flask 视频监控目标检测教程 03

欢迎关注『OpenCV DNN Youcans』系列&#xff0c;持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 03 3.3 上传本地图片进行人脸检测3.3.1 OpenCV 级联分类器类 cv::CascadeClassifier3.3.2 cvFlask03 项目的构建步骤 本系列从零开始&#xff0c;详细讲解使用 Flask 框架…