时序数据库 TDengine 到 MySQL 数据迁移同步

简述

TDengine 是一款开源、高性能、云原生的时序数据库,专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。在工业自动化的时代,时序数据库在电力、轨道交通、智能制造等领域有着广泛的应用。

MySQL 是全球广泛使用的开源关系型数据库,能够高效处理大量数据和复杂查询需求,并且具有较强的稳定性和可靠性。

本文主要介绍如何通过 CloudCanal 实现 TDengine 到 MySQL 数据迁移同步。

应用场景

  • 数据备份与归档:将 TDengine 的数据迁移到 MySQL 作为备份或归档,确保数据长期保存和恢复,提升数据的安全性和高可用性。
  • 复杂查询:MySQL 支持复杂 SQL 查询和事务处理,适合需要对时序数据进行深度分析或关联查询的场景。
  • 数据集成与共享:企业通常会同时使用多种数据库,将 TDengine 的数据同步到 MySQL,便于将时序数据与其他业务数据进行关联分析。
  • 数据分析:将 TDengine 的数据同步到 MySQL 后,可再通过 CloudCanal 将数据同步到其他分析型数据库或数仓,支持更复杂的数据分析和操作,满足更多业务需求。

技术点

增量数据同步整体流程

CloudCanal 基于 Query Topic 实现 TDengine 到 MySQL 的数据同步,同步流程如下:

  1. 创建 Topic,通过 Topic 订阅 TDengine 数据库的变更事件(无法捕获 DELETE 事件)。
  2. 执行增量数据同步。
  3. 捕获变更事件,记录表级 offset 位点。

表级别多位点

CloudCanal 支持 TDengine 源端表级别多位点,即可以在表级别进行多位点的配置,确保每个表能够消费各自对应的增量同步位点。位点的具体体现为:

[{"db": "us_power","table": "s1","topic": "canalt7g262cm6jy_increment_us_power_s1","offset": 1010,"vgroup": 3,"timestamp": 1715828416114 },{"db": "us_power","table": "s2","topic": "canalt7g262cm6jy_increment_us_power_s2","offset": 2093,"vgroup": 3,"timestamp": 1715828311123},...
]

纳秒级时间戳同步

TDengine 最高支持纳秒级 Timestamp 类型,而 MySQL 最高支持微秒级 Timestamp 类型。CloudCanal 支持纳秒级时间戳同步,将 TDengine 纳秒级时间戳转换为 MySQL BIGINT 类型数据。

操作示例

步骤 1: 安装 CloudCanal

请参考 全新安装(Docker Linux/MacOS),下载安装 CloudCanal 私有部署版本。

步骤 2: 添加数据源

登录 CloudCanal 控制台,点击 数据源管理 > 新增数据源
在这里插入图片描述

步骤 3: 创建任务

  1. 点击 同步任务 > 创建任务

  2. 配置源和目标数据源。

  3. 选择 数据同步 并勾选 全量初始化

    先取消勾选 自动启动任务,后续仍需要修改个别参数。
    在这里插入图片描述

  4. 选择需要同步的表。

  5. 选择表对应的列。

    如果是超级表增量同步,可以点击 操作 > 子表订阅过滤条件,设置子表订阅过滤条件,具体可参考 TDengine Query Topic,默认订阅所有子表。

    如果需要进行纳秒级时间戳同步,需在对端手动创建表,源端 Timestamp 列要映射到对端 BIGINT 类型列。

  6. 点击 确认创建

    任务创建过程将会进行一系列操作,点击 同步设置 > 异步任务,找到任务的创建记录并点击 详情 即可查看。

    TDengine 源端的任务创建会有以下几个步骤:

    • 分配任务执行机器
    • 创建任务状态机
    • 完成任务创建
  7. 进入任务详情页,点击右上角 功能列表 > 修改任务参数,修改以下任务参数:

    • 源端参数 srcTimezone:源端时区,默认 UTC,需要与源端时区保持一致。
    • 源端参数 supportTimestampToEpochNano:是否开启 Timestamp-Number 数值转换,默认 false。
    • 对端参数 dstTimezone:对端时区,需要与对端时区保持一致。
      在这里插入图片描述
  8. 启动任务,CloudCanal 会自动进行任务流转,其中的步骤包括:

    • 全量数据迁移: 已存在的存量数据将会完整迁移到对端。
    • 增量数据同步: 增量数据将会持续地同步到对端数据库,并且保持实时(秒级别延迟)。
      在这里插入图片描述

总结

TDengine 适用于高吞吐的时序数据存储与查询,而 MySQL 适用于事务处理和复杂查询。使用 CloudCanal 进行 TDengine 到 MySQL 数据迁移同步,能够兼顾时序数据的高效存储与业务数据的灵活分析,从而实现时序数据价值的最大化。

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

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

相关文章

基于YOLO11深度学习的舌苔舌象检测识别与诊断系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

【愚公系列】《高效使用DeepSeek》003-DeepSeek文档处理和其他顶级 AI模型的区别

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

正新鸡排:在变革浪潮中领航,打造连锁餐饮新生态

