当前位置: 首页 > news >正文

TDengine 跨版本迁移实战

TDengine 3.0 已经退出了近一年,目前已经到了 3.2 版本。很遗憾的是 2.x 和 3.x 之间的数据文件不兼容。
如果向从 2.x 升级到 3.x 只能选择数据迁移的方式。
目前数据迁移有三种方法:

  1. 使用官方推荐工具 taosx
  2. 使用 taosdump 工具。
  3. 自己写程序。
迁移方式优点缺点
taosx迁移速度快,不占用本地空间只有企业版支持
taosdump社区版具备占用大量本地空间,导出速度慢,大数据量导出数据不全
自己写程序灵活、可定制费人力

以下演示使用 Python 脚本跨版本迁移数据库,从 3.1 降级迁移到 2.6。

目录

    • 源数据库
    • 目标数据库
    • 迁移步骤
      • 1. 获取元数据信息
      • 2. 创建目标数据库和超级表
      • 3.配置迁移参数
      • 4.运行迁移脚本

源数据库

属性内容
IP10.7.7.14
版本3.1
数据库backtrade

目标数据库

属性内容
IP192.168.2.125
版本2.6
数据库backtrade

迁移步骤

1. 获取元数据信息

查询数据库和超级表的建库建表语句。


taos> show create database backtrade\G;
*************************** 1.row ***************************Database: backtrade
Create Database: CREATE DATABASE `backtrade` BUFFER 256 CACHESIZE 1 CACHEMODEL 'none' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 1 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 2 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 0 WAL_RETENTION_SIZE 0
Query OK, 1 row(s) in set (0.000398s)

taos> show stables;stable_name           |
=================================btdata                         |
Query OK, 1 row(s) in set (0.001156s)taos> show create stable btdata\G;
*************************** 1.row ***************************Table: btdata
Create Table: CREATE STABLE `btdata` (`ts` TIMESTAMP, `profit` DOUBLE) TAGS (`fcode` VARCHAR(6), `fname` NCHAR(20))
Query OK, 1 row(s) in set (0.001251s)

2. 创建目标数据库和超级表

运行迁移脚本前需要先在目标端创建数据库和超级表。

  • 2.x 和 3.x 的建库语句发生了变化,跨版本迁移需要修改建库语句。
taos> CREATE DATABASE `backtrade` ;
Query OK, 0 of 0 row(s) in database (0.001749s)taos> use backtrade;
Database changed.taos> CREATE STABLE `btdata` (`ts` TIMESTAMP, `profit` DOUBLE) TAGS (`fcode` BINARY(6), `fname` NCHAR(20));
Query OK, 0 of 0 row(s) in database (0.001782s)

3.配置迁移参数

{"exporUrl":"http://10.7.7.14:6041/rest/sql","exportDBName":"backtrade","exportUsername":"root","exportPassword":"taosdata","exportVersion":3,"importUrl":"http://192.168.2.125:6041/rest/sql","importDBName":"backtrade","importUsername":"root","importPassword":"taosdata","importVersion":2,"recodeOfPerSQL":1000,"tableonly":"false","sqlheader":"select * from ","startTime":943891200000,"endTime":1699939779000,"threadNum":4
}

参数说明:

  • exportUrl 源数据库Restful接口地址
  • exportDBName 源数据库名称
  • exportUsername 源数据库用户名
  • exportPassword 源数据库密码
  • exportVersion 源数据库版本,近支持2/3,用于判断Restful返回值
  • importUrl 目标库Restful接口地址
  • importDBName 目标库名称
  • importUSername 目标库用户名
  • imortPassword 目标库密码
  • importVersion 目标数据库版本,近支持2/3,用于判断Restful返回值
  • recodeOfPerSQL 单条SQL记录数,需要根据表结构调整,保证单条SQL不超过1MB
  • tableonly 是否只迁移表结构
  • sqlheader 数据查询SQL头,可通过此项定制迁移内容,比如说只迁移某几列数据
  • startTime 迁移数据起始实际
  • endTime 迁移数据中止时间
  • treadNum 并发线程/进程数量

