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

一.迁移背景:

随着时序数据库(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 企业版团队做定制化的支持服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费部署你的私人 ChatGPT 网页应用

免费部署你的私人 ChatGPT 网页应用 1、注册Github账号,拷贝仓库 第一步、打开GitHub官网,点击右上角Sign up注册即可 第二步、打开开源项目【Chatgpt-next-web】,点击fork,点击Create fork完成操作 2、选择免费的容器【vercel】或者【r…

2023新版Spring6全新讲解-核心内容之IoC

Spring核心之IoC 一、IoC概念介绍 1.IoC 介绍 IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。…

USB摄像头描述符参数获取和来源分析

USB摄像头描述符参数获取和来源分析 文章目录 USB摄像头描述符参数获取和来源分析描述符USB设备描述符描述符 USB摄像头参数获取myuvc.c结果device descriptor设备描述符configuration descriptor配置描述符interface association接口关联inteface desciptor atsettingvideocon…

Linux :: 【基础指令篇 :: 用户管理:(2)】::设置用户密码(及本地Xshell 登录云服务器操作演示) :: passwd

前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 目录索引: 1. 基本语法 2. 基本用法 3. 注意点 4. 补充:指定用户设置密码操作实例测试及登录本地 Xshell 登录演…

前端微服务无界实践 | 京东云技术团队

一、前言 随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。 前端微服务优势…

什么是智慧校园?

什么是智慧校园? 智慧校园平台是目前教育信息化领域的热点之一。 随着数字化转型的加速,越来越多的学校开始寻求解决方案,以提高教育管理的效率和质量。 在使用智慧校园平台的过程中,一些痛点问题也浮现出来。为解决这些问题&a…

10 工具Bootchart的使用(windows)

Bootchart的使用方法(windows) 下载bootchart.jar并拷贝到windows, 然后保证windows也安装了open jdk 1.8; 下载地址:https://download.csdn.net/download/Johnny2004/87807973 打开设备开机启动bootchart的开关: adb shell touch /data/boo…

DID-M3D 论文学习

1. 解决了什么问题? 单目 3D 检测成本低、配置简单,对一张 RGB 图像预测 3D 空间的 3D 边框。最难的任务就是预测实例深度,因为相机投影后会丢失深度信息。以前的方法大多直接预测深度,本文则指出 RGB 图像上的实例深度不是一目了…

【学习日记2023.5.22】 之 套餐模块完善

4. 功能模块完善之套餐模块 4.1 新增套餐 4.1.1 需求分析与设计 产品原型 后台系统中可以管理套餐信息,通过 新增功能来添加一个新的套餐,在添加套餐时需要添加套餐对应菜品的信息,并且需要上传套餐图片。 新增套餐原型: 当填…

自动化如何做?爆肝整理企业自动化测试工具/框架选择实施,你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

web基础与HTTP协议

web基础与HTTP协议 一、域名概述二、网页的概念三、HTML四、web概述静态网页:动态页面动态页面与静态页面的区别 五、HTTP 一、域名概述 域名的概念:IP地址不易记忆 早期使用Hosts文件解析域名 – 主机名称重复 – 主机维护困难 DNS(域名系…

大学4年做出来这个算不算丢人

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

开发者关系工程师如何帮助开发者在Sui上构建

近期,我们与Sui开发者关系负责人Brian Hennessey-Hsien进行了对话,就Sui上的开源、去中心化和开发者成就等话题展开讨论。 日前,我们采访了Sui基金会的开发者关系负责人Brian Hennessey-Hsieh,共同探讨了其对于Web3中开发者发展历…

2009.03-2022.06华证ESG季度评级(季度)

2009.03-2022.06华证ESG评级(季度) 1、时间:2009.03-2022.06.15 2、来源:整理自Wind 3、指标:华证ESG(只有综合评级,无细分评级数据) 4、样本数量:A股4800多家公司 …

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印,说实话数字水印并不是一项新的技术,但是这时候某些公司拿出来宣传一下特别应景,相应股票蹭蹭地涨。数字水印是什么呢,顾名思义,和我们在pdf中打的水印作用差不多,起到明确版权、…

拉货搬家货运APP开发分析和功能列表

作为国家经济发展的重要基础设施,物流行业正在面对转型升级的风口。巨大的市场体量,也迎来了激烈的市场竞争。为了从同质化的服务中脱颖而出,开拓更大的市场,并且解决线下司机的载货痛点,货运APP的开发必不可少。 开发…

firewalld防火墙

firewalld防火墙 1:firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。firewalld和iptables都是用来管理防火墙的工具(属于用户态&a…

学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!

目录 引言 (一)在本地整合出报告 1.在cmd分别安装pytest和allure-pytest 2.进入需要执行的代码所在的路径 3.运行测试报告,代码如下 4.解析此json文件,代码如下(新打开cmd进入路径) 5.打开此HTML文件…

在CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例

CTEX文档生成中使用WinEit编辑带有公式符号的中文文档应用举例 CTEX在编辑文档格式和排版时具有优秀的性能,可批量处理文档格式,该用格式时候也非常快捷。下面举例介绍CTEX文档生成中怎样使用WinEit编辑带有公式符号的中文文档。 1.需要的代码 .在WinEi…

TPlinker解读

参考: 关系抽取之TPLinker解读加源码分析 TPLinker 实体关系抽取代码解读 实体关系联合抽取:TPlinker TPLinker中文注释版 Tagging TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging,过程分为三部分: &…