在当下风云变幻的餐饮市场中,连锁品牌犹如逆水行舟,不进则退。作为国内坐拥万店的知名连锁餐饮品牌,正新鸡排2023年卖出了7.2亿片鸡排,集团营收同比增长28%。在《2024年中国鸡排连锁品牌10强榜单》中,正新鸡排以高达95…

MyBatis 的一级、二级缓存

文章目录 1️⃣ 一级缓存(Local Cache)📌 定义🚀 示例代码 2️⃣ 二级缓存(Global Cache)📌 定义🚀 使用方式 3️⃣ 一级缓存 vs. 二级缓存 📊4️⃣ 数据共享问题&#x…

软件性能测试与功能测试联系和区别

随着软件开发技术的迅猛发展,软件性能测试和功能测试成为了确保软件质量的两个重要环节。那么只有一字之差的性能测试和功能测试分别是什么?又有哪些联系和区别呢? 一、软件性能测试是什么?   软件性能测试是为了评估软件系统在特定条件下的表现,包…

Vue 框架使用难点与易错点剖析:避开陷阱,提升开发效率

Vue.js 作为当下最流行的前端框架之一,以其轻量、易用和灵活的特性深受开发者喜爱。然而,即使是经验丰富的开发者,在使用 Vue 的过程中也难免会遇到一些难点和易错点。本文将深入分析 Vue 开发中常见的“坑”,并提供解决方案和代码…

基于大模型的上睑下垂手术全流程预测与方案优化研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 研究方法与创新点 二、上睑下垂相关理论基础 2.1 上睑下垂的定义与分类 2.2 发病机制与影响 2.3 传统治疗方法概述 三、大模型技术原理与应用 3.1 大模型概述 3.2 在医疗领域的应用现状 3.3 用于上睑下垂预测的…

Odoo Http鉴权+调用后端接口

最近在调研Odoo18,包括它的前后端原理、源码等。发现官方的开发文档并不十分实用,比如标题这种简单的实用需求,竟然浪费了一点时间,特此记录。 官方文档:External API — Odoo 18.0 documentation 前提:首…

【Go每日一练】实现简单的控制台计算器

👻创作者:丶重明 👻创作时间:2025年3月7日 👻擅长领域:运维 目录 1.😶‍🌫️题目:简单的控制台计算器2.😶‍🌫️代码输出3.😶‍&#…

Linux常见问题与分析

操作系统进行线程切换时进行的动作 1. 保存当前线程的上下文 寄存器状态:保存 CPU 寄存器(如通用寄存器、程序计数器 PC、栈指针 SP 等)到当前线程的 线程控制块(TCB) 中。内核栈信息:如果线程在内核态运…

HTML块级元素和内联元素(简单易懂)

在HTML中,元素可以分为块级元素(Block-level elements)和内联元素(Inline elements)。这两类元素在页面布局和样式应用上有不同的特点和用途。 一、块级元素(Block-level elements) 1. 定义 …

VSTO(C#)Excel开发6:与窗体交互

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

Node.js与VUE安装

目录 Win下载安装 Mac下载安装 Win与Mac配置检查是否安装成功切换淘宝NPM库检查镜像配置是否生效设置 npm 全局环境目录(避免权限问题)WinMac VUE CLI安装安装验证打开vue面板 Vue脚手架npm init vuelatest、npm create vuelatestvue create、vue ui Win…

快速集成1688商品API:10分钟实现跨境选品数据自动化

要快速集成 1688 商品 API 以实现跨境选品数据自动化,可参考以下步骤: 注册并申请 API 权限:注册账号创建应用并申请所需的 API 权限,如商品搜索、筛选、获取详情等相关权限。获取 API Key 和 Secret:在应用管理页面获…

解决 MySQL 迁移到达梦报错 “无效的列名” 的问题

在数据库迁移的过程中,常常会遇到各种各样的问题。本文将聚焦于从源库 MySQL(大小写不敏感)迁移到目标库达梦(大小写敏感)时,出现的创建索引报错 “无效的列名” 这一问题,使用SQLark工具如何避…

工程化与框架系列(31)--前端依赖管理实践

前端依赖管理实践 📦 引言 前端依赖管理是现代Web开发中的重要环节。本文将深入探讨前端依赖管理的最佳实践,包括包管理工具、版本控制、依赖分析和优化等方面,帮助开发者更好地管理项目依赖。 依赖管理概述 前端依赖管理主要包括以下方面…

C/C++都有哪些开源的Web框架?

CppCMS CppCMS是一个采用C语言开发的高性能Web框架,通过模版元编程方式实现了在编译期检查RESTful路由系统,支持传统的MVC模式和多种语言混合开发模式。 CppCMS最厉害的功能是WebSocket,10万连接在内存中长期保存占用的大小不超过600MB&…

数据结构——环形数组

环形数组 start 指向第一个有效元素的索引,end 指向最后一个有效元素的下一个位置索引。 注意: start是闭区间,先左移后赋值,先赋值(null)后右移;end是开区间,先赋值再右移,先左移再赋值(null…

大数据学习(59)-DataX执行机制

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

云原生性能测试全解析:如何构建高效稳定的现代应用?

一、引言 随着云计算技术的快速发展,云原生(Cloud Native)架构成为现代应用开发的主流模式。云原生应用通常采用微服务架构、容器化部署,并利用 Kubernetes(K8s)等编排工具进行管理。然而,云原…