注意:

  • 如果目标数据库版本是 2.x,那么最好先创建好所有表,再导入数据。2.x 建表很慢,并发建表会失败。
  • 如果目标数据库版本是 2.x,且 tableonly 设置为 true,那么 threadNum 应该设置为 1。

4.运行迁移脚本

python3 datac_com23.py

脚本使用说明

  • python3 datac_com23.py -h 查看文件帮助内容
  • python3 datac_com23.py -f tbfile 从 tbfile 文件读取迁移列表(只限子表),默认会从数据库查询所有表。
  • python3 datac_com23.py -p 时间多进程方式,默认为多线程
  • 如果表不存在,会自动创建。
[2023-11-15 12:08:04,440] dataC/multi_thread(62652/MainThread) INFO - --------------------begin------------------
[2023-11-15 12:08:04,454] dataC/export_table(62652/Thread_0) INFO - Table Name:t_688287, Select Rows:3
[2023-11-15 12:08:04,454] dataC/export_table(62652/Thread_3) INFO - Table Name:t_516770, Select Rows:3
[2023-11-15 12:08:04,454] dataC/export_table(62652/Thread_1) INFO - Table Name:t_118015, Select Rows:3
[2023-11-15 12:08:04,454] dataC/export_table(62652/Thread_2) INFO - Table Name:t_831445, Select Rows:3
[2023-11-15 12:08:04,492] dataC/export_table(62652/Thread_0) INFO - Create table t_688287 success.
[2023-11-15 12:08:04,494] dataC/export_table(62652/Thread_2) INFO - Create table t_831445 success.
[2023-11-15 12:08:04,494] dataC/export_table(62652/Thread_3) INFO - Create table t_516770 success.
[2023-11-15 12:08:04,495] dataC/export_table(62652/Thread_1) INFO - Create table t_118015 success.
......
[2023-11-15 12:08:30,738] dataC/export_table(62652/Thread_1) INFO - Create table t_128033 success.
[2023-11-15 12:08:30,750] dataC/multi_thread(62652/MainThread) INFO - --------------------end------------------
[2023-11-15 12:08:30,750] dataC/multi_thread(62652/MainThread) INFO - ##############################
[2023-11-15 12:08:30,750] dataC/multi_thread(62652/MainThread) INFO - ## 9038/9038 Tables  and 27395 Rows are proceed.
[2023-11-15 12:08:30,750] dataC/multi_thread(62652/MainThread) INFO - ## 9038 tables created.
[2023-11-15 12:08:30,754] dataC/multi_thread(62652/MainThread) INFO - ##############################

脚本内容见迁移脚本
如果看不到,可能还没有通过审核,等两天就好。

某些情况下,运行脚本会报超时错误,原因是脚本建立了大量连接,导致网络资源紧张。
按照 [Python学习笔记]Requests性能优化之Session 提到的方法优化即可。

相关文章:

TDengine 跨版本迁移实战

TDengine 3.0 已经退出了近一年,目前已经到了 3.2 版本。很遗憾的是 2.x 和 3.x 之间的数据文件不兼容。 如果向从 2.x 升级到 3.x 只能选择数据迁移的方式。 目前数据迁移有三种方法: 使用官方推荐工具 taosx。使用 taosdump 工具。自己写程序。 迁移…...

FPGA设计时序约束八、others类约束之Set_Case_Analysis

目录 一、序言 二、Set Case Analysis 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、工程示例 四、参考资料 一、序言 在Vivado的时序约束窗口中,存在一类特殊的约束,划分在others目录下,可用于设置忽略或修改默认的时序…...

xftp连接wsl2

在WSL中默认是没有安装OpenSSH,需要自己安装。 安装 sudo apt update sudo apt install openssh-server检查是否安装成功 ssh -V配置ssh sudo vim /etc/ssh/ssh_config设置端口 Port 22启动ssh服务 sudo service ssh startxftp连接 主机地址:127.…...

Cross-View Transformers for Real-Time Map-View Semantic Segmentation 论文阅读

论文链接 Cross-View Transformers for Real-Time Map-View Semantic Segmentation 0. Abstract 提出了 Cross-View Transformers ,一种基于注意力的高效模型,用于来自多个摄像机的地图视图语义分割使用相机感知的跨视图注意机制隐式学习从单个相机视…...

MySQL InnoDB 引擎底层解析(一)

6. InnoDB 引擎底层解析 MySQL 对于我们来说还是一个黑盒,我们只负责使用客户端发送请求并等待服务器返回结果,表中的数据到底存到了哪里?以什么格式存放的?MySQL 是以什么方式来访问的这些数据?这些问题我们统统不知…...

redis安装(Windows和linux)

如何实现Redis安装与使用的详细教程 Redis 简介 Redis是一个使用C语言编写的开源、高性能、非关系型的键值对存储数据库。它支持多种数据结构,包括字符串、列表、集合、有序集合、哈希表等。Redis的内存操作能力极强,其读写性能非常优秀,且…...

【LeetCode刷题-树】--1367.二叉树中的链表

1367.二叉树中的链表 方法:枚举 枚举二叉树中的每个节点为起点往下的路径是否与链表相匹配的路径,为了判断是否匹配设计了一个递归函数dfs(root,head),其中root表示当前匹配到的二叉树节点,head表示当前匹配到的链表节点,整个函数…...

【嵌入式 – GD32开发实战指南(ARM版本)】第2部分 外设篇 - 第3章 温度传感器DS18B20

1 理论分析 1.1 DS18B20概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也…...

基于spring gateway 的静态资源缓存实现

由于子项目比较多,子项目都是通过嵌套的方式实现的。就会导致子页面加载比较慢,影响客户体验 实现思路(AI搜的--!): 1、通过spring boot缓存实现静态资源缓存 2、在gateway过滤器,对静态资源进行缓存 直接上代码&a…...

SDUT OJ《算法分析与设计》搜索算法

A - 子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中,S{ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得: 。 试设计一个解子…...

【NI-DAQmx入门】校准

1.设备定期校准的理由 随着时间的推移电子器件的特性会发生自然漂移,可能会导致测量结果的不准确性。防止出现良品和差品筛选出错的情况满足行业国际标准降低设备出现故障的风险使测量结果更具备参考性 2.查找NI设备的校准间隔。 定期校准会使DAQ设备的精度保持在…...

C语言链表

head.h typedef struct Node_s{int data; //数据域struct Node_s *pNext; //指针域 } Node_t, *pNode_t;void headInsert(pNode_t *ppHead, pNode_t *ppTail, int data); void print(pNode_t pHead); void tailInsert(pNode_t *ppHead, pNode_t *ppTail, int data); void sort…...

LabVIEW进行MQTT通信及数据解析

需求:一般通过串口的方式进行数据的解析,但有时候硬件的限制,没法预留串口,那么如何通过网络的方式特别是MQTT数据的通信及解析 解决方式: 1.MQTT通信控件: 参考开源的mqtt-LabVIEW https://github.com…...

基于DOTween插件实现金币飞行到指定位置功能

文章目录 前言一、DOTween是什么?二、使用步骤1.导入DOTween插件在Unity官方插件商店找到DOTween插件导入DOTween插件启用DOTween插件 2.代码逻辑金币飞行代码控制飞行效果代码 3.物体配置1.物体上装配CoinEffect脚本2.在金币预制体上装配FlyControl脚本 三、效果展…...

python-opencv 培训课程作业

python-opencv 培训课程作业 作业一: 第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示 第二步:彩图 -> 灰度图 第三步:反转图像:最大图像灰度值减去原图像,即可得…...

【Go入门】并发

【Go入门】并发 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。 goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,…...

Java虚拟机运行时数据区结构详解

Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时,为了能恢复到正确的执行位置,每条线程…...

华为OD机试 - 转盘寿司(Java JS Python C)

目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码...

【ATTCK】MITRE Caldera-emu插件

CALDERA是一个由python语言编写的红蓝对抗工具(攻击模拟工具)。它是MITRE公司发起的一个研究项目,该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的,能够较真实地APT攻击行为模式。 通过CALDERA工具,安全…...

23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储

文章目录 **软件开发环境及开发工具:****功能介绍:****论文截图:****数据库:